pub struct CircuitAnalyzer { /* private fields */ }Expand description
A Fancy object which counts gates and depth of a
crate::circuit::Circuit.
Specifically, CircuitAnalyzer stores the number of inputs, ands, xors,
negations, constants, multiplications, additions, subtractions, and
multiplicative depth of the computation.
Implementations§
Source§impl CircuitAnalyzer
impl CircuitAnalyzer
Sourcepub fn new() -> CircuitAnalyzer
pub fn new() -> CircuitAnalyzer
Create a new CircuitAnalyzer.
Sourcepub fn nconstants(&self) -> usize
pub fn nconstants(&self) -> usize
The number of constant wires of the circuit.
Sourcepub fn eval<C: CircuitInputMapper<CircuitAnalyzer>>(
&mut self,
circuit: &C,
) -> Result<()>
pub fn eval<C: CircuitInputMapper<CircuitAnalyzer>>( &mut self, circuit: &C, ) -> Result<()>
Evaluate a circuit using CircuitAnalyzer.
The circuit needs to implement CircuitInputMapper as the circuit
analysis is input-size-dependent.
Trait Implementations§
Source§impl Clone for CircuitAnalyzer
impl Clone for CircuitAnalyzer
Source§fn clone(&self) -> CircuitAnalyzer
fn clone(&self) -> CircuitAnalyzer
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for CircuitAnalyzer
impl Debug for CircuitAnalyzer
Source§impl Default for CircuitAnalyzer
impl Default for CircuitAnalyzer
Source§fn default() -> CircuitAnalyzer
fn default() -> CircuitAnalyzer
Returns the “default value” for a type. Read more
Source§impl Display for CircuitAnalyzer
impl Display for CircuitAnalyzer
Source§impl Fancy for CircuitAnalyzer
impl Fancy for CircuitAnalyzer
Source§impl FancyArithmetic for CircuitAnalyzer
impl FancyArithmetic for CircuitAnalyzer
Source§impl FancyBinary for CircuitAnalyzer
impl FancyBinary for CircuitAnalyzer
Source§impl FancyEncode for CircuitAnalyzer
impl FancyEncode for CircuitAnalyzer
Source§fn receive_many(
&mut self,
moduli: &[u16],
_: &mut Channel<'_>,
) -> Result<Vec<Self::Item>>
fn receive_many( &mut self, moduli: &[u16], _: &mut Channel<'_>, ) -> Result<Vec<Self::Item>>
Receive many wires for unknown values.
Source§fn encode_many(
&mut self,
_: &[u16],
_: &[u16],
_: &mut Channel<'_>,
) -> Result<Vec<Self::Item>>
fn encode_many( &mut self, _: &[u16], _: &[u16], _: &mut Channel<'_>, ) -> Result<Vec<Self::Item>>
Encode many wires for known values.
Source§impl FancyOutput for CircuitAnalyzer
impl FancyOutput for CircuitAnalyzer
Source§impl FancyProj for CircuitAnalyzer
impl FancyProj for CircuitAnalyzer
Source§impl Ord for CircuitAnalyzer
impl Ord for CircuitAnalyzer
Source§fn cmp(&self, other: &CircuitAnalyzer) -> Ordering
fn cmp(&self, other: &CircuitAnalyzer) -> Ordering
1.21.0 · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read more
Source§impl PartialEq for CircuitAnalyzer
impl PartialEq for CircuitAnalyzer
Source§impl PartialOrd for CircuitAnalyzer
impl PartialOrd for CircuitAnalyzer
impl Eq for CircuitAnalyzer
impl StructuralPartialEq for CircuitAnalyzer
Auto Trait Implementations§
impl Freeze for CircuitAnalyzer
impl RefUnwindSafe for CircuitAnalyzer
impl Send for CircuitAnalyzer
impl Sync for CircuitAnalyzer
impl Unpin for CircuitAnalyzer
impl UnsafeUnpin for CircuitAnalyzer
impl UnwindSafe for CircuitAnalyzer
Blanket Implementations§
Source§impl<F> BinaryGadgets for F
impl<F> BinaryGadgets for F
Source§fn bin_encode(
&mut self,
value: u128,
nbits: usize,
channel: &mut Channel<'_>,
) -> Result<BinaryBundle<Self::Item>>
fn bin_encode( &mut self, value: u128, nbits: usize, channel: &mut Channel<'_>, ) -> Result<BinaryBundle<Self::Item>>
Encode a binary input bundle.
Source§fn bin_receive(
&mut self,
nbits: usize,
channel: &mut Channel<'_>,
) -> Result<BinaryBundle<Self::Item>>
fn bin_receive( &mut self, nbits: usize, channel: &mut Channel<'_>, ) -> Result<BinaryBundle<Self::Item>>
Receive an binary input bundle.
Source§fn bin_encode_many(
&mut self,
values: &[u128],
nbits: usize,
channel: &mut Channel<'_>,
) -> Result<Vec<BinaryBundle<Self::Item>>>
fn bin_encode_many( &mut self, values: &[u128], nbits: usize, channel: &mut Channel<'_>, ) -> Result<Vec<BinaryBundle<Self::Item>>>
Encode many binary input bundles.
Source§fn bin_receive_many(
&mut self,
ninputs: usize,
nbits: usize,
channel: &mut Channel<'_>,
) -> Result<Vec<BinaryBundle<Self::Item>>>
fn bin_receive_many( &mut self, ninputs: usize, nbits: usize, channel: &mut Channel<'_>, ) -> Result<Vec<BinaryBundle<Self::Item>>>
Receive many binary input bundles.
Source§fn bin_output(
&mut self,
x: &BinaryBundle<Self::Item>,
channel: &mut Channel<'_>,
) -> Result<Option<u128>>
fn bin_output( &mut self, x: &BinaryBundle<Self::Item>, channel: &mut Channel<'_>, ) -> Result<Option<u128>>
Output a binary bundle and interpret the result as a
u128.Source§fn bin_outputs(
&mut self,
xs: &[BinaryBundle<Self::Item>],
channel: &mut Channel<'_>,
) -> Result<Option<Vec<u128>>>
fn bin_outputs( &mut self, xs: &[BinaryBundle<Self::Item>], channel: &mut Channel<'_>, ) -> Result<Option<Vec<u128>>>
Output a slice of binary bundles and interpret the results as a
u128.Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<F> CrtGadgets for F
impl<F> CrtGadgets for F
Source§fn crt_encode(
&mut self,
value: u128,
modulus: u128,
channel: &mut Channel<'_>,
) -> Result<CrtBundle<Self::Item>>
fn crt_encode( &mut self, value: u128, modulus: u128, channel: &mut Channel<'_>, ) -> Result<CrtBundle<Self::Item>>
Encode a CRT input bundle.
Source§fn crt_receive(
&mut self,
modulus: u128,
channel: &mut Channel<'_>,
) -> Result<CrtBundle<Self::Item>>
fn crt_receive( &mut self, modulus: u128, channel: &mut Channel<'_>, ) -> Result<CrtBundle<Self::Item>>
Receive an CRT input bundle.
Source§fn crt_encode_many(
&mut self,
values: &[u128],
modulus: u128,
channel: &mut Channel<'_>,
) -> Result<Vec<CrtBundle<Self::Item>>>
fn crt_encode_many( &mut self, values: &[u128], modulus: u128, channel: &mut Channel<'_>, ) -> Result<Vec<CrtBundle<Self::Item>>>
Encode many CRT input bundles.
Source§fn crt_receive_many(
&mut self,
n: usize,
modulus: u128,
channel: &mut Channel<'_>,
) -> Result<Vec<CrtBundle<Self::Item>>>
fn crt_receive_many( &mut self, n: usize, modulus: u128, channel: &mut Channel<'_>, ) -> Result<Vec<CrtBundle<Self::Item>>>
Receive many CRT input bundles.
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> IsSameType<T> for T
impl<T> IsSameType<T> for T
§type EqualityProposition = TrueEqualityProposition
type EqualityProposition = TrueEqualityProposition
The [
EqualityProposition] that Self == T