poulpy/poulpy-schemes/src/tfhe/bdd_arithmetic/circuits/u32/or_codegen.rs
poulpy-schemes/src/tfhe/bdd_arithmetic/circuits/u32/or_codegen.rsRaw
1use crate::tfhe::bdd_arithmetic::{BitCircuit, BitCircuitInfo, Circuit, GetBitCircuitInfo, Node};
2pub(crate) enum AnyBitCircuit {
3 B0(BitCircuit<3, 2>),
4}
5
6impl BitCircuitInfo for AnyBitCircuit {
7 fn info(&self) -> (&[Node], &[usize], usize) {
8 match self {
9 AnyBitCircuit::B0(bit_circuit) => (
10 bit_circuit.nodes.as_ref(),
11 bit_circuit.levels.as_ref(),
12 bit_circuit.max_inter_state,
13 ),
14 }
15 }
16}
17
18impl GetBitCircuitInfo<u32> for Circuit<AnyBitCircuit, 1usize> {
19 fn input_size(&self) -> usize {
20 2 * u32::BITS as usize
21 }
22 fn output_size(&self) -> usize {
23 u32::BITS as usize
24 }
25 fn get_circuit(&self, _bit: usize) -> (&[Node], &[usize], usize) {
26 self.0[0].info()
27 }
28}
29
30pub(crate) static OUTPUT_CIRCUITS: Circuit<AnyBitCircuit, 1usize> = Circuit([AnyBitCircuit::B0(BitCircuit::new(
31 [Node::new(0, 0, 0), Node::new(1, 1, 0), Node::new(0, 1, 1)],
32 [0, 2],
33 2,
34))]);