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: 96
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, 16, 2, 5, 30, 3.2e-26
- 1 : 1, 10, 512, 1, 16, 2, 5, 30, 1.3e-22
- 2 : 1, 10, 512, 1, 16, 2, 5, 30, 8.2e-15
- 3 : 1, 10, 512, 1, 16, 2, 5, 30, 8.3e-7
- 4 : 1, 10, 512, 2, 11, 2, 5, 43, 3.7e-27
- 5 : 1, 10, 512, 2, 11, 2, 5, 43, 1.3e-25
- 6 : 1, 10, 512, 2, 11, 2, 5, 43, 6.3e-21
- 7 : 1, 10, 512, 2, 11, 2, 5, 43, 2.0e-12
- 8 : 1, 10, 512, 2, 11, 2, 5, 43, 2.2e-5
- 9 : 2, 10, 512, 1, 23, 2, 5, 49, 1.8e-10
- 10: 2, 10, 512, 1, 23, 2, 5, 49, 6.3e-6
- 11: 1, 10, 512, 4, 6, 2, 5, 69, 1.6e-10
- 12: 2, 10, 512, 2, 16, 2, 5, 70, 6.9e-15
- 13: 2, 10, 512, 2, 16, 2, 5, 70, 7.9e-15
- 14: 2, 10, 512, 2, 16, 2, 5, 70, 1.3e-14
- 15: 2, 10, 512, 2, 16, 2, 5, 70, 9.3e-14
- 16: 2, 10, 512, 2, 16, 2, 5, 70, 3.1e-11
- 17: 2, 10, 512, 2, 16, 2, 5, 70, 8.4e-7
- 18: 2, 10, 512, 3, 12, 2, 5, 91, 1.9e-14
- 19: 2, 10, 512, 3, 12, 2, 5, 91, 2.8e-13
- 20: 2, 10, 512, 3, 12, 2, 5, 91, 4.1e-10
- 21: 2, 10, 512, 3, 12, 2, 5, 91, 1.4e-5
- 22: 2, 10, 512, 4, 9, 2, 5, 112, 1.8e-10
- 23: 2, 10, 512, 4, 9, 2, 5, 112, 6.3e-6
- 24: 2, 10, 512, 5, 8, 2, 5, 133, 1.7e-8
- 25: 2, 10, 512, 5, 8, 4, 3, 137, 5.9e-5
- 26: 2, 10, 512, 7, 6, 2, 5, 175, 2.2e-7
- 27: 2, 10, 512, 8, 5, 2, 5, 196, 5.0e-5
- 28: 2, 10, 512, 11, 4, 2, 5, 259, 6.3e-6
- 29: 2, 10, 512, 15, 3, 2, 5, 343, 5.0e-5
- 30: 2, 10, 512, 43, 1, 3, 4, 933, 2.9e-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, 512, 1, 16, 2, 5, 30, 1.2e-7
- 1 : 1, 10, 512, 1, 16, 2, 5, 30, 1.0e-6
- 2 : 1, 10, 517, 1, 16, 2, 5, 30, 6.0e-5
- 3 : 1, 10, 512, 2, 11, 2, 5, 43, 5.3e-8
- 4 : 1, 10, 512, 2, 11, 2, 5, 43, 6.8e-8
- 5 : 1, 10, 512, 2, 11, 2, 5, 43, 1.7e-7
- 6 : 1, 10, 512, 2, 11, 2, 5, 43, 2.7e-6
- 7 : 1, 10, 512, 2, 11, 3, 4, 44, 3.0e-5
- 8 : 2, 10, 519, 1, 23, 2, 5, 50, 5.8e-5
- 9 : 2, 10, 512, 1, 23, 3, 4, 51, 1.1e-5
- 10: 1, 10, 512, 4, 6, 2, 5, 69, 7.1e-6
- 11: 2, 10, 514, 2, 16, 2, 5, 70, 5.9e-5
- 12: 2, 10, 514, 2, 16, 2, 5, 70, 5.9e-5
- 13: 2, 10, 514, 2, 16, 2, 5, 70, 6.2e-5
- 14: 2, 10, 515, 2, 16, 2, 5, 70, 5.6e-5
- 15: 2, 10, 518, 2, 16, 2, 5, 71, 5.4e-5
- 16: 2, 10, 512, 2, 16, 3, 4, 72, 1.8e-6
- 17: 2, 10, 515, 3, 12, 2, 5, 92, 4.9e-5
- 18: 2, 10, 515, 3, 12, 2, 5, 92, 6.2e-5
- 19: 2, 10, 520, 3, 12, 2, 5, 92, 5.4e-5
- 20: 2, 10, 512, 3, 12, 3, 4, 93, 2.2e-5
- 21: 2, 10, 519, 4, 9, 2, 5, 113, 5.8e-5
- 22: 2, 10, 512, 4, 9, 3, 4, 114, 1.1e-5
- 23: 2, 10, 512, 5, 8, 3, 4, 135, 6.1e-8
- 24: 2, 10, 512, 6, 7, 3, 4, 156, 1.8e-7
- 25: 2, 10, 512, 7, 6, 3, 4, 177, 5.6e-7
- 26: 2, 10, 514, 8, 5, 3, 4, 199, 6.0e-5
- 27: 2, 10, 512, 11, 4, 3, 4, 261, 1.1e-5
- 28: 2, 10, 514, 15, 3, 3, 4, 346, 6.0e-5
- 29: 2, 10, 512, 43, 1, 4, 3, 935, 4.8e-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, 16, 3, 4, 31, 6.3e-6
- 1 : 1, 10, 522, 1, 16, 3, 4, 31, 5.8e-5
- 2 : 1, 10, 512, 2, 11, 3, 4, 44, 7.9e-7
- 3 : 1, 10, 512, 2, 11, 3, 4, 44, 9.4e-7
- 4 : 1, 10, 512, 2, 11, 3, 4, 44, 1.8e-6
- 5 : 1, 10, 512, 2, 11, 3, 4, 44, 1.3e-5
- 6 : 1, 10, 526, 2, 11, 4, 3, 46, 6.2e-5
- 7 : 2, 10, 521, 1, 23, 3, 4, 52, 5.8e-5
- 8 : 2, 10, 516, 1, 23, 4, 3, 53, 5.9e-5
- 9 : 1, 10, 512, 4, 6, 3, 4, 70, 2.7e-5
- 10: 2, 10, 518, 2, 16, 3, 4, 73, 4.6e-5
- 11: 2, 10, 518, 2, 16, 3, 4, 73, 4.6e-5
- 12: 2, 10, 518, 2, 16, 3, 4, 73, 4.8e-5
- 13: 2, 10, 518, 2, 16, 3, 4, 73, 5.7e-5
- 14: 2, 10, 520, 2, 16, 3, 4, 73, 5.9e-5
- 15: 2, 10, 512, 2, 16, 4, 3, 74, 3.1e-5
- 16: 2, 10, 518, 3, 12, 3, 4, 94, 5.0e-5
- 17: 2, 10, 518, 3, 12, 3, 4, 94, 6.3e-5
- 18: 2, 10, 522, 3, 12, 3, 4, 95, 5.1e-5
- 19: 2, 10, 521, 3, 12, 4, 3, 97, 6.2e-5
- 20: 2, 10, 521, 4, 9, 3, 4, 116, 5.8e-5
- 21: 2, 10, 516, 4, 9, 4, 3, 117, 5.9e-5
- 22: 2, 10, 512, 5, 8, 4, 3, 137, 4.9e-6
- 23: 2, 10, 512, 6, 7, 4, 3, 158, 8.8e-6
- 24: 2, 10, 512, 7, 6, 4, 3, 179, 1.6e-5
- 25: 2, 10, 517, 8, 5, 6, 2, 206, 6.3e-5
- 26: 2, 10, 516, 11, 4, 4, 3, 265, 5.8e-5
- 27: 2, 10, 512, 15, 3, 7, 2, 353, 4.8e-5
- 28: 2, 10, 512, 44, 1, 6, 2, 960, 2.8e-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, 544, 1, 16, 7, 2, 36, 6.3e-5
- 1 : 1, 10, 521, 2, 11, 4, 3, 45, 5.4e-5
- 2 : 1, 10, 521, 2, 11, 4, 3, 45, 5.8e-5
- 3 : 1, 10, 523, 2, 11, 4, 3, 45, 5.6e-5
- 4 : 1, 10, 532, 2, 11, 4, 3, 46, 5.8e-5
- 5 : 2, 10, 572, 1, 23, 3, 4, 56, 5.8e-5
- 6 : 2, 10, 559, 1, 23, 4, 3, 57, 6.1e-5
- 7 : 1, 10, 512, 3, 8, 7, 2, 61, 6.3e-5
- 8 : 1, 10, 517, 4, 6, 6, 2, 73, 6.1e-5
- 9 : 2, 10, 545, 2, 16, 4, 3, 78, 5.9e-5
- 10: 2, 10, 545, 2, 16, 4, 3, 78, 6.0e-5
- 11: 2, 10, 545, 2, 16, 4, 3, 78, 6.2e-5
- 12: 2, 10, 547, 2, 16, 4, 3, 79, 5.9e-5
- 13: 2, 10, 554, 2, 16, 4, 3, 79, 6.3e-5
- 14: 2, 10, 559, 2, 16, 5, 3, 82, 6.2e-5
- 15: 2, 10, 546, 3, 12, 4, 3, 101, 5.7e-5
- 16: 2, 10, 535, 3, 12, 5, 3, 101, 6.3e-5
- 17: 2, 10, 540, 3, 12, 5, 3, 102, 5.8e-5
- 18: 2, 10, 515, 4, 9, 7, 2, 123, 5.7e-5
- 19: 2, 10, 519, 4, 9, 7, 2, 124, 5.6e-5
- 20: 2, 10, 516, 5, 8, 7, 2, 144, 5.7e-5
- 21: 2, 10, 524, 5, 8, 7, 2, 146, 6.2e-5
- 22: 2, 10, 527, 6, 7, 7, 2, 169, 6.0e-5
- 23: 2, 10, 531, 7, 6, 7, 2, 192, 6.0e-5
- 24: 2, 10, 541, 9, 5, 7, 2, 239, 6.1e-5
- 25: 2, 10, 553, 11, 4, 15, 1, 307, 6.3e-5
- 26: 2, 10, 527, 22, 2, 7, 2, 514, 5.8e-5
- 27: 1, 11, 538, 44, 1, 15, 1, 1359, 6.2e-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, 565, 1, 23, 5, 3, 76, 5.2e-5
- 1 : 1, 11, 565, 1, 23, 5, 3, 76, 5.2e-5
- 2 : 1, 11, 565, 1, 23, 5, 3, 76, 5.3e-5
- 3 : 1, 11, 565, 1, 23, 5, 3, 76, 5.6e-5
- 4 : 1, 11, 566, 1, 23, 5, 3, 76, 5.7e-5
- 5 : 1, 11, 571, 1, 23, 5, 3, 77, 6.0e-5
- 6 : 1, 11, 565, 2, 15, 5, 3, 107, 5.1e-5
- 7 : 1, 11, 565, 2, 15, 5, 3, 107, 5.2e-5
- 8 : 1, 11, 565, 2, 15, 5, 3, 107, 5.2e-5
- 9 : 1, 11, 565, 2, 15, 5, 3, 107, 5.2e-5
- 10: 1, 11, 565, 2, 15, 5, 3, 107, 5.5e-5
- 11: 1, 11, 566, 2, 15, 5, 3, 107, 5.4e-5
- 12: 1, 11, 570, 2, 15, 5, 3, 108, 5.4e-5
- 13: 1, 11, 586, 2, 15, 8, 2, 117, 6.2e-5
- 14: 1, 11, 565, 3, 12, 5, 3, 138, 5.7e-5
- 15: 1, 11, 566, 3, 12, 5, 3, 138, 6.3e-5
- 16: 1, 11, 573, 3, 12, 5, 3, 140, 6.2e-5
- 17: 1, 11, 548, 4, 9, 7, 2, 168, 5.3e-5
- 18: 1, 11, 553, 4, 9, 7, 2, 170, 5.9e-5
- 19: 1, 11, 549, 5, 8, 7, 2, 198, 6.3e-5
- 20: 1, 11, 566, 5, 8, 7, 2, 204, 6.0e-5
- 21: 1, 11, 567, 6, 7, 8, 2, 238, 6.1e-5
- 22: 1, 11, 576, 7, 6, 8, 2, 273, 6.2e-5
- 23: 1, 11, 554, 11, 4, 7, 2, 382, 6.1e-5
- 24: 1, 11, 561, 14, 3, 8, 2, 481, 6.1e-5
- 25: 1, 11, 566, 22, 2, 8, 2, 733, 6.1e-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, 635, 1, 23, 4, 4, 174, 5.9e-5
- 1 : 1, 12, 635, 1, 23, 4, 4, 174, 6.2e-5
- 2 : 1, 12, 636, 1, 23, 4, 4, 175, 6.3e-5
- 3 : 1, 12, 641, 1, 23, 4, 4, 176, 6.2e-5
- 4 : 1, 12, 616, 2, 15, 5, 3, 247, 5.7e-5
- 5 : 1, 12, 616, 2, 15, 5, 3, 247, 5.7e-5
- 6 : 1, 12, 616, 2, 15, 5, 3, 247, 5.7e-5
- 7 : 1, 12, 616, 2, 15, 5, 3, 247, 5.8e-5
- 8 : 1, 12, 616, 2, 15, 5, 3, 247, 6.0e-5
- 9 : 1, 12, 617, 2, 15, 5, 3, 247, 5.9e-5
- 10: 1, 12, 621, 2, 15, 5, 3, 248, 6.0e-5
- 11: 1, 12, 635, 2, 15, 6, 3, 259, 5.9e-5
- 12: 1, 12, 617, 3, 12, 5, 3, 319, 5.6e-5
- 13: 1, 12, 619, 3, 12, 5, 3, 320, 6.1e-5
- 14: 1, 12, 604, 3, 12, 8, 2, 327, 6.1e-5
- 15: 1, 12, 594, 4, 9, 8, 2, 391, 5.3e-5
- 16: 1, 12, 598, 4, 9, 8, 2, 394, 5.7e-5
- 17: 1, 12, 596, 5, 8, 8, 2, 463, 6.3e-5
- 18: 1, 12, 621, 5, 8, 8, 2, 481, 6.1e-5
- 19: 1, 12, 633, 6, 7, 9, 2, 569, 6.2e-5
- 20: 1, 12, 602, 8, 5, 8, 2, 679, 6.0e-5
- 21: 1, 12, 620, 10, 4, 8, 2, 844, 6.3e-5
- 22: 1, 12, 611, 14, 3, 8, 2, 1118, 6.2e-5
- 23: 1, 12, 626, 22, 2, 9, 2, 1737, 6.1e-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, 660, 1, 23, 6, 3, 403, 5.5e-5
- 1 : 1, 13, 664, 1, 23, 6, 3, 405, 6.0e-5
- 2 : 1, 13, 659, 2, 15, 6, 3, 567, 5.2e-5
- 3 : 1, 13, 659, 2, 15, 6, 3, 567, 5.2e-5
- 4 : 1, 13, 659, 2, 15, 6, 3, 567, 5.2e-5
- 5 : 1, 13, 659, 2, 15, 6, 3, 567, 5.2e-5
- 6 : 1, 13, 659, 2, 15, 6, 3, 567, 5.4e-5
- 7 : 1, 13, 659, 2, 15, 6, 3, 567, 6.1e-5
- 8 : 1, 13, 662, 2, 15, 6, 3, 570, 5.5e-5
- 9 : 1, 13, 677, 2, 15, 6, 3, 582, 6.1e-5
- 10: 1, 13, 659, 3, 11, 6, 3, 732, 5.7e-5
- 11: 1, 13, 660, 3, 11, 6, 3, 733, 6.2e-5
- 12: 1, 13, 667, 3, 11, 6, 3, 740, 6.2e-5
- 13: 1, 13, 660, 4, 9, 6, 3, 898, 5.5e-5
- 14: 1, 13, 664, 4, 9, 6, 3, 903, 6.0e-5
- 15: 1, 13, 644, 5, 8, 9, 2, 1068, 6.2e-5
- 16: 1, 13, 646, 6, 7, 9, 2, 1233, 5.4e-5
- 17: 1, 13, 647, 7, 6, 9, 2, 1396, 5.8e-5
- 18: 1, 13, 650, 8, 5, 9, 2, 1565, 5.9e-5
- 19: 1, 13, 661, 10, 4, 9, 2, 1922, 6.2e-5
- 20: 1, 13, 663, 14, 3, 9, 2, 2590, 6.2e-5
- 21: 1, 13, 652, 42, 1, 19, 1, 7214, 6.2e-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, 759, 1, 22, 5, 4, 941, 6.3e-5
- 1 : 1, 14, 711, 2, 15, 6, 3, 1286, 5.8e-5
- 2 : 1, 14, 711, 2, 15, 6, 3, 1286, 5.8e-5
- 3 : 1, 14, 711, 2, 15, 6, 3, 1286, 5.9e-5
- 4 : 1, 14, 711, 2, 15, 6, 3, 1286, 6.0e-5
- 5 : 1, 14, 712, 2, 15, 6, 3, 1288, 5.9e-5
- 6 : 1, 14, 716, 2, 15, 6, 3, 1294, 5.9e-5
- 7 : 1, 14, 750, 2, 15, 5, 4, 1329, 6.0e-5
- 8 : 1, 14, 711, 3, 11, 6, 3, 1664, 6.3e-5
- 9 : 1, 14, 713, 3, 11, 6, 3, 1668, 6.1e-5
- 10: 1, 14, 722, 3, 11, 6, 3, 1688, 6.3e-5
- 11: 1, 14, 713, 4, 9, 6, 3, 2047, 5.9e-5
- 12: 1, 14, 712, 4, 9, 7, 3, 2066, 6.3e-5
- 13: 1, 14, 693, 5, 8, 10, 2, 2446, 5.8e-5
- 14: 1, 14, 695, 6, 7, 10, 2, 2822, 5.6e-5
- 15: 1, 14, 696, 7, 6, 10, 2, 3196, 6.3e-5
- 16: 1, 14, 700, 8, 5, 10, 2, 3586, 5.7e-5
- 17: 1, 14, 710, 10, 4, 10, 2, 4391, 6.2e-5
- 18: 1, 14, 727, 14, 3, 10, 2, 6039, 6.2e-5
- 19: 1, 14, 702, 42, 1, 20, 1, 16496, 6.2e-5
# no solution starting from log norm2 = 20
- 9: # bits
# no solution at all