Enables external circuits to be called

This commit is contained in:
Jean-Philippe Bossuat
2025-10-31 09:59:08 +01:00
parent f6170d01d3
commit 578ed45b9a
12 changed files with 66 additions and 116 deletions

View File

@@ -1,4 +1,4 @@
use crate::tfhe::bdd_arithmetic::{BitCircuit, BitCircuitInfo, Circuit, GetBitCircuitInfo, Node};
use crate::tfhe::bdd_arithmetic::{BitCircuit, BitCircuitFamily, BitCircuitInfo, Circuit, Node};
pub(crate) enum AnyBitCircuit {
B0(BitCircuit<4>),
B1(BitCircuit<8>),
@@ -72,16 +72,9 @@ impl BitCircuitInfo for AnyBitCircuit {
}
}
impl GetBitCircuitInfo<u32> for Circuit<AnyBitCircuit, 32usize> {
fn input_size(&self) -> usize {
2 * u32::BITS as usize
}
fn output_size(&self) -> usize {
u32::BITS as usize
}
fn get_circuit(&self, bit: usize) -> (&[Node], usize) {
self.0[bit].info()
}
impl BitCircuitFamily for AnyBitCircuit {
const INPUT_BITS: usize = 64;
const OUTPUT_BITS: usize = 32;
}
pub(crate) static OUTPUT_CIRCUITS: Circuit<AnyBitCircuit, 32usize> = Circuit([

View File

@@ -1,4 +1,4 @@
use crate::tfhe::bdd_arithmetic::{BitCircuit, BitCircuitInfo, Circuit, GetBitCircuitInfo, Node};
use crate::tfhe::bdd_arithmetic::{BitCircuit, BitCircuitFamily, BitCircuitInfo, Circuit, Node};
pub(crate) enum AnyBitCircuit {
B0(BitCircuit<4>),
B1(BitCircuit<4>),
@@ -72,16 +72,9 @@ impl BitCircuitInfo for AnyBitCircuit {
}
}
impl GetBitCircuitInfo<u32> for Circuit<AnyBitCircuit, 32usize> {
fn input_size(&self) -> usize {
2 * u32::BITS as usize
}
fn output_size(&self) -> usize {
u32::BITS as usize
}
fn get_circuit(&self, bit: usize) -> (&[Node], usize) {
self.0[bit].info()
}
impl BitCircuitFamily for AnyBitCircuit {
const INPUT_BITS: usize = 64;
const OUTPUT_BITS: usize = 32;
}
pub(crate) static OUTPUT_CIRCUITS: Circuit<AnyBitCircuit, 32usize> = Circuit([

View File

@@ -1,4 +1,4 @@
use crate::tfhe::bdd_arithmetic::{BitCircuit, BitCircuitInfo, Circuit, GetBitCircuitInfo, Node};
use crate::tfhe::bdd_arithmetic::{BitCircuit, BitCircuitFamily, BitCircuitInfo, Circuit, Node};
pub(crate) enum AnyBitCircuit {
B0(BitCircuit<4>),
B1(BitCircuit<4>),
@@ -72,16 +72,9 @@ impl BitCircuitInfo for AnyBitCircuit {
}
}
impl GetBitCircuitInfo<u32> for Circuit<AnyBitCircuit, 32usize> {
fn input_size(&self) -> usize {
2 * u32::BITS as usize
}
fn output_size(&self) -> usize {
u32::BITS as usize
}
fn get_circuit(&self, bit: usize) -> (&[Node], usize) {
self.0[bit].info()
}
impl BitCircuitFamily for AnyBitCircuit {
const INPUT_BITS: usize = 64;
const OUTPUT_BITS: usize = 32;
}
pub(crate) static OUTPUT_CIRCUITS: Circuit<AnyBitCircuit, 32usize> = Circuit([

View File

@@ -1,4 +1,4 @@
use crate::tfhe::bdd_arithmetic::{BitCircuit, BitCircuitInfo, Circuit, GetBitCircuitInfo, Node};
use crate::tfhe::bdd_arithmetic::{BitCircuit, BitCircuitFamily, BitCircuitInfo, Circuit, Node};
pub(crate) enum AnyBitCircuit {
B0(BitCircuit<12>),
B1(BitCircuit<18>),
@@ -72,16 +72,9 @@ impl BitCircuitInfo for AnyBitCircuit {
}
}
impl GetBitCircuitInfo<u32> for Circuit<AnyBitCircuit, 32usize> {
fn input_size(&self) -> usize {
2 * u32::BITS as usize
}
fn output_size(&self) -> usize {
u32::BITS as usize
}
fn get_circuit(&self, bit: usize) -> (&[Node], usize) {
self.0[bit].info()
}
impl BitCircuitFamily for AnyBitCircuit {
const INPUT_BITS: usize = 37;
const OUTPUT_BITS: usize = 32;
}
pub(crate) static OUTPUT_CIRCUITS: Circuit<AnyBitCircuit, 32usize> = Circuit([

View File

@@ -1,4 +1,4 @@
use crate::tfhe::bdd_arithmetic::{BitCircuit, BitCircuitInfo, Circuit, GetBitCircuitInfo, Node};
use crate::tfhe::bdd_arithmetic::{BitCircuit, BitCircuitFamily, BitCircuitInfo, Circuit, Node};
pub(crate) enum AnyBitCircuit {
B0(BitCircuit<256>),
}
@@ -10,16 +10,9 @@ impl BitCircuitInfo for AnyBitCircuit {
}
}
impl GetBitCircuitInfo<u32> for Circuit<AnyBitCircuit, 1usize> {
fn input_size(&self) -> usize {
2 * u32::BITS as usize
}
fn output_size(&self) -> usize {
1
}
fn get_circuit(&self, bit: usize) -> (&[Node], usize) {
self.0[bit].info()
}
impl BitCircuitFamily for AnyBitCircuit {
const INPUT_BITS: usize = 64;
const OUTPUT_BITS: usize = 1;
}
pub(crate) static OUTPUT_CIRCUITS: Circuit<AnyBitCircuit, 1usize> = Circuit([AnyBitCircuit::B0(BitCircuit::new(

View File

@@ -1,4 +1,4 @@
use crate::tfhe::bdd_arithmetic::{BitCircuit, BitCircuitInfo, Circuit, GetBitCircuitInfo, Node};
use crate::tfhe::bdd_arithmetic::{BitCircuit, BitCircuitFamily, BitCircuitInfo, Circuit, Node};
pub(crate) enum AnyBitCircuit {
B0(BitCircuit<256>),
}
@@ -10,16 +10,9 @@ impl BitCircuitInfo for AnyBitCircuit {
}
}
impl GetBitCircuitInfo<u32> for Circuit<AnyBitCircuit, 1usize> {
fn input_size(&self) -> usize {
2 * u32::BITS as usize
}
fn output_size(&self) -> usize {
1
}
fn get_circuit(&self, bit: usize) -> (&[Node], usize) {
self.0[bit].info()
}
impl BitCircuitFamily for AnyBitCircuit {
const INPUT_BITS: usize = 64;
const OUTPUT_BITS: usize = 1;
}
pub(crate) static OUTPUT_CIRCUITS: Circuit<AnyBitCircuit, 1usize> = Circuit([AnyBitCircuit::B0(BitCircuit::new(

View File

@@ -1,4 +1,4 @@
use crate::tfhe::bdd_arithmetic::{BitCircuit, BitCircuitInfo, Circuit, GetBitCircuitInfo, Node};
use crate::tfhe::bdd_arithmetic::{BitCircuit, BitCircuitFamily, BitCircuitInfo, Circuit, Node};
pub(crate) enum AnyBitCircuit {
B0(BitCircuit<192>),
B1(BitCircuit<186>),
@@ -72,16 +72,9 @@ impl BitCircuitInfo for AnyBitCircuit {
}
}
impl GetBitCircuitInfo<u32> for Circuit<AnyBitCircuit, 32usize> {
fn input_size(&self) -> usize {
2 * u32::BITS as usize
}
fn output_size(&self) -> usize {
u32::BITS as usize
}
fn get_circuit(&self, bit: usize) -> (&[Node], usize) {
self.0[bit].info()
}
impl BitCircuitFamily for AnyBitCircuit {
const INPUT_BITS: usize = 37;
const OUTPUT_BITS: usize = 32;
}
pub(crate) static OUTPUT_CIRCUITS: Circuit<AnyBitCircuit, 32usize> = Circuit([

View File

@@ -1,4 +1,4 @@
use crate::tfhe::bdd_arithmetic::{BitCircuit, BitCircuitInfo, Circuit, GetBitCircuitInfo, Node};
use crate::tfhe::bdd_arithmetic::{BitCircuit, BitCircuitFamily, BitCircuitInfo, Circuit, Node};
pub(crate) enum AnyBitCircuit {
B0(BitCircuit<192>),
B1(BitCircuit<192>),
@@ -72,16 +72,9 @@ impl BitCircuitInfo for AnyBitCircuit {
}
}
impl GetBitCircuitInfo<u32> for Circuit<AnyBitCircuit, 32usize> {
fn input_size(&self) -> usize {
2 * u32::BITS as usize
}
fn output_size(&self) -> usize {
u32::BITS as usize
}
fn get_circuit(&self, bit: usize) -> (&[Node], usize) {
self.0[bit].info()
}
impl BitCircuitFamily for AnyBitCircuit {
const INPUT_BITS: usize = 37;
const OUTPUT_BITS: usize = 32;
}
pub(crate) static OUTPUT_CIRCUITS: Circuit<AnyBitCircuit, 32usize> = Circuit([

View File

@@ -1,4 +1,4 @@
use crate::tfhe::bdd_arithmetic::{BitCircuit, BitCircuitInfo, Circuit, GetBitCircuitInfo, Node};
use crate::tfhe::bdd_arithmetic::{BitCircuit, BitCircuitFamily, BitCircuitInfo, Circuit, Node};
pub(crate) enum AnyBitCircuit {
B0(BitCircuit<4>),
B1(BitCircuit<8>),
@@ -72,16 +72,9 @@ impl BitCircuitInfo for AnyBitCircuit {
}
}
impl GetBitCircuitInfo<u32> for Circuit<AnyBitCircuit, 32usize> {
fn input_size(&self) -> usize {
2 * u32::BITS as usize
}
fn output_size(&self) -> usize {
u32::BITS as usize
}
fn get_circuit(&self, bit: usize) -> (&[Node], usize) {
self.0[bit].info()
}
impl BitCircuitFamily for AnyBitCircuit {
const INPUT_BITS: usize = 64;
const OUTPUT_BITS: usize = 32;
}
pub(crate) static OUTPUT_CIRCUITS: Circuit<AnyBitCircuit, 32usize> = Circuit([

View File

@@ -1,4 +1,4 @@
use crate::tfhe::bdd_arithmetic::{BitCircuit, BitCircuitInfo, Circuit, GetBitCircuitInfo, Node};
use crate::tfhe::bdd_arithmetic::{BitCircuit, BitCircuitFamily, BitCircuitInfo, Circuit, Node};
pub(crate) enum AnyBitCircuit {
B0(BitCircuit<4>),
B1(BitCircuit<4>),
@@ -72,16 +72,9 @@ impl BitCircuitInfo for AnyBitCircuit {
}
}
impl GetBitCircuitInfo<u32> for Circuit<AnyBitCircuit, 32usize> {
fn input_size(&self) -> usize {
2 * u32::BITS as usize
}
fn output_size(&self) -> usize {
u32::BITS as usize
}
fn get_circuit(&self, bit: usize) -> (&[Node], usize) {
self.0[bit].info()
}
impl BitCircuitFamily for AnyBitCircuit {
const INPUT_BITS: usize = 64;
const OUTPUT_BITS: usize = 32;
}
pub(crate) static OUTPUT_CIRCUITS: Circuit<AnyBitCircuit, 32usize> = Circuit([