CKKS Encoding
-
ベクトルを多項式表現に変換する方法
-
整数係数でないと準同型暗号に用いることが出来ない.
- 複素ではなく, 整数係数多項式 から複素数にマップする
- 整数係数なので共役とっても同じ
- ので
- 複素ではなく, 整数係数多項式 から複素数にマップする
-
-
実装
z = [3.0 + 4.0im, 2.0 - 1.0im]
# pi(z)
zz = [3.0 + 4.0im, 2.0 - 1.0im, 2.0 + 1.0im, 3.0 - 4.0im]
Δ = 64
scaled_πz = [192.0 + 256.0im, 128.0 - 64.0im, 128.0 + 64.0im, 192.0 - 256.0im]
β =
4×4 Matrix{ComplexF64}:
1.0+0.0im 0.707+0.707im 0.0+1.0im -0.707+0.707im
1.0+0.0im -0.707+0.707im -0.0-1.0im 0.707+0.707im
1.0+0.0im -0.707-0.707im 0.0+1.0im 0.707-0.707im
1.0+0.0im 0.707-0.707im -0.0-1.0im -0.707-0.707im
coord = [160.0, 90.0, 160.0, 45.0]
b = [191.81 + 255.45im, 128.18 - 64.54im, 128.18 + 64.54im, 191.81 - 255.45im]
p.coeffs = [159.9 + 7.1e-15im, 90.0 - 7.10e-15im, 160.0 + 7.9e-15im, 45.0 + 1.0e-14im]
rounded_coeffs = [160, 90, 160, 45]
p = 160.0 + 90.0 x^1 + 160.0 x^2 + 45.0 x^3- todo なんか本家実装と違う?