Files
zeekay b832ba2c39 Initial Torus commit
Forked from upstream concrete (BSD-3-Clause-Clear, © 2024 ZAMA) at HEAD
ecb729bb. Modifications copyright © 2026 Lux Industries Inc.

Rebranding scope:
  - Python module concrete → torus (across frontends/torus-python)
  - Rust module concrete-* → torus-* (across frontends/torus-rust)
  - MLIR dialect concretelang → toruslang (across compilers/torus-compiler)
  - Compiler optimizer concrete-optimizer → torus-optimizer
  - Backend concrete-cpu / concrete-cuda → torus-cpu / torus-cuda
  - Wire protocol concrete-protocol → torus-protocol
  - Parameter-curves concrete-security-curves-* → torus-security-curves-*
  - Public symbols concretelib → toruslib, ConcreteLang → TorusLang
  - URLs github.com/zama-ai/concrete → github.com/luxfhe/torus
  - URLs docs.zama.ai/concrete → docs.luxfhe.com/torus

Legal compliance:
  - LICENSE.txt retains original Copyright © 2024 ZAMA verbatim (§1-§2)
  - LICENSE.txt adds modifications copyright © 2026 Lux Industries Inc.
  - §3 endorsement clause: Torus is marketed exclusively as a Lux product;
    no Zama name used in README, docs, or marketing
  - NOTICE file provides factual attribution per legal best practice
    (not endorsement; required by upstream BSD-3-Clause-Clear)

README + NOTICE rewritten from scratch with Lux brand:
  - Quick-start in Python (torus.fhe)
  - Architecture diagram showing the gen-1 vtbl integration path
    (luxcpp/gpu → lux-private/gpu-kernels for CUDA/Metal/WebGPU)
  - Scheme coverage table: TFHE (luxfi/fhe), CKKS/BGV/BFV (luxfi/lattice)
  - Lux FHE family table: Torus / TorusVM / TorusEVM / TorusML / TorusNet

Known limitations (phase-2A scope):
  - PyPI package torus-fhe not yet published; the torus Python module
    is renamed structurally but pip-installable distribution is a
    follow-up (Phase 2A.1)
  - MLIR dialect rename is text-level; the compiler-internal LLVM
    rebuild (concrete-compiler-internal-llvm-project submodule) is
    structural and works; tablegen files renamed concrete→torus but the
    generated .inc files in the source tree will regenerate at build
    time
  - backends/torus-cuda/implementation/ is an upstream submodule
    pointer to the tfhe-rs source (not fetched in the staging clone);
    the CUDA backend body is delivered out-of-tree
  - ~100 test-fixture variable names like concrete_encoded_sample
    retain "concrete" as a math term (vs symbolic); these are inside
    tests/, not the public API; cleanup is a follow-up commit
  - 295 Python `from concrete import ...` residuals in luxfhe/ml-sdk
    consumer remain; that repo's import update is Phase 2B

This commit is the seed for the luxfhe/torus repo. Push as the first
commit to a fresh GitHub repo; do not re-import upstream Zama git
history.
2026-05-29 14:16:47 -07:00

249 lines
14 KiB
Plaintext

security level: 80
target p_error: 6.3e-5
per precision and log norm2:
- 1: # bits
-ln2: k, N, n, br_l,br_b, ks_l,ks_b, cost, p_error
- 0 : 1, 10, 512, 1, 19, 1, 9, 29, 1.4e-15
- 1 : 1, 10, 512, 1, 19, 1, 9, 29, 1.5e-15
- 2 : 1, 10, 512, 1, 19, 1, 9, 29, 1.6e-15
- 3 : 1, 10, 512, 1, 19, 1, 9, 29, 2.5e-15
- 4 : 1, 10, 512, 1, 19, 1, 9, 29, 1.2e-14
- 5 : 1, 10, 512, 1, 19, 1, 9, 29, 1.9e-12
- 6 : 1, 10, 512, 1, 19, 1, 9, 29, 5.0e-8
- 7 : 1, 10, 512, 2, 13, 1, 9, 42, 1.5e-15
- 8 : 1, 10, 512, 2, 13, 1, 9, 42, 1.6e-15
- 9 : 1, 10, 512, 2, 13, 1, 9, 42, 2.5e-15
- 10: 1, 10, 512, 2, 13, 1, 9, 42, 1.2e-14
- 11: 1, 10, 512, 2, 13, 1, 9, 42, 1.7e-12
- 12: 1, 10, 512, 2, 13, 1, 9, 42, 4.3e-8
- 13: 1, 10, 512, 3, 10, 1, 9, 55, 2.2e-14
- 14: 1, 10, 512, 3, 10, 1, 9, 55, 9.0e-12
- 15: 1, 10, 512, 3, 10, 1, 9, 55, 4.0e-7
- 16: 1, 10, 512, 4, 8, 1, 9, 68, 6.1e-11
- 17: 1, 10, 512, 4, 8, 1, 9, 68, 3.4e-6
- 18: 1, 10, 512, 5, 7, 1, 9, 81, 1.5e-5
- 19: 2, 10, 512, 3, 12, 1, 9, 89, 4.3e-8
- 20: 2, 10, 512, 3, 12, 1, 9, 89, 6.1e-7
- 21: 2, 10, 512, 3, 12, 2, 6, 91, 2.3e-7
- 22: 2, 10, 512, 4, 9, 1, 9, 110, 4.4e-7
- 23: 2, 10, 515, 4, 9, 1, 9, 111, 6.2e-5
- 24: 2, 10, 512, 5, 8, 1, 9, 131, 3.1e-6
- 25: 2, 10, 512, 5, 8, 2, 6, 133, 5.0e-5
- 26: 2, 10, 512, 7, 6, 1, 9, 173, 1.1e-5
- 27: 2, 10, 512, 8, 5, 2, 6, 196, 2.6e-6
- 28: 2, 10, 515, 11, 4, 1, 9, 258, 6.1e-5
- 29: 2, 10, 512, 14, 3, 3, 5, 324, 6.2e-5
- 30: 2, 10, 512, 43, 1, 2, 6, 931, 1.5e-5
# no solution starting from log norm2 = 31
- 2: # bits
-ln2: k, N, n, br_l,br_b, ks_l,ks_b, cost, p_error
- 0 : 1, 10, 513, 1, 19, 1, 9, 29, 5.7e-5
- 1 : 1, 10, 513, 1, 19, 1, 9, 29, 5.7e-5
- 2 : 1, 10, 513, 1, 19, 1, 9, 29, 5.9e-5
- 3 : 1, 10, 514, 1, 19, 1, 9, 29, 5.7e-5
- 4 : 1, 10, 517, 1, 19, 1, 9, 29, 6.3e-5
- 5 : 1, 10, 529, 1, 19, 1, 10, 29, 5.0e-5
- 6 : 1, 10, 513, 2, 13, 1, 9, 42, 5.7e-5
- 7 : 1, 10, 513, 2, 13, 1, 9, 42, 5.7e-5
- 8 : 1, 10, 513, 2, 13, 1, 9, 42, 5.9e-5
- 9 : 1, 10, 514, 2, 13, 1, 9, 42, 5.7e-5
- 10: 1, 10, 517, 2, 13, 1, 9, 42, 6.2e-5
- 11: 1, 10, 512, 2, 13, 2, 6, 43, 2.0e-12
- 12: 1, 10, 514, 3, 10, 1, 9, 55, 6.0e-5
- 13: 1, 10, 519, 3, 10, 1, 9, 55, 6.1e-5
- 14: 1, 10, 512, 3, 10, 2, 6, 56, 4.7e-10
- 15: 1, 10, 512, 4, 8, 2, 6, 69, 5.3e-23
- 16: 1, 10, 512, 4, 8, 2, 6, 69, 4.2e-8
- 17: 1, 10, 512, 5, 7, 2, 6, 82, 6.1e-7
- 18: 2, 10, 512, 3, 12, 2, 6, 91, 2.2e-37
- 19: 2, 10, 512, 3, 12, 2, 6, 91, 1.6e-18
- 20: 2, 10, 512, 3, 12, 2, 6, 91, 6.3e-7
- 21: 2, 10, 512, 4, 9, 2, 6, 112, 6.7e-20
- 22: 2, 10, 512, 4, 9, 2, 6, 112, 1.6e-7
- 23: 2, 10, 512, 5, 8, 2, 6, 133, 3.1e-13
- 24: 2, 10, 512, 5, 8, 3, 5, 135, 5.7e-5
- 25: 2, 10, 512, 7, 6, 2, 6, 175, 1.9e-10
- 26: 2, 10, 512, 8, 5, 2, 6, 196, 5.2e-6
- 27: 2, 10, 512, 11, 4, 2, 6, 259, 1.6e-7
- 28: 2, 10, 512, 15, 3, 2, 6, 343, 5.1e-6
- 29: 2, 10, 512, 43, 1, 2, 6, 931, 2.5e-5
# no solution starting from log norm2 = 30
- 3: # bits
-ln2: k, N, n, br_l,br_b, ks_l,ks_b, cost, p_error
- 0 : 1, 10, 512, 1, 19, 2, 6, 30, 9.5e-23
- 1 : 1, 10, 512, 1, 19, 2, 6, 30, 2.5e-22
- 2 : 1, 10, 512, 1, 19, 2, 6, 30, 8.4e-21
- 3 : 1, 10, 512, 1, 19, 2, 6, 30, 2.0e-16
- 4 : 1, 10, 512, 1, 19, 2, 6, 30, 2.7e-9
- 5 : 1, 10, 512, 2, 13, 2, 6, 43, 7.4e-23
- 6 : 1, 10, 512, 2, 13, 2, 6, 43, 9.5e-23
- 7 : 1, 10, 512, 2, 13, 2, 6, 43, 2.5e-22
- 8 : 1, 10, 512, 2, 13, 2, 6, 43, 7.8e-21
- 9 : 1, 10, 512, 2, 13, 2, 6, 43, 1.7e-16
- 10: 1, 10, 512, 2, 13, 2, 6, 43, 2.2e-9
- 11: 1, 10, 512, 3, 10, 2, 6, 56, 2.9e-20
- 12: 1, 10, 512, 3, 10, 2, 6, 56, 3.3e-15
- 13: 1, 10, 512, 3, 10, 2, 6, 56, 4.7e-8
- 14: 1, 10, 512, 4, 8, 2, 6, 69, 8.9e-14
- 15: 1, 10, 512, 4, 8, 2, 6, 69, 7.9e-7
- 16: 1, 10, 512, 5, 7, 2, 6, 82, 4.9e-6
- 17: 2, 10, 512, 3, 12, 2, 6, 91, 5.3e-14
- 18: 2, 10, 512, 3, 12, 2, 6, 91, 1.7e-10
- 19: 2, 10, 512, 3, 12, 2, 6, 91, 1.1e-5
- 20: 2, 10, 512, 4, 9, 2, 6, 112, 7.1e-11
- 21: 2, 10, 512, 4, 9, 2, 6, 112, 5.0e-6
- 22: 2, 10, 512, 5, 8, 2, 6, 133, 9.5e-9
- 23: 2, 10, 512, 6, 7, 2, 6, 154, 3.8e-8
- 24: 2, 10, 512, 7, 6, 2, 6, 175, 1.5e-7
- 25: 2, 10, 512, 8, 5, 2, 6, 196, 4.2e-5
- 26: 2, 10, 512, 11, 4, 2, 6, 259, 4.9e-6
- 27: 2, 10, 512, 15, 3, 2, 6, 343, 4.2e-5
- 28: 2, 10, 512, 43, 1, 3, 5, 933, 4.1e-5
# no solution starting from log norm2 = 29
- 4: # bits
-ln2: k, N, n, br_l,br_b, ks_l,ks_b, cost, p_error
- 0 : 1, 10, 512, 1, 19, 2, 6, 30, 9.2e-7
- 1 : 1, 10, 512, 1, 19, 2, 6, 30, 1.2e-6
- 2 : 1, 10, 512, 1, 19, 2, 6, 30, 2.9e-6
- 3 : 1, 10, 512, 1, 19, 2, 6, 30, 3.9e-5
- 4 : 1, 10, 512, 2, 13, 2, 6, 43, 8.5e-7
- 5 : 1, 10, 512, 2, 13, 2, 6, 43, 8.6e-7
- 6 : 1, 10, 512, 2, 13, 2, 6, 43, 9.2e-7
- 7 : 1, 10, 512, 2, 13, 2, 6, 43, 1.2e-6
- 8 : 1, 10, 512, 2, 13, 2, 6, 43, 2.9e-6
- 9 : 1, 10, 512, 2, 13, 2, 6, 43, 3.8e-5
- 10: 1, 10, 512, 3, 10, 2, 6, 56, 1.3e-6
- 11: 1, 10, 512, 3, 10, 2, 6, 56, 4.0e-6
- 12: 1, 10, 517, 3, 10, 2, 6, 56, 6.3e-5
- 13: 1, 10, 512, 4, 8, 2, 6, 69, 6.1e-6
- 14: 1, 10, 512, 4, 8, 3, 5, 70, 2.2e-5
- 15: 1, 10, 512, 5, 7, 3, 5, 83, 6.3e-5
- 16: 2, 10, 514, 3, 12, 2, 6, 91, 5.8e-5
- 17: 2, 10, 523, 3, 12, 2, 6, 93, 6.1e-5
- 18: 2, 10, 512, 3, 12, 4, 4, 95, 4.4e-5
- 19: 2, 10, 521, 4, 9, 2, 6, 114, 6.2e-5
- 20: 2, 10, 512, 4, 9, 3, 5, 114, 5.3e-5
- 21: 2, 10, 512, 5, 8, 3, 5, 135, 1.7e-6
- 22: 2, 10, 512, 6, 7, 3, 5, 156, 3.4e-6
- 23: 2, 10, 512, 7, 6, 3, 5, 177, 7.0e-6
- 24: 2, 10, 512, 9, 5, 3, 5, 219, 2.0e-5
- 25: 2, 10, 512, 11, 4, 3, 5, 261, 5.3e-5
- 26: 1, 11, 512, 15, 3, 5, 3, 462, 5.3e-5
- 27: 2, 10, 512, 44, 1, 4, 4, 956, 5.1e-5
# no solution starting from log norm2 = 28
- 5: # bits
-ln2: k, N, n, br_l,br_b, ks_l,ks_b, cost, p_error
- 0 : 1, 11, 512, 1, 23, 3, 5, 66, 1.1e-5
- 1 : 1, 11, 512, 1, 23, 3, 5, 66, 1.2e-5
- 2 : 1, 11, 512, 1, 23, 3, 5, 66, 1.2e-5
- 3 : 1, 11, 512, 1, 23, 3, 5, 66, 1.3e-5
- 4 : 1, 11, 512, 1, 23, 3, 5, 66, 1.7e-5
- 5 : 1, 11, 512, 1, 23, 3, 5, 66, 5.0e-5
- 6 : 1, 11, 528, 1, 23, 4, 4, 69, 6.3e-5
- 7 : 1, 11, 512, 2, 15, 3, 5, 94, 1.1e-5
- 8 : 1, 11, 512, 2, 15, 3, 5, 94, 1.2e-5
- 9 : 1, 11, 512, 2, 15, 3, 5, 94, 1.2e-5
- 10: 1, 11, 512, 2, 15, 3, 5, 94, 1.2e-5
- 11: 1, 11, 512, 2, 15, 3, 5, 94, 1.6e-5
- 12: 1, 11, 512, 2, 15, 3, 5, 94, 3.8e-5
- 13: 1, 11, 512, 2, 15, 4, 4, 96, 4.0e-5
- 14: 1, 11, 512, 3, 12, 3, 5, 122, 1.3e-5
- 15: 1, 11, 512, 3, 12, 3, 5, 122, 1.9e-5
- 16: 1, 11, 513, 3, 12, 3, 5, 122, 5.6e-5
- 17: 1, 11, 512, 4, 9, 3, 5, 150, 1.7e-5
- 18: 1, 11, 512, 4, 9, 3, 5, 150, 5.0e-5
- 19: 1, 11, 512, 4, 9, 5, 3, 154, 5.0e-5
- 20: 1, 11, 518, 5, 8, 3, 5, 180, 6.3e-5
- 21: 1, 11, 512, 6, 7, 4, 4, 208, 1.4e-5
- 22: 1, 11, 512, 7, 6, 4, 4, 236, 2.8e-5
- 23: 1, 11, 512, 9, 5, 5, 3, 294, 3.4e-5
- 24: 1, 11, 512, 11, 4, 16, 1, 372, 6.3e-5
- 25: 1, 11, 512, 21, 2, 9, 2, 638, 6.3e-5
# no solution starting from log norm2 = 26
- 6: # bits
-ln2: k, N, n, br_l,br_b, ks_l,ks_b, cost, p_error
- 0 : 1, 12, 526, 1, 23, 4, 4, 147, 4.9e-5
- 1 : 1, 12, 526, 1, 23, 4, 4, 147, 5.1e-5
- 2 : 1, 12, 526, 1, 23, 4, 4, 147, 6.1e-5
- 3 : 1, 12, 529, 1, 23, 4, 4, 148, 5.9e-5
- 4 : 1, 12, 553, 1, 23, 4, 4, 154, 6.1e-5
- 5 : 1, 12, 512, 2, 15, 5, 3, 208, 2.7e-5
- 6 : 1, 12, 512, 2, 15, 5, 3, 208, 2.7e-5
- 7 : 1, 12, 512, 2, 15, 5, 3, 208, 2.8e-5
- 8 : 1, 12, 512, 2, 15, 5, 3, 208, 2.9e-5
- 9 : 1, 12, 512, 2, 15, 5, 3, 208, 3.3e-5
- 10: 1, 12, 512, 2, 15, 5, 3, 208, 5.5e-5
- 11: 1, 12, 527, 2, 15, 5, 3, 213, 6.0e-5
- 12: 1, 12, 512, 3, 12, 5, 3, 268, 3.1e-5
- 13: 1, 12, 512, 3, 12, 5, 3, 268, 4.4e-5
- 14: 1, 12, 518, 3, 12, 5, 3, 271, 6.3e-5
- 15: 1, 12, 512, 4, 9, 5, 3, 328, 3.6e-5
- 16: 1, 12, 513, 4, 9, 5, 3, 328, 6.1e-5
- 17: 1, 12, 512, 4, 9, 8, 2, 340, 5.6e-5
- 18: 1, 12, 520, 5, 8, 6, 3, 397, 6.0e-5
- 19: 1, 12, 512, 6, 7, 8, 2, 460, 4.1e-5
- 20: 1, 12, 515, 7, 6, 8, 2, 523, 6.1e-5
- 21: 1, 12, 512, 10, 4, 8, 2, 700, 2.1e-5
- 22: 1, 12, 512, 14, 3, 8, 2, 940, 1.1e-5
- 23: 1, 12, 519, 21, 2, 9, 2, 1382, 6.2e-5
# no solution starting from log norm2 = 24
- 7: # bits
-ln2: k, N, n, br_l,br_b, ks_l,ks_b, cost, p_error
- 0 : 1, 13, 578, 1, 23, 4, 4, 339, 5.8e-5
- 1 : 1, 13, 549, 1, 23, 6, 3, 340, 5.1e-5
- 2 : 1, 13, 567, 1, 23, 6, 3, 351, 6.1e-5
- 3 : 1, 13, 545, 2, 15, 6, 3, 474, 6.0e-5
- 4 : 1, 13, 545, 2, 15, 6, 3, 474, 6.0e-5
- 5 : 1, 13, 545, 2, 15, 6, 3, 474, 6.0e-5
- 6 : 1, 13, 545, 2, 15, 6, 3, 474, 6.2e-5
- 7 : 1, 13, 546, 2, 15, 6, 3, 475, 5.1e-5
- 8 : 1, 13, 547, 2, 15, 6, 3, 476, 5.9e-5
- 9 : 1, 13, 555, 2, 15, 6, 3, 483, 5.7e-5
- 10: 1, 13, 546, 3, 11, 6, 3, 612, 4.9e-5
- 11: 1, 13, 546, 3, 11, 6, 3, 612, 6.2e-5
- 12: 1, 13, 550, 3, 11, 6, 3, 616, 6.1e-5
- 13: 1, 13, 546, 4, 9, 6, 3, 748, 5.6e-5
- 14: 1, 13, 549, 4, 9, 6, 3, 752, 5.1e-5
- 15: 1, 13, 567, 4, 9, 6, 3, 776, 6.1e-5
- 16: 1, 13, 548, 5, 8, 9, 2, 914, 6.0e-5
- 17: 1, 13, 558, 6, 7, 9, 2, 1069, 6.2e-5
- 18: 1, 13, 535, 8, 5, 9, 2, 1294, 5.8e-5
- 19: 1, 13, 540, 10, 4, 9, 2, 1576, 5.9e-5
- 20: 1, 13, 541, 14, 3, 9, 2, 2120, 5.7e-5
- 21: 1, 13, 562, 21, 2, 10, 2, 3193, 6.3e-5
# no solution starting from log norm2 = 22
- 8: # bits
-ln2: k, N, n, br_l,br_b, ks_l,ks_b, cost, p_error
- 0 : 1, 14, 618, 1, 22, 5, 4, 778, 5.6e-5
- 1 : 1, 14, 588, 2, 15, 6, 3, 1074, 6.0e-5
- 2 : 1, 14, 588, 2, 15, 6, 3, 1074, 6.0e-5
- 3 : 1, 14, 588, 2, 15, 6, 3, 1074, 6.1e-5
- 4 : 1, 14, 588, 2, 15, 6, 3, 1074, 6.2e-5
- 5 : 1, 14, 589, 2, 15, 6, 3, 1076, 5.6e-5
- 6 : 1, 14, 591, 2, 15, 6, 3, 1080, 5.7e-5
- 7 : 1, 14, 615, 2, 15, 5, 4, 1102, 5.5e-5
- 8 : 1, 14, 589, 3, 11, 6, 3, 1389, 5.2e-5
- 9 : 1, 14, 590, 3, 11, 6, 3, 1391, 5.3e-5
- 10: 1, 14, 594, 3, 11, 6, 3, 1400, 6.0e-5
- 11: 1, 14, 622, 3, 11, 7, 3, 1483, 6.2e-5
- 12: 1, 14, 593, 4, 9, 6, 3, 1713, 6.3e-5
- 13: 1, 14, 611, 4, 9, 7, 3, 1782, 6.3e-5
- 14: 1, 14, 601, 5, 8, 10, 2, 2130, 6.3e-5
- 15: 1, 14, 574, 7, 6, 10, 2, 2647, 6.0e-5
- 16: 1, 14, 576, 8, 5, 10, 2, 2962, 5.5e-5
- 17: 1, 14, 580, 10, 4, 10, 2, 3598, 5.9e-5
- 18: 1, 14, 584, 14, 3, 10, 2, 4864, 6.0e-5
- 19: 1, 14, 612, 22, 2, 21, 1, 7906, 6.3e-5
# no solution starting from log norm2 = 20
- 9: # bits
# no solution at all