| import { RingLwe } from './lib/lattice.js'; |
|
|
| const lwe = new RingLwe(256, 3329, 2.0, true); |
| let p = new Int32Array(256); |
| p[1] = 1; |
| p[2] = 2; |
|
|
| const p_orig = new Int32Array(p); |
|
|
| |
| lwe.ntt(p); |
| |
| lwe.intt(p); |
|
|
| for (let i = 0; i < 256; i++) { |
| let expected = p_orig[i]; |
| let actual = p[i]; |
| if (expected !== actual) { |
| console.log(`FAIL at ${i}: expected ${expected}, got ${actual}`); |
| } |
| } |
| console.log("NTT roundtrip check finished"); |
|
|
| let a = new Int32Array(256); |
| let b = new Int32Array(256); |
| a[1] = 1; |
| b[1] = 1; |
|
|
| |
| lwe.ntt(a); |
| |
| lwe.ntt(b); |
|
|
| |
| let c = lwe.polyMul(a, b); |
| |
| lwe.intt(c); |
|
|
| console.log("x * x = ", c[0], c[1], c[2], c[3]); |
|
|