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); // @ts-ignore lwe.ntt(p); // @ts-ignore 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; // x b[1] = 1; // x // @ts-ignore lwe.ntt(a); // @ts-ignore lwe.ntt(b); // @ts-ignore let c = lwe.polyMul(a, b); // @ts-ignore lwe.intt(c); console.log("x * x = ", c[0], c[1], c[2], c[3]);