use crate::tfhe::bdd_arithmetic::{BitCircuit, BitCircuitFamily, BitCircuitInfo, Circuit, Node}; pub(crate) enum AnyBitCircuit { B0(BitCircuit<256>), } impl BitCircuitInfo for AnyBitCircuit { fn info(&self) -> (&[Node], usize) { match self { AnyBitCircuit::B0(bit_circuit) => (bit_circuit.nodes.as_ref(), bit_circuit.max_inter_state), } } } impl BitCircuitFamily for AnyBitCircuit { const INPUT_BITS: usize = 64; const OUTPUT_BITS: usize = 1; } pub(crate) static OUTPUT_CIRCUITS: Circuit = Circuit([AnyBitCircuit::B0(BitCircuit::new( [ Node::Copy, Node::Copy, Node::None, Node::Cmux(32, 1, 0), Node::Copy, Node::Copy, Node::None, Node::Cmux(0, 0, 3), Node::Copy, Node::Copy, Node::Cmux(33, 3, 0), Node::Cmux(33, 1, 3), Node::Copy, Node::Copy, Node::Cmux(1, 2, 3), Node::None, Node::Copy, Node::Copy, Node::Cmux(34, 1, 2), Node::Cmux(34, 2, 0), Node::Copy, Node::Copy, Node::None, Node::Cmux(2, 3, 2), Node::Copy, Node::Copy, Node::Cmux(35, 1, 3), Node::Cmux(35, 3, 0), Node::Copy, Node::Copy, Node::Cmux(3, 3, 2), Node::None, Node::Copy, Node::Copy, Node::Cmux(36, 1, 2), Node::Cmux(36, 2, 0), Node::Copy, Node::Copy, Node::Cmux(4, 3, 2), Node::None, Node::Copy, Node::Copy, Node::Cmux(37, 1, 2), Node::Cmux(37, 2, 0), Node::Copy, Node::Copy, Node::Cmux(5, 3, 2), Node::None, Node::Copy, Node::Copy, Node::Cmux(38, 1, 2), Node::Cmux(38, 2, 0), Node::Copy, Node::Copy, Node::None, Node::Cmux(6, 3, 2), Node::Copy, Node::Copy, Node::Cmux(39, 1, 3), Node::Cmux(39, 3, 0), Node::Copy, Node::Copy, Node::None, Node::Cmux(7, 3, 2), Node::Copy, Node::Copy, Node::Cmux(40, 3, 0), Node::Cmux(40, 1, 3), Node::Copy, Node::Copy, Node::None, Node::Cmux(8, 2, 3), Node::Copy, Node::Copy, Node::Cmux(41, 1, 3), Node::Cmux(41, 3, 0), Node::Copy, Node::Copy, Node::None, Node::Cmux(9, 3, 2), Node::Copy, Node::Copy, Node::Cmux(42, 1, 3), Node::Cmux(42, 3, 0), Node::Copy, Node::Copy, Node::Cmux(10, 3, 2), Node::None, Node::Copy, Node::Copy, Node::Cmux(43, 1, 2), Node::Cmux(43, 2, 0), Node::Copy, Node::Copy, Node::Cmux(11, 3, 2), Node::None, Node::Copy, Node::Copy, Node::Cmux(44, 2, 0), Node::Cmux(44, 1, 2), Node::Copy, Node::Copy, Node::Cmux(12, 2, 3), Node::None, Node::Copy, Node::Copy, Node::Cmux(45, 2, 0), Node::Cmux(45, 1, 2), Node::Copy, Node::Copy, Node::None, Node::Cmux(13, 2, 3), Node::Copy, Node::Copy, Node::Cmux(46, 1, 3), Node::Cmux(46, 3, 0), Node::Copy, Node::Copy, Node::Cmux(14, 3, 2), Node::None, Node::Copy, Node::Copy, Node::Cmux(47, 2, 0), Node::Cmux(47, 1, 2), Node::Copy, Node::Copy, Node::Cmux(15, 2, 3), Node::None, Node::Copy, Node::Copy, Node::Cmux(48, 2, 0), Node::Cmux(48, 1, 2), Node::Copy, Node::Copy, Node::Cmux(16, 2, 3), Node::None, Node::Copy, Node::Copy, Node::Cmux(49, 1, 2), Node::Cmux(49, 2, 0), Node::Copy, Node::Copy, Node::Cmux(17, 3, 2), Node::None, Node::Copy, Node::Copy, Node::Cmux(50, 1, 2), Node::Cmux(50, 2, 0), Node::Copy, Node::Copy, Node::Cmux(18, 3, 2), Node::None, Node::Copy, Node::Copy, Node::Cmux(51, 2, 0), Node::Cmux(51, 1, 2), Node::Copy, Node::Copy, Node::Cmux(19, 2, 3), Node::None, Node::Copy, Node::Copy, Node::Cmux(52, 1, 2), Node::Cmux(52, 2, 0), Node::Copy, Node::Copy, Node::None, Node::Cmux(20, 3, 2), Node::Copy, Node::Copy, Node::Cmux(53, 1, 3), Node::Cmux(53, 3, 0), Node::Copy, Node::Copy, Node::None, Node::Cmux(21, 3, 2), Node::Copy, Node::Copy, Node::Cmux(54, 1, 3), Node::Cmux(54, 3, 0), Node::Copy, Node::Copy, Node::None, Node::Cmux(22, 3, 2), Node::Copy, Node::Copy, Node::Cmux(55, 3, 0), Node::Cmux(55, 1, 3), Node::Copy, Node::Copy, Node::Cmux(23, 2, 3), Node::None, Node::Copy, Node::Copy, Node::Cmux(56, 2, 0), Node::Cmux(56, 1, 2), Node::Copy, Node::Copy, Node::Cmux(24, 2, 3), Node::None, Node::Copy, Node::Copy, Node::Cmux(57, 2, 0), Node::Cmux(57, 1, 2), Node::Copy, Node::Copy, Node::None, Node::Cmux(25, 2, 3), Node::Copy, Node::Copy, Node::Cmux(58, 1, 3), Node::Cmux(58, 3, 0), Node::Copy, Node::Copy, Node::Cmux(26, 3, 2), Node::None, Node::Copy, Node::Copy, Node::Cmux(59, 1, 2), Node::Cmux(59, 2, 0), Node::Copy, Node::Copy, Node::None, Node::Cmux(27, 3, 2), Node::Copy, Node::Copy, Node::Cmux(60, 3, 0), Node::Cmux(60, 1, 3), Node::Copy, Node::Copy, Node::Cmux(28, 2, 3), Node::None, Node::Copy, Node::Copy, Node::Cmux(61, 2, 0), Node::Cmux(61, 1, 2), Node::Copy, Node::Copy, Node::None, Node::Cmux(29, 2, 3), Node::Copy, Node::Copy, Node::Cmux(62, 1, 3), Node::Cmux(62, 3, 0), Node::Copy, Node::Copy, Node::None, Node::Cmux(30, 3, 2), Node::Cmux(63, 3, 1), Node::None, Node::None, Node::Cmux(63, 0, 3), Node::Cmux(31, 0, 3), Node::None, Node::None, Node::None, ], 4, ))]);