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

239 lines
13 KiB
Plaintext

security level: 144
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, 611, 2, 7, 5, 2, 54, 6.2e-5
- 1 : 2, 10, 653, 1, 22, 3, 3, 63, 5.6e-5
- 2 : 2, 10, 653, 1, 22, 3, 3, 63, 5.6e-5
- 3 : 2, 10, 653, 1, 22, 3, 3, 63, 5.6e-5
- 4 : 2, 10, 653, 1, 22, 3, 3, 63, 5.6e-5
- 5 : 2, 10, 653, 1, 22, 3, 3, 63, 5.7e-5
- 6 : 2, 10, 653, 1, 22, 3, 3, 63, 6.1e-5
- 7 : 2, 10, 655, 1, 22, 3, 3, 63, 5.4e-5
- 8 : 2, 10, 661, 1, 22, 3, 3, 64, 5.5e-5
- 9 : 2, 10, 678, 1, 22, 4, 3, 68, 6.2e-5
- 10: 2, 10, 653, 2, 15, 3, 3, 90, 5.6e-5
- 11: 2, 10, 653, 2, 15, 3, 3, 90, 5.6e-5
- 12: 2, 10, 653, 2, 15, 3, 3, 90, 5.7e-5
- 13: 2, 10, 653, 2, 15, 3, 3, 90, 5.9e-5
- 14: 2, 10, 654, 2, 15, 3, 3, 90, 5.9e-5
- 15: 2, 10, 658, 2, 15, 3, 3, 90, 6.1e-5
- 16: 2, 10, 638, 2, 15, 5, 2, 93, 5.7e-5
- 17: 2, 10, 620, 3, 11, 5, 2, 116, 5.1e-5
- 18: 2, 10, 621, 3, 11, 5, 2, 116, 5.7e-5
- 19: 2, 10, 627, 3, 11, 5, 2, 117, 6.3e-5
- 20: 2, 10, 621, 4, 9, 5, 2, 142, 5.3e-5
- 21: 2, 10, 626, 4, 9, 5, 2, 143, 5.5e-5
- 22: 2, 10, 676, 4, 9, 5, 2, 153, 6.3e-5
- 23: 2, 10, 678, 5, 8, 6, 2, 184, 6.2e-5
- 24: 2, 10, 630, 7, 6, 5, 2, 221, 5.7e-5
- 25: 2, 10, 633, 8, 5, 5, 2, 248, 6.0e-5
- 26: 2, 10, 643, 10, 4, 5, 2, 305, 6.3e-5
- 27: 2, 10, 652, 14, 3, 5, 2, 416, 6.1e-5
- 28: 3, 10, 662, 14, 3, 6, 2, 606, 6.2e-5
- 29: 3, 10, 675, 22, 2, 6, 2, 934, 6.2e-5
# no solution starting from log norm2 = 30
- 2: # bits
-ln2: k, N, n, br_l,br_b, ks_l,ks_b, cost, p_error
- 0 : 2, 10, 692, 1, 22, 4, 3, 69, 6.3e-5
- 1 : 2, 10, 692, 1, 22, 4, 3, 69, 6.3e-5
- 2 : 2, 10, 692, 1, 22, 4, 3, 69, 6.3e-5
- 3 : 2, 10, 692, 1, 22, 4, 3, 69, 6.3e-5
- 4 : 2, 10, 693, 1, 22, 4, 3, 69, 4.9e-5
- 5 : 2, 10, 693, 1, 22, 4, 3, 69, 5.2e-5
- 6 : 2, 10, 694, 1, 22, 4, 3, 69, 5.2e-5
- 7 : 2, 10, 698, 1, 22, 4, 3, 70, 5.6e-5
- 8 : 2, 10, 728, 1, 22, 4, 3, 72, 5.9e-5
- 9 : 2, 10, 692, 2, 15, 4, 3, 97, 6.3e-5
- 10: 2, 10, 692, 2, 15, 4, 3, 97, 6.3e-5
- 11: 2, 10, 672, 2, 15, 5, 2, 97, 5.8e-5
- 12: 2, 10, 672, 2, 15, 5, 2, 97, 6.0e-5
- 13: 2, 10, 693, 2, 15, 4, 3, 98, 6.2e-5
- 14: 2, 10, 696, 2, 15, 4, 3, 98, 6.1e-5
- 15: 2, 10, 713, 2, 15, 4, 3, 100, 5.8e-5
- 16: 2, 10, 673, 3, 11, 5, 2, 125, 5.4e-5
- 17: 2, 10, 675, 3, 11, 5, 2, 126, 5.7e-5
- 18: 2, 10, 701, 3, 11, 4, 3, 127, 6.2e-5
- 19: 2, 10, 674, 4, 9, 5, 2, 153, 6.1e-5
- 20: 2, 10, 683, 4, 9, 5, 2, 155, 5.9e-5
- 21: 2, 10, 729, 4, 9, 6, 2, 168, 6.2e-5
- 22: 2, 10, 675, 6, 7, 6, 2, 211, 5.2e-5
- 23: 2, 10, 676, 7, 6, 6, 2, 239, 6.2e-5
- 24: 2, 10, 680, 8, 5, 6, 2, 269, 5.7e-5
- 25: 2, 10, 691, 10, 4, 6, 2, 329, 5.8e-5
- 26: 2, 10, 700, 14, 3, 6, 2, 448, 6.0e-5
- 27: 3, 10, 712, 14, 3, 6, 2, 651, 6.1e-5
- 28: 3, 10, 734, 22, 2, 6, 2, 1015, 6.3e-5
# no solution starting from log norm2 = 29
- 3: # bits
-ln2: k, N, n, br_l,br_b, ks_l,ks_b, cost, p_error
- 0 : 2, 10, 773, 1, 22, 3, 4, 73, 5.2e-5
- 1 : 2, 10, 773, 1, 22, 3, 4, 73, 5.2e-5
- 2 : 2, 10, 773, 1, 22, 3, 4, 73, 5.2e-5
- 3 : 2, 10, 773, 1, 22, 3, 4, 73, 5.3e-5
- 4 : 2, 10, 773, 1, 22, 3, 4, 73, 5.7e-5
- 5 : 2, 10, 774, 1, 22, 3, 4, 73, 6.1e-5
- 6 : 2, 10, 780, 1, 22, 3, 4, 74, 6.1e-5
- 7 : 2, 10, 796, 1, 22, 5, 3, 81, 6.2e-5
- 8 : 2, 10, 740, 2, 15, 4, 3, 104, 5.5e-5
- 9 : 2, 10, 740, 2, 15, 4, 3, 104, 5.5e-5
- 10: 2, 10, 740, 2, 15, 4, 3, 104, 5.6e-5
- 11: 2, 10, 740, 2, 15, 4, 3, 104, 5.8e-5
- 12: 2, 10, 741, 2, 15, 4, 3, 104, 5.7e-5
- 13: 2, 10, 745, 2, 15, 4, 3, 104, 5.7e-5
- 14: 2, 10, 771, 2, 15, 4, 3, 108, 5.9e-5
- 15: 2, 10, 740, 3, 11, 4, 3, 134, 6.3e-5
- 16: 2, 10, 742, 3, 11, 4, 3, 134, 6.2e-5
- 17: 2, 10, 752, 3, 11, 4, 3, 136, 5.8e-5
- 18: 2, 10, 715, 4, 9, 6, 2, 165, 5.3e-5
- 19: 2, 10, 722, 4, 9, 6, 2, 166, 5.6e-5
- 20: 2, 10, 722, 5, 8, 6, 2, 196, 6.3e-5
- 21: 2, 10, 725, 6, 7, 6, 2, 226, 5.9e-5
- 22: 2, 10, 728, 7, 6, 6, 2, 257, 5.7e-5
- 23: 2, 10, 733, 8, 5, 6, 2, 289, 6.0e-5
- 24: 2, 10, 754, 10, 4, 6, 2, 359, 6.1e-5
- 25: 2, 10, 765, 14, 3, 7, 2, 492, 6.2e-5
- 26: 3, 10, 776, 14, 3, 7, 2, 713, 6.1e-5
- 27: 3, 10, 745, 43, 1, 13, 1, 1977, 6.2e-5
# no solution starting from log norm2 = 28
- 4: # bits
-ln2: k, N, n, br_l,br_b, ks_l,ks_b, cost, p_error
- 0 : 2, 10, 875, 1, 22, 3, 5, 82, 6.2e-5
- 1 : 2, 10, 875, 1, 22, 3, 5, 82, 6.2e-5
- 2 : 2, 10, 875, 1, 22, 3, 5, 82, 6.3e-5
- 3 : 2, 10, 876, 1, 22, 3, 5, 82, 6.1e-5
- 4 : 2, 10, 879, 1, 22, 3, 5, 82, 6.2e-5
- 5 : 2, 10, 821, 1, 22, 5, 3, 84, 6.0e-5
- 6 : 2, 10, 805, 2, 15, 5, 3, 115, 5.6e-5
- 7 : 2, 10, 805, 2, 15, 5, 3, 115, 5.6e-5
- 8 : 2, 10, 805, 2, 15, 5, 3, 115, 5.6e-5
- 9 : 2, 10, 805, 2, 15, 5, 3, 115, 5.7e-5
- 10: 2, 10, 805, 2, 15, 5, 3, 115, 6.0e-5
- 11: 2, 10, 807, 2, 15, 5, 3, 115, 5.9e-5
- 12: 2, 10, 815, 2, 15, 5, 3, 117, 6.2e-5
- 13: 2, 10, 805, 3, 11, 5, 3, 148, 5.8e-5
- 14: 2, 10, 806, 3, 11, 5, 3, 148, 5.8e-5
- 15: 2, 10, 810, 3, 11, 5, 3, 149, 5.8e-5
- 16: 2, 10, 837, 3, 11, 5, 3, 154, 6.3e-5
- 17: 2, 10, 779, 4, 9, 7, 2, 182, 6.1e-5
- 18: 2, 10, 797, 4, 9, 7, 2, 186, 6.1e-5
- 19: 2, 10, 799, 5, 8, 7, 2, 219, 6.3e-5
- 20: 2, 10, 809, 6, 7, 7, 2, 255, 6.3e-5
- 21: 2, 10, 827, 7, 6, 7, 2, 294, 6.3e-5
- 22: 2, 10, 788, 10, 4, 7, 2, 378, 6.0e-5
- 23: 2, 10, 791, 14, 3, 7, 2, 509, 6.1e-5
- 24: 3, 10, 805, 14, 3, 7, 2, 740, 6.2e-5
- 25: 3, 10, 810, 22, 2, 7, 2, 1124, 6.3e-5
# no solution starting from log norm2 = 26
- 5: # bits
-ln2: k, N, n, br_l,br_b, ks_l,ks_b, cost, p_error
- 0 : 1, 11, 850, 1, 22, 5, 3, 110, 5.7e-5
- 1 : 1, 11, 850, 1, 22, 5, 3, 110, 5.9e-5
- 2 : 1, 11, 851, 1, 22, 5, 3, 111, 5.7e-5
- 3 : 1, 11, 854, 1, 22, 5, 3, 111, 5.9e-5
- 4 : 1, 11, 873, 1, 22, 5, 3, 113, 6.1e-5
- 5 : 1, 11, 850, 2, 15, 5, 3, 157, 5.7e-5
- 6 : 1, 11, 850, 2, 15, 5, 3, 157, 5.7e-5
- 7 : 1, 11, 850, 2, 15, 5, 3, 157, 5.7e-5
- 8 : 1, 11, 850, 2, 15, 5, 3, 157, 5.8e-5
- 9 : 1, 11, 850, 2, 15, 5, 3, 157, 6.2e-5
- 10: 1, 11, 853, 2, 15, 5, 3, 157, 6.0e-5
- 11: 1, 11, 867, 2, 15, 5, 3, 160, 6.2e-5
- 12: 1, 11, 850, 3, 11, 5, 3, 203, 6.0e-5
- 13: 1, 11, 851, 3, 11, 5, 3, 204, 6.1e-5
- 14: 1, 11, 857, 3, 11, 5, 3, 205, 6.0e-5
- 15: 1, 11, 884, 3, 11, 8, 2, 222, 6.3e-5
- 16: 1, 11, 831, 4, 9, 7, 2, 251, 6.1e-5
- 17: 1, 11, 864, 4, 9, 8, 2, 264, 6.2e-5
- 18: 1, 11, 884, 5, 8, 8, 2, 318, 6.3e-5
- 19: 1, 11, 836, 7, 6, 7, 2, 390, 6.2e-5
- 20: 1, 11, 840, 8, 5, 7, 2, 437, 6.1e-5
- 21: 1, 11, 842, 10, 4, 8, 2, 534, 6.1e-5
- 22: 1, 11, 850, 14, 3, 8, 2, 725, 6.1e-5
- 23: 2, 11, 900, 15, 3, 8, 2, 1322, 6.3e-5
- 24: 1, 12, 866, 22, 2, 8, 2, 2390, 6.1e-5
# no solution starting from log norm2 = 25
- 6: # bits
-ln2: k, N, n, br_l,br_b, ks_l,ks_b, cost, p_error
- 0 : 1, 12, 954, 1, 23, 4, 4, 254, 6.3e-5
- 1 : 1, 12, 955, 1, 23, 4, 4, 254, 6.3e-5
- 2 : 1, 12, 959, 1, 23, 4, 4, 255, 6.3e-5
- 3 : 1, 12, 989, 1, 23, 4, 4, 263, 6.3e-5
- 4 : 1, 12, 932, 2, 15, 5, 3, 365, 6.0e-5
- 5 : 1, 12, 932, 2, 15, 5, 3, 365, 6.0e-5
- 6 : 1, 12, 932, 2, 15, 5, 3, 365, 6.1e-5
- 7 : 1, 12, 932, 2, 15, 5, 3, 365, 6.2e-5
- 8 : 1, 12, 933, 2, 15, 5, 3, 365, 6.1e-5
- 9 : 1, 12, 937, 2, 15, 5, 3, 367, 6.3e-5
- 10: 1, 12, 973, 2, 15, 4, 4, 373, 6.1e-5
- 11: 1, 12, 933, 3, 12, 5, 3, 475, 6.0e-5
- 12: 1, 12, 935, 3, 12, 5, 3, 476, 6.3e-5
- 13: 1, 12, 928, 3, 12, 6, 3, 480, 6.3e-5
- 14: 1, 12, 892, 4, 9, 8, 2, 580, 6.1e-5
- 15: 1, 12, 895, 4, 9, 8, 2, 582, 6.2e-5
- 16: 1, 12, 915, 4, 9, 8, 2, 595, 6.3e-5
- 17: 1, 12, 907, 5, 8, 8, 2, 696, 6.3e-5
- 18: 1, 12, 912, 6, 7, 8, 2, 806, 6.3e-5
- 19: 1, 12, 919, 7, 6, 8, 2, 920, 6.2e-5
- 20: 1, 12, 955, 8, 5, 9, 2, 1075, 6.3e-5
- 21: 1, 12, 950, 11, 4, 18, 1, 1470, 6.3e-5
- 22: 1, 12, 919, 21, 2, 9, 2, 2435, 6.2e-5
# no solution starting from log norm2 = 23
- 7: # bits
-ln2: k, N, n, br_l,br_b, ks_l,ks_b, cost, p_error
- 0 : 1, 13, 993, 1, 23, 6, 3, 590, 6.1e-5
- 1 : 1, 13, 1018, 1, 23, 6, 3, 604, 6.2e-5
- 2 : 1, 13, 988, 2, 15, 6, 3, 834, 6.2e-5
- 3 : 1, 13, 988, 2, 15, 6, 3, 834, 6.2e-5
- 4 : 1, 13, 988, 2, 15, 6, 3, 834, 6.2e-5
- 5 : 1, 13, 988, 2, 15, 6, 3, 834, 6.3e-5
- 6 : 1, 13, 989, 2, 15, 6, 3, 835, 6.0e-5
- 7 : 1, 13, 991, 2, 15, 6, 3, 837, 6.1e-5
- 8 : 1, 13, 1002, 2, 15, 6, 3, 846, 6.2e-5
- 9 : 1, 13, 989, 3, 11, 6, 3, 1082, 5.9e-5
- 10: 1, 13, 990, 3, 11, 6, 3, 1084, 6.0e-5
- 11: 1, 13, 996, 3, 11, 6, 3, 1090, 6.0e-5
- 12: 1, 13, 1017, 3, 11, 10, 2, 1176, 6.3e-5
- 13: 1, 13, 993, 4, 9, 6, 3, 1335, 6.1e-5
- 14: 1, 13, 1018, 4, 9, 6, 3, 1368, 6.2e-5
- 15: 1, 13, 984, 5, 8, 9, 2, 1615, 6.2e-5
- 16: 1, 13, 994, 6, 7, 9, 2, 1880, 6.3e-5
- 17: 1, 13, 1006, 7, 6, 10, 2, 2169, 6.3e-5
- 18: 1, 13, 975, 10, 4, 9, 2, 2820, 6.0e-5
- 19: 1, 13, 976, 14, 3, 9, 2, 3798, 6.0e-5
- 20: 1, 13, 996, 21, 2, 10, 2, 5634, 6.3e-5
# no solution starting from log norm2 = 21
- 8: # bits
-ln2: k, N, n, br_l,br_b, ks_l,ks_b, cost, p_error
- 0 : 1, 14, 1017, 2, 15, 19, 1, 2226, 6.3e-5
- 1 : 1, 14, 1017, 2, 15, 19, 1, 2226, 6.3e-5
- 2 : 1, 14, 1017, 2, 15, 19, 1, 2226, 6.3e-5
- 3 : 1, 14, 1018, 2, 15, 19, 1, 2228, 5.9e-5
- 4 : 1, 14, 1018, 2, 15, 19, 1, 2228, 6.1e-5
- 5 : 1, 14, 1020, 2, 15, 19, 1, 2232, 6.3e-5
- 6 : 1, 14, 1017, 3, 11, 19, 1, 2766, 6.3e-5
- 7 : 1, 14, 1018, 3, 11, 19, 1, 2768, 6.0e-5
- 8 : 1, 14, 1019, 3, 11, 19, 1, 2771, 6.0e-5
- 9 : 1, 14, 1024, 3, 11, 19, 1, 2784, 6.1e-5
- 10: 1, 14, 1019, 4, 9, 19, 1, 3312, 6.0e-5
- 11: 1, 14, 1023, 4, 9, 19, 1, 3325, 6.2e-5
- 12: 1, 14, 1024, 5, 8, 19, 1, 3872, 6.1e-5
- 13: 1, 14, 1023, 6, 7, 20, 1, 4444, 6.1e-5
- 14: 1, 14, 1024, 7, 6, 20, 1, 4992, 6.2e-5
- 15: 1, 14, 1021, 10, 4, 19, 1, 6573, 6.1e-5
- 16: 1, 14, 1022, 14, 3, 19, 1, 8751, 6.1e-5
- 17: 1, 14, 1022, 21, 2, 20, 1, 12584, 6.3e-5
# no solution starting from log norm2 = 18
- 9: # bits
# no solution at all