INNER CODE UNIT · Python
mulPre
herumi/mcl · misc/gen.py:3
def mulPre(N):
print('void mulPre(uint64_t *z, const uint32_t *x, const uint32_t *y)')
print('{')
print(' uint64_t t, L = 0, H = 0;')
for i in range(N*2-1):
for j in range(N+1):
if j < N and 0 <= i-j < N:
print(f' t = x[{j}] *% y[{i-j}];')
print(f' L = L + (t & 0xffffffff);')
print(f' H = H + (t >> 32);')
print(f' z[{i}] = L;')
print(f' L := H; H := 0;')
print(f' z[{N*2-1}] = L;')
print('}')
# return x*x
def sqrPre(N):
print(f'inline void sqrPre(uint32_t y[{N*2}], const uint32_t x[{N}])')