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

248 lines
14 KiB
Plaintext

security level: 112
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, 13, 3, 3, 31, 6.7e-7
- 1 : 1, 10, 521, 1, 13, 12, 1, 40, 6.3e-5
- 2 : 1, 10, 512, 2, 9, 3, 3, 44, 1.1e-9
- 3 : 1, 10, 512, 2, 9, 3, 3, 44, 3.8e-9
- 4 : 1, 10, 512, 2, 9, 3, 3, 44, 1.7e-7
- 5 : 1, 10, 524, 2, 9, 3, 3, 44, 6.2e-5
- 6 : 2, 10, 512, 1, 23, 3, 3, 51, 1.2e-5
- 7 : 2, 10, 512, 1, 23, 3, 3, 51, 1.3e-5
- 8 : 2, 10, 512, 1, 23, 3, 3, 51, 1.7e-5
- 9 : 2, 10, 512, 1, 23, 3, 3, 51, 4.6e-5
- 10: 2, 10, 521, 1, 23, 4, 3, 54, 6.2e-5
- 11: 2, 10, 512, 2, 16, 3, 3, 72, 1.2e-5
- 12: 2, 10, 512, 2, 16, 3, 3, 72, 1.2e-5
- 13: 2, 10, 512, 2, 16, 3, 3, 72, 1.2e-5
- 14: 2, 10, 512, 2, 16, 3, 3, 72, 1.3e-5
- 15: 2, 10, 512, 2, 16, 3, 3, 72, 1.6e-5
- 16: 2, 10, 512, 2, 16, 3, 3, 72, 3.5e-5
- 17: 2, 10, 529, 2, 16, 3, 3, 74, 6.0e-5
- 18: 2, 10, 512, 3, 12, 3, 3, 93, 1.3e-5
- 19: 2, 10, 512, 3, 12, 3, 3, 93, 1.8e-5
- 20: 2, 10, 512, 3, 12, 3, 3, 93, 5.3e-5
- 21: 2, 10, 512, 3, 12, 5, 2, 97, 2.4e-5
- 22: 2, 10, 512, 4, 9, 3, 3, 114, 4.6e-5
- 23: 2, 10, 521, 4, 9, 4, 3, 118, 6.2e-5
- 24: 2, 10, 517, 5, 8, 3, 3, 136, 5.5e-5
- 25: 2, 10, 512, 6, 7, 4, 3, 158, 4.2e-5
- 26: 2, 10, 513, 7, 6, 4, 3, 179, 5.3e-5
- 27: 2, 10, 516, 8, 5, 5, 2, 204, 6.0e-5
- 28: 2, 10, 512, 11, 4, 5, 2, 265, 1.2e-5
- 29: 2, 10, 512, 15, 3, 6, 2, 351, 5.8e-5
- 30: 2, 10, 512, 44, 1, 5, 2, 958, 2.8e-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, 520, 2, 9, 4, 3, 45, 5.6e-5
- 1 : 1, 10, 520, 2, 9, 4, 3, 45, 6.0e-5
- 2 : 1, 10, 521, 2, 9, 4, 3, 45, 5.6e-5
- 3 : 1, 10, 512, 2, 9, 5, 2, 46, 8.0e-6
- 4 : 1, 10, 552, 2, 9, 4, 3, 48, 6.2e-5
- 5 : 2, 10, 537, 1, 23, 4, 3, 55, 5.8e-5
- 6 : 2, 10, 537, 1, 23, 4, 3, 55, 6.1e-5
- 7 : 2, 10, 538, 1, 23, 4, 3, 55, 5.5e-5
- 8 : 2, 10, 541, 1, 23, 4, 3, 56, 5.4e-5
- 9 : 2, 10, 559, 1, 23, 4, 3, 57, 6.1e-5
- 10: 2, 10, 521, 2, 16, 5, 2, 77, 5.2e-5
- 11: 2, 10, 521, 2, 16, 5, 2, 77, 5.2e-5
- 12: 2, 10, 521, 2, 16, 5, 2, 77, 5.3e-5
- 13: 2, 10, 521, 2, 16, 5, 2, 77, 5.5e-5
- 14: 2, 10, 522, 2, 16, 5, 2, 77, 5.2e-5
- 15: 2, 10, 540, 2, 16, 4, 3, 78, 5.5e-5
- 16: 2, 10, 552, 2, 16, 4, 3, 79, 5.3e-5
- 17: 2, 10, 521, 3, 12, 5, 2, 99, 5.6e-5
- 18: 2, 10, 522, 3, 12, 5, 2, 99, 5.8e-5
- 19: 2, 10, 527, 3, 12, 5, 2, 100, 5.9e-5
- 20: 2, 10, 564, 3, 12, 4, 3, 104, 6.2e-5
- 21: 2, 10, 526, 4, 9, 5, 2, 121, 6.1e-5
- 22: 2, 10, 536, 4, 9, 6, 2, 125, 5.9e-5
- 23: 2, 10, 523, 5, 8, 6, 2, 144, 5.1e-5
- 24: 2, 10, 524, 6, 7, 6, 2, 166, 5.9e-5
- 25: 2, 10, 526, 7, 6, 6, 2, 188, 6.0e-5
- 26: 2, 10, 555, 8, 5, 6, 2, 221, 6.1e-5
- 27: 2, 10, 536, 11, 4, 6, 2, 279, 5.9e-5
- 28: 2, 10, 555, 15, 3, 6, 2, 380, 6.1e-5
- 29: 2, 10, 531, 44, 1, 12, 1, 1008, 6.0e-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, 557, 2, 9, 4, 3, 48, 5.1e-5
- 1 : 1, 10, 558, 2, 9, 4, 3, 48, 5.1e-5
- 2 : 1, 10, 562, 2, 9, 4, 3, 49, 5.8e-5
- 3 : 1, 10, 585, 2, 9, 6, 2, 53, 6.2e-5
- 4 : 2, 10, 601, 1, 23, 3, 4, 59, 5.4e-5
- 5 : 2, 10, 601, 1, 23, 3, 4, 59, 5.7e-5
- 6 : 2, 10, 602, 1, 23, 3, 4, 59, 5.6e-5
- 7 : 2, 10, 579, 1, 23, 4, 3, 59, 6.2e-5
- 8 : 2, 10, 609, 1, 23, 4, 3, 62, 6.2e-5
- 9 : 2, 10, 575, 2, 16, 4, 3, 82, 4.9e-5
- 10: 2, 10, 575, 2, 16, 4, 3, 82, 4.9e-5
- 11: 2, 10, 575, 2, 16, 4, 3, 82, 4.9e-5
- 12: 2, 10, 575, 2, 16, 4, 3, 82, 5.2e-5
- 13: 2, 10, 575, 2, 16, 4, 3, 82, 6.2e-5
- 14: 2, 10, 578, 2, 16, 4, 3, 83, 5.8e-5
- 15: 2, 10, 595, 2, 16, 4, 3, 85, 5.7e-5
- 16: 2, 10, 575, 3, 12, 4, 3, 106, 5.3e-5
- 17: 2, 10, 576, 3, 12, 4, 3, 106, 5.3e-5
- 18: 2, 10, 580, 3, 12, 4, 3, 107, 5.7e-5
- 19: 2, 10, 596, 3, 12, 6, 2, 114, 6.1e-5
- 20: 2, 10, 557, 4, 9, 6, 2, 130, 6.1e-5
- 21: 2, 10, 584, 4, 9, 6, 2, 136, 6.2e-5
- 22: 2, 10, 562, 5, 8, 6, 2, 154, 5.9e-5
- 23: 2, 10, 564, 6, 7, 6, 2, 178, 6.1e-5
- 24: 2, 10, 567, 7, 6, 6, 2, 202, 6.1e-5
- 25: 2, 10, 574, 9, 5, 6, 2, 251, 5.7e-5
- 26: 2, 10, 584, 11, 4, 6, 2, 304, 6.2e-5
- 27: 2, 10, 564, 22, 2, 6, 2, 548, 5.9e-5
- 28: 2, 10, 578, 44, 1, 13, 1, 1099, 6.2e-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, 610, 2, 9, 4, 3, 52, 5.8e-5
- 1 : 1, 10, 623, 2, 9, 4, 3, 53, 6.0e-5
- 2 : 2, 10, 665, 1, 23, 3, 4, 64, 6.2e-5
- 3 : 2, 10, 665, 1, 23, 3, 4, 64, 6.3e-5
- 4 : 2, 10, 666, 1, 23, 3, 4, 64, 6.3e-5
- 5 : 2, 10, 671, 1, 23, 3, 4, 65, 6.0e-5
- 6 : 2, 10, 687, 1, 23, 3, 5, 66, 6.2e-5
- 7 : 1, 11, 652, 1, 23, 5, 3, 86, 6.3e-5
- 8 : 2, 10, 637, 2, 16, 4, 3, 90, 6.2e-5
- 9 : 2, 10, 637, 2, 16, 4, 3, 90, 6.2e-5
- 10: 2, 10, 637, 2, 16, 4, 3, 90, 6.3e-5
- 11: 2, 10, 638, 2, 16, 4, 3, 90, 6.1e-5
- 12: 2, 10, 641, 2, 16, 4, 3, 91, 6.0e-5
- 13: 2, 10, 628, 2, 16, 5, 3, 92, 5.5e-5
- 14: 2, 10, 655, 2, 16, 8, 2, 103, 6.3e-5
- 15: 2, 10, 622, 3, 12, 5, 3, 116, 6.1e-5
- 16: 2, 10, 624, 3, 12, 5, 3, 117, 5.6e-5
- 17: 2, 10, 631, 3, 12, 5, 3, 118, 6.0e-5
- 18: 2, 10, 600, 4, 9, 7, 2, 142, 5.9e-5
- 19: 2, 10, 606, 4, 9, 7, 2, 143, 6.0e-5
- 20: 2, 10, 602, 5, 8, 7, 2, 167, 5.5e-5
- 21: 2, 10, 616, 5, 8, 7, 2, 171, 5.9e-5
- 22: 2, 10, 621, 6, 7, 7, 2, 197, 6.2e-5
- 23: 2, 10, 630, 7, 6, 7, 2, 226, 6.3e-5
- 24: 2, 10, 606, 11, 4, 7, 2, 317, 6.0e-5
- 25: 2, 10, 617, 14, 3, 7, 2, 399, 5.9e-5
- 26: 2, 10, 621, 22, 2, 7, 2, 605, 5.9e-5
# no solution starting from log norm2 = 27
- 5: # bits
-ln2: k, N, n, br_l,br_b, ks_l,ks_b, cost, p_error
- 0 : 1, 11, 657, 1, 23, 5, 3, 87, 6.0e-5
- 1 : 1, 11, 657, 1, 23, 5, 3, 87, 6.0e-5
- 2 : 1, 11, 657, 1, 23, 5, 3, 87, 6.1e-5
- 3 : 1, 11, 658, 1, 23, 5, 3, 87, 5.5e-5
- 4 : 1, 11, 659, 1, 23, 5, 3, 87, 6.2e-5
- 5 : 1, 11, 668, 1, 23, 5, 3, 88, 5.7e-5
- 6 : 1, 11, 657, 2, 15, 5, 3, 123, 6.0e-5
- 7 : 1, 11, 657, 2, 15, 5, 3, 123, 6.0e-5
- 8 : 1, 11, 657, 2, 15, 5, 3, 123, 6.0e-5
- 9 : 1, 11, 657, 2, 15, 5, 3, 123, 6.1e-5
- 10: 1, 11, 658, 2, 15, 5, 3, 123, 5.4e-5
- 11: 1, 11, 659, 2, 15, 5, 3, 123, 5.7e-5
- 12: 1, 11, 665, 2, 15, 5, 3, 124, 5.9e-5
- 13: 1, 11, 657, 3, 12, 5, 3, 159, 6.2e-5
- 14: 1, 11, 658, 3, 12, 5, 3, 159, 5.6e-5
- 15: 1, 11, 660, 3, 12, 5, 3, 160, 5.8e-5
- 16: 1, 11, 671, 3, 12, 5, 3, 162, 6.3e-5
- 17: 1, 11, 638, 4, 9, 7, 2, 194, 6.2e-5
- 18: 1, 11, 647, 4, 9, 7, 2, 197, 6.2e-5
- 19: 1, 11, 641, 5, 8, 7, 2, 230, 6.1e-5
- 20: 1, 11, 665, 5, 8, 8, 2, 241, 6.1e-5
- 21: 1, 11, 683, 6, 7, 8, 2, 285, 6.3e-5
- 22: 1, 11, 650, 8, 5, 8, 2, 343, 6.3e-5
- 23: 1, 11, 649, 11, 4, 7, 2, 446, 6.3e-5
- 24: 1, 11, 663, 14, 3, 8, 2, 567, 6.1e-5
- 25: 1, 11, 678, 22, 2, 8, 2, 876, 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, 739, 1, 23, 4, 4, 200, 5.9e-5
- 1 : 1, 12, 739, 1, 23, 4, 4, 200, 6.3e-5
- 2 : 1, 12, 741, 1, 23, 4, 4, 201, 6.0e-5
- 3 : 1, 12, 749, 1, 23, 4, 4, 203, 6.2e-5
- 4 : 1, 12, 718, 2, 15, 5, 3, 285, 5.8e-5
- 5 : 1, 12, 718, 2, 15, 5, 3, 285, 5.8e-5
- 6 : 1, 12, 718, 2, 15, 5, 3, 285, 5.8e-5
- 7 : 1, 12, 718, 2, 15, 5, 3, 285, 5.8e-5
- 8 : 1, 12, 718, 2, 15, 5, 3, 285, 6.1e-5
- 9 : 1, 12, 720, 2, 15, 5, 3, 286, 5.7e-5
- 10: 1, 12, 727, 2, 15, 5, 3, 288, 5.9e-5
- 11: 1, 12, 734, 2, 15, 9, 2, 314, 6.3e-5
- 12: 1, 12, 719, 3, 12, 5, 3, 369, 6.0e-5
- 13: 1, 12, 723, 3, 12, 5, 3, 371, 6.2e-5
- 14: 1, 12, 710, 3, 12, 8, 2, 382, 6.2e-5
- 15: 1, 12, 691, 4, 9, 8, 2, 453, 6.2e-5
- 16: 1, 12, 698, 4, 9, 8, 2, 457, 6.1e-5
- 17: 1, 12, 696, 5, 8, 8, 2, 538, 5.8e-5
- 18: 1, 12, 697, 6, 7, 8, 2, 620, 6.2e-5
- 19: 1, 12, 699, 7, 6, 8, 2, 704, 6.0e-5
- 20: 1, 12, 706, 8, 5, 8, 2, 793, 6.1e-5
- 21: 1, 12, 707, 11, 4, 8, 2, 1043, 6.2e-5
- 22: 1, 12, 724, 14, 3, 9, 2, 1328, 6.1e-5
- 23: 1, 12, 700, 43, 1, 17, 1, 3707, 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, 768, 1, 23, 6, 3, 464, 5.9e-5
- 1 : 1, 13, 775, 1, 23, 6, 3, 468, 6.2e-5
- 2 : 1, 13, 766, 2, 15, 6, 3, 654, 5.9e-5
- 3 : 1, 13, 766, 2, 15, 6, 3, 654, 5.9e-5
- 4 : 1, 13, 766, 2, 15, 6, 3, 654, 5.9e-5
- 5 : 1, 13, 766, 2, 15, 6, 3, 654, 6.0e-5
- 6 : 1, 13, 766, 2, 15, 6, 3, 654, 6.2e-5
- 7 : 1, 13, 767, 2, 15, 6, 3, 655, 6.1e-5
- 8 : 1, 13, 771, 2, 15, 6, 3, 658, 6.1e-5
- 9 : 1, 13, 808, 2, 15, 6, 3, 688, 6.3e-5
- 10: 1, 13, 767, 3, 11, 6, 3, 847, 5.7e-5
- 11: 1, 13, 769, 3, 11, 6, 3, 849, 5.9e-5
- 12: 1, 13, 781, 3, 11, 6, 3, 861, 6.2e-5
- 13: 1, 13, 768, 4, 9, 6, 3, 1040, 5.9e-5
- 14: 1, 13, 775, 4, 9, 6, 3, 1049, 6.2e-5
- 15: 1, 13, 752, 5, 8, 9, 2, 1242, 5.9e-5
- 16: 1, 13, 754, 6, 7, 9, 2, 1434, 6.0e-5
- 17: 1, 13, 756, 7, 6, 9, 2, 1626, 6.3e-5
- 18: 1, 13, 762, 8, 5, 9, 2, 1830, 6.3e-5
- 19: 1, 13, 799, 10, 4, 10, 2, 2329, 6.3e-5
- 20: 1, 13, 803, 14, 3, 20, 1, 3269, 6.3e-5
- 21: 1, 13, 761, 43, 1, 19, 1, 8605, 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, 829, 2, 15, 6, 3, 1489, 5.8e-5
- 1 : 1, 14, 829, 2, 15, 6, 3, 1489, 5.8e-5
- 2 : 1, 14, 829, 2, 15, 6, 3, 1489, 5.8e-5
- 3 : 1, 14, 829, 2, 15, 6, 3, 1489, 5.9e-5
- 4 : 1, 14, 829, 2, 15, 6, 3, 1489, 6.1e-5
- 5 : 1, 14, 831, 2, 15, 6, 3, 1492, 5.8e-5
- 6 : 1, 14, 853, 2, 15, 5, 4, 1503, 6.2e-5
- 7 : 1, 14, 865, 2, 15, 7, 3, 1578, 6.3e-5
- 8 : 1, 14, 830, 3, 11, 6, 3, 1931, 5.8e-5
- 9 : 1, 14, 833, 3, 11, 6, 3, 1938, 6.0e-5
- 10: 1, 14, 833, 3, 11, 7, 3, 1964, 6.2e-5
- 11: 1, 14, 832, 4, 9, 6, 3, 2378, 6.2e-5
- 12: 1, 14, 832, 4, 9, 7, 3, 2404, 5.9e-5
- 13: 1, 14, 809, 5, 8, 10, 2, 2845, 6.3e-5
- 14: 1, 14, 813, 6, 7, 10, 2, 3291, 5.9e-5
- 15: 1, 14, 816, 7, 6, 10, 2, 3736, 6.3e-5
- 16: 1, 14, 824, 8, 5, 10, 2, 4210, 6.1e-5
- 17: 1, 14, 853, 11, 4, 11, 2, 5742, 6.3e-5
- 18: 1, 14, 812, 21, 2, 10, 2, 9757, 5.9e-5
- 19: 1, 14, 840, 43, 1, 21, 1, 20198, 6.3e-5
# no solution starting from log norm2 = 20
- 9: # bits
# no solution at all