poulpy/poulpy-backend/src/cpu_spqlios/spqlios-arithmetic/spqlios/cplx/README.md
poulpy-backend/src/cpu_spqlios/spqlios-arithmetic/spqlios/cplx/README.mdRaw
1In this folder, we deal with the full complex FFT in `C[X] mod X^M-i`.
2One complex is represented by two consecutive doubles `(real,imag)`
3Note that a real polynomial sum_{j=0}^{N-1} p_j.X^j mod X^N+1
4corresponds to the complex polynomial of half degree `M=N/2`:
5`sum_{j=0}^{M-1} (p_{j} + i.p_{j+M}) X^j mod X^M-i`
6
7For a complex polynomial A(X) sum c_i X^i of degree M-1
8or a real polynomial sum a_i X^i of degree N
9
10coefficient space:
11a_0,a_M,a_1,a_{M+1},...,a_{M-1},a_{2M-1}
12or equivalently
13Re(c_0),Im(c_0),Re(c_1),Im(c_1),...Re(c_{M-1}),Im(c_{M-1})
14
15eval space:
16c(omega_{0}),...,c(omega_{M-1})
17
18where
19omega_j = omega^{1+rev_{2N}(j)}
20and omega = exp(i.pi/N)
21
22rev_{2N}(j) is the number that has the log2(2N) bits of j in reverse order.