f95f0389cf
[composite-ntt] reconstruct u32 works
2025-08-24 17:04:31 +00:00
4d4e2dab76
wip, works for values < (1<<62)
2025-08-22 20:39:35 +00:00
4dca2c6ff5
ntt: get rid of Zq and use u64 instead (>2x speed improvement)
2025-08-18 14:14:19 +00:00
fb1fb6b4e9
Rm const generics ( #2 )
...
* arith: get rid of constant generics. Reason:
using constant generics was great for allocating the arrays in the
stack, which is faster, but when started to use bigger parameter values,
in some cases it was overflowing the stack. This commit removes all the
constant generics in all of the `arith` crate, which in some cases slows
a bit the performance, but allows for bigger parameter values (on the
ones that affect lengths, like N and K).
* bfv: get rid of constant generics (reason in previous commit)
* ckks: get rid of constant generics (reason in two commits ago)
* group ring params under a single struct
* gfhe: get rid of constant generics
* tfhe: get rid of constant generics
* polish & clean a bit
* add methods for encoding constants for ct-pt-multiplication
2025-08-14 18:32:43 +02:00
13abadf6e1
tfhe: add bootstrapping impl
...
add initial version of bootstrapping implementation
2025-08-03 21:24:17 +00:00
2c20a2ed0e
tfhe: add blind_rotation & lookup table computation
2025-08-03 19:12:47 +00:00
7bfcf6f7c1
add TGGSW & TGLev impl
2025-08-03 07:42:29 +00:00
8e2e522f8a
arith/torus: add left_rotate & mod_switch
2025-08-02 21:42:36 +00:00
0617b8b9ff
tfhe: add TGLWE.sample_extraction
2025-08-02 20:27:36 +00:00
752525a1c6
add TGLWE logic (pending to abstract it with TLWE to reuse part of the impl)
2025-07-28 12:14:44 +00:00
55c892cc47
add TLWE key_switching
2025-07-28 12:02:17 +00:00
b1b201043f
tfhe: add CMux gate
2025-07-28 11:58:41 +00:00
e4717da5b0
tfhe: add external prod TGSW * TLWE, also TLev * Vec<T64>
2025-07-27 20:58:32 +00:00
f053e9a904
add TGSW encryption & decryption
2025-07-27 19:41:15 +00:00
4f89caef1e
fit T64 into the 'Ring' trait, this is to use it in tfhe instead of using Tn<1> which is more tedious
2025-07-27 19:22:41 +00:00
81306edf05
fusion TFHE to use GFHE underthehood
2025-07-24 14:32:44 +00:00
87da85a035
adapt gfhe to work with Ring trait, so that it can work with Rq & Tn (for TFHE)
2025-07-24 16:40:57 +02:00
4790fdbb3b
tfhe: ciphertext-plaintext multiplication
2025-07-22 15:42:24 +00:00
f0745da902
add TLWE ciphertexts addition, substraction, plaintext(constant)-addition
2025-07-22 15:31:03 +00:00
fd5c4124ea
TLev encryption & decryption
2025-07-22 15:13:35 +00:00
0ca73ac505
(TFHE): add TLWE encryption & decryption
2025-07-22 14:59:56 +00:00
d60eb1dff1
add discretized torus & 𝕋_<N,q>[X]; organize a bit arith crate
2025-07-22 06:22:06 +00:00
188bc7fa7f
implement GLWE key switching
2025-07-16 21:02:07 +02:00
1e2ea824fd
implement GLev encryption & decryption
2025-07-16 18:57:32 +02:00
4a082b9187
add modulus switching to GLWE ciphertexts (and Zq,Rq)
2025-07-16 18:15:51 +02:00
c73ff20931
add GLWE ciphertext-plaintext mult
2025-07-09 18:10:43 +02:00
92b6f50ccc
add GLWE ciphertext-ciphertext addition, and ciphertext-plaintext addition
2025-07-09 17:52:59 +02:00
2998f1761c
generalized-fhe: add GLWE encryption & decryption
2025-07-09 17:17:19 +02:00
17b1e9ed43
add Ring trait, adapt R & Rq to it; add TR (tuple_ring)
2025-07-09 16:44:39 +02:00
84c54e8edd
ckks addition & substraction of ciphertexts
2025-07-05 16:58:41 +02:00
6090116a8b
add ckks encrypt & decrypt
2025-07-05 16:25:46 +02:00
a8117140fc
implement CKKS encoder & decoder
2025-07-04 19:48:17 +02:00
267422a3b5
add arith::{complex, matrix} primitives
2025-07-04 19:44:48 +02:00
b968310ce1
polish, tensor & mul with relinearization works for some parameters choice
2025-06-22 23:04:28 +02:00
19457c98dd
mv arithmetic arith
2025-06-22 19:15:14 +02:00
7740a3ef3e
work on tensor, fix mul by constant(plaintext)
2025-06-22 18:42:50 +02:00
d2fc32ac0c
add wip version of tensor & relinearization
2025-06-22 15:51:20 +02:00
f3a368ab6a
add ciphertext-by-const (plaintext) addition & mult
2025-06-22 13:24:35 +02:00
9a7fcb08d0
add BFV newkey, encrypt, decrypt, and homomorphic addition impl
2025-06-21 22:13:11 +02:00
2a82a98285
add NTT implementation, and use it for the negacyclic poly ring multiplication, more details on the NTT can be found at https://github.com/arnaucube/math/blob/master/notes_ntt.pdf .
2025-06-20 23:18:30 +02:00
182fd518fe
add polynomial ring (Rq) impl
2025-06-20 23:16:15 +02:00
69a7a81537
add Zq arithmetic impl
2025-06-20 23:14:41 +02:00
8db7631f95
init repo
2025-06-20 23:14:25 +02:00