Struct snarkvm_wasm::nonnative::AllocatedNonNativeFieldVar[][src]

pub struct AllocatedNonNativeFieldVar<TargetField, BaseField> where
    BaseField: PrimeField,
    TargetField: PrimeField
{ pub limbs: Vec<FpGadget<BaseField>, Global>, pub num_of_additions_over_normal_form: BaseField, pub is_in_the_normal_form: bool, // some fields omitted }
Expand description

The allocated version of NonNativeFieldVar (introduced below)

Fields

limbs: Vec<FpGadget<BaseField>, Global>

The limbs, each of which is a BaseField gadget.

num_of_additions_over_normal_form: BaseField

Number of additions done over this gadget, using which the gadget decides when to reduce.

is_in_the_normal_form: bool

Whether the limb representation is the normal form (using only the bits specified in the parameters, and the representation is strictly within the range of TargetField).

Implementations

impl<TargetField, BaseField> AllocatedNonNativeFieldVar<TargetField, BaseField> where
    BaseField: PrimeField,
    TargetField: PrimeField
[src]

pub fn limbs_to_value(
    limbs: Vec<BaseField, Global>,
    optimization_type: OptimizationType
) -> TargetField
[src]

Obtain the value of limbs

pub fn value(&self) -> Result<TargetField, SynthesisError>[src]

Obtain the value of a nonnative field element

pub fn constant<CS>(
    cs: &mut CS,
    value: TargetField
) -> Result<AllocatedNonNativeFieldVar<TargetField, BaseField>, SynthesisError> where
    CS: ConstraintSystem<BaseField>, 
[src]

Obtain the nonnative field element of a constant value

pub fn one<CS>(
    cs: &mut CS
) -> Result<AllocatedNonNativeFieldVar<TargetField, BaseField>, SynthesisError> where
    CS: ConstraintSystem<BaseField>, 
[src]

Obtain the nonnative field element of one

pub fn zero<CS>(
    cs: &mut CS
) -> Result<AllocatedNonNativeFieldVar<TargetField, BaseField>, SynthesisError> where
    CS: ConstraintSystem<BaseField>, 
[src]

Obtain the nonnative field element of zero

pub fn add<CS>(
    &self,
    cs: &mut CS,
    other: &AllocatedNonNativeFieldVar<TargetField, BaseField>
) -> Result<AllocatedNonNativeFieldVar<TargetField, BaseField>, SynthesisError> where
    CS: ConstraintSystem<BaseField>, 
[src]

Add a nonnative field element

pub fn add_constant<CS>(
    &self,
    cs: &mut CS,
    other: &TargetField
) -> Result<AllocatedNonNativeFieldVar<TargetField, BaseField>, SynthesisError> where
    CS: ConstraintSystem<BaseField>, 
[src]

Add a constant

pub fn sub_without_reduce<CS>(
    &self,
    cs: &mut CS,
    other: &AllocatedNonNativeFieldVar<TargetField, BaseField>
) -> Result<AllocatedNonNativeFieldVar<TargetField, BaseField>, SynthesisError> where
    CS: ConstraintSystem<BaseField>, 
[src]

Subtract a nonnative field element, without the final reduction step

pub fn sub<CS>(
    &self,
    cs: &mut CS,
    other: &AllocatedNonNativeFieldVar<TargetField, BaseField>
) -> Result<AllocatedNonNativeFieldVar<TargetField, BaseField>, SynthesisError> where
    CS: ConstraintSystem<BaseField>, 
[src]

Subtract a nonnative field element

pub fn sub_constant<CS>(
    &self,
    cs: &mut CS,
    other: &TargetField
) -> Result<AllocatedNonNativeFieldVar<TargetField, BaseField>, SynthesisError> where
    CS: ConstraintSystem<BaseField>, 
[src]

Subtract a constant

pub fn mul<CS>(
    &self,
    cs: &mut CS,
    other: &AllocatedNonNativeFieldVar<TargetField, BaseField>
) -> Result<AllocatedNonNativeFieldVar<TargetField, BaseField>, SynthesisError> where
    CS: ConstraintSystem<BaseField>, 
[src]

Multiply a nonnative field element

pub fn mul_constant<CS>(
    &self,
    cs: &mut CS,
    other: &TargetField
) -> Result<AllocatedNonNativeFieldVar<TargetField, BaseField>, SynthesisError> where
    CS: ConstraintSystem<BaseField>, 
[src]

Multiply a constant

pub fn negate<CS>(
    &self,
    cs: &mut CS
) -> Result<AllocatedNonNativeFieldVar<TargetField, BaseField>, SynthesisError> where
    CS: ConstraintSystem<BaseField>, 
[src]

Compute the negate of a nonnative field element

pub fn inverse<CS>(
    &self,
    cs: &mut CS
) -> Result<AllocatedNonNativeFieldVar<TargetField, BaseField>, SynthesisError> where
    CS: ConstraintSystem<BaseField>, 
[src]

Compute the inverse of a nonnative field element

pub fn get_limbs_representations(
    elem: &TargetField,
    optimization_type: OptimizationType
) -> Result<Vec<BaseField, Global>, SynthesisError>
[src]

Convert a TargetField element into limbs (not constraints) This is an internal function that would be reused by a number of other functions

pub fn get_limbs_representations_from_big_integer(
    elem: &<TargetField as PrimeField>::BigInteger,
    optimization_type: OptimizationType
) -> Result<Vec<BaseField, Global>, SynthesisError>
[src]

Obtain the limbs directly from a big int

pub fn mul_without_reduce<CS>(
    &self,
    cs: &mut CS,
    other: &AllocatedNonNativeFieldVar<TargetField, BaseField>
) -> Result<AllocatedNonNativeFieldMulResultVar<TargetField, BaseField>, SynthesisError> where
    CS: ConstraintSystem<BaseField>, 
[src]

For advanced use, multiply and output the intermediate representations (without reduction) This intermediate representations can be added with each other, and they can later be reduced back to the NonNativeFieldVar.

Trait Implementations

impl<TargetField, BaseField> AllocGadget<TargetField, BaseField> for AllocatedNonNativeFieldVar<TargetField, BaseField> where
    BaseField: PrimeField,
    TargetField: PrimeField
[src]

pub fn alloc_constant<FN, T, CS>(
    cs: CS,
    value_gen: FN
) -> Result<AllocatedNonNativeFieldVar<TargetField, BaseField>, SynthesisError> where
    CS: ConstraintSystem<BaseField>,
    T: Borrow<TargetField>,
    FN: FnOnce() -> Result<T, SynthesisError>, 
[src]

pub fn alloc<FN, T, CS>(
    cs: CS,
    value_gen: FN
) -> Result<AllocatedNonNativeFieldVar<TargetField, BaseField>, SynthesisError> where
    CS: ConstraintSystem<BaseField>,
    T: Borrow<TargetField>,
    FN: FnOnce() -> Result<T, SynthesisError>, 
[src]

pub fn alloc_input<FN, T, CS>(
    cs: CS,
    value_gen: FN
) -> Result<AllocatedNonNativeFieldVar<TargetField, BaseField>, SynthesisError> where
    CS: ConstraintSystem<BaseField>,
    T: Borrow<TargetField>,
    FN: FnOnce() -> Result<T, SynthesisError>, 
[src]

fn alloc_checked<Fn, T, CS>(cs: CS, f: Fn) -> Result<Self, SynthesisError> where
    Fn: FnOnce() -> Result<T, SynthesisError>,
    CS: ConstraintSystem<F>,
    T: Borrow<V>, 
[src]

fn alloc_input_checked<Fn, T, CS>(cs: CS, f: Fn) -> Result<Self, SynthesisError> where
    Fn: FnOnce() -> Result<T, SynthesisError>,
    CS: ConstraintSystem<F>,
    T: Borrow<V>, 
[src]

impl<TargetField, BaseField> Clone for AllocatedNonNativeFieldVar<TargetField, BaseField> where
    BaseField: PrimeField,
    TargetField: PrimeField
[src]

pub fn clone(&self) -> AllocatedNonNativeFieldVar<TargetField, BaseField>[src]

Returns a copy of the value. Read more

fn clone_from(&mut self, source: &Self)1.0.0[src]

Performs copy-assignment from source. Read more

impl<TargetField, BaseField> CondSelectGadget<BaseField> for AllocatedNonNativeFieldVar<TargetField, BaseField> where
    BaseField: PrimeField,
    TargetField: PrimeField
[src]

pub fn conditionally_select<CS>(
    cs: CS,
    cond: &Boolean,
    first: &AllocatedNonNativeFieldVar<TargetField, BaseField>,
    second: &AllocatedNonNativeFieldVar<TargetField, BaseField>
) -> Result<AllocatedNonNativeFieldVar<TargetField, BaseField>, SynthesisError> where
    CS: ConstraintSystem<BaseField>, 
[src]

pub fn cost() -> usize[src]

impl<TargetField, BaseField> Debug for AllocatedNonNativeFieldVar<TargetField, BaseField> where
    BaseField: Debug + PrimeField,
    TargetField: Debug + PrimeField
[src]

pub fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>[src]

Formats the value using the given formatter. Read more

impl<TargetField, BaseField> From<AllocatedNonNativeFieldVar<TargetField, BaseField>> for NonNativeFieldVar<TargetField, BaseField> where
    BaseField: PrimeField,
    TargetField: PrimeField
[src]

pub fn from(
    other: AllocatedNonNativeFieldVar<TargetField, BaseField>
) -> NonNativeFieldVar<TargetField, BaseField>
[src]

Performs the conversion.

impl<TargetField, BaseField> ThreeBitCondNegLookupGadget<BaseField> for AllocatedNonNativeFieldVar<TargetField, BaseField> where
    BaseField: PrimeField,
    TargetField: PrimeField
[src]

type TableConstant = TargetField

pub fn three_bit_cond_neg_lookup<CS>(
    cs: CS,
    bits: &[Boolean],
    b0b1: &Boolean,
    constants: &[<AllocatedNonNativeFieldVar<TargetField, BaseField> as ThreeBitCondNegLookupGadget<BaseField>>::TableConstant]
) -> Result<AllocatedNonNativeFieldVar<TargetField, BaseField>, SynthesisError> where
    CS: ConstraintSystem<BaseField>, 
[src]

pub fn cost() -> usize[src]

impl<TargetField, BaseField> ToBitsBEGadget<BaseField> for AllocatedNonNativeFieldVar<TargetField, BaseField> where
    BaseField: PrimeField,
    TargetField: PrimeField
[src]

pub fn to_bits_be<CS>(
    &self,
    cs: CS
) -> Result<Vec<Boolean, Global>, SynthesisError> where
    CS: ConstraintSystem<BaseField>, 
[src]

pub fn to_bits_be_strict<CS>(
    &self,
    cs: CS
) -> Result<Vec<Boolean, Global>, SynthesisError> where
    CS: ConstraintSystem<BaseField>, 
[src]

Additionally checks if the produced list of booleans is ‘valid’.

impl<TargetField, BaseField> ToBitsLEGadget<BaseField> for AllocatedNonNativeFieldVar<TargetField, BaseField> where
    BaseField: PrimeField,
    TargetField: PrimeField
[src]

pub fn to_bits_le<CS>(
    &self,
    cs: CS
) -> Result<Vec<Boolean, Global>, SynthesisError> where
    CS: ConstraintSystem<BaseField>, 
[src]

pub fn to_bits_le_strict<CS>(
    &self,
    cs: CS
) -> Result<Vec<Boolean, Global>, SynthesisError> where
    CS: ConstraintSystem<BaseField>, 
[src]

Additionally checks if the produced list of booleans is ‘valid’.

impl<TargetField, BaseField> ToBytesGadget<BaseField> for AllocatedNonNativeFieldVar<TargetField, BaseField> where
    BaseField: PrimeField,
    TargetField: PrimeField
[src]

pub fn to_bytes<CS>(&self, cs: CS) -> Result<Vec<UInt8, Global>, SynthesisError> where
    CS: ConstraintSystem<BaseField>, 
[src]

pub fn to_bytes_strict<CS>(
    &self,
    cs: CS
) -> Result<Vec<UInt8, Global>, SynthesisError> where
    CS: ConstraintSystem<BaseField>, 
[src]

Additionally checks if the produced list of booleans is ‘valid’.

impl<TargetField, BaseField> TwoBitLookupGadget<BaseField> for AllocatedNonNativeFieldVar<TargetField, BaseField> where
    BaseField: PrimeField,
    TargetField: PrimeField
[src]

type TableConstant = TargetField

pub fn two_bit_lookup<CS>(
    cs: CS,
    bits: &[Boolean],
    constants: &[<AllocatedNonNativeFieldVar<TargetField, BaseField> as TwoBitLookupGadget<BaseField>>::TableConstant]
) -> Result<AllocatedNonNativeFieldVar<TargetField, BaseField>, SynthesisError> where
    CS: ConstraintSystem<BaseField>, 
[src]

pub fn cost() -> usize[src]

Auto Trait Implementations

impl<TargetField, BaseField> RefUnwindSafe for AllocatedNonNativeFieldVar<TargetField, BaseField> where
    BaseField: RefUnwindSafe,
    TargetField: RefUnwindSafe

impl<TargetField, BaseField> Send for AllocatedNonNativeFieldVar<TargetField, BaseField>

impl<TargetField, BaseField> Sync for AllocatedNonNativeFieldVar<TargetField, BaseField>

impl<TargetField, BaseField> Unpin for AllocatedNonNativeFieldVar<TargetField, BaseField> where
    BaseField: Unpin,
    TargetField: Unpin

impl<TargetField, BaseField> UnwindSafe for AllocatedNonNativeFieldVar<TargetField, BaseField> where
    BaseField: UnwindSafe,
    TargetField: UnwindSafe

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

pub fn type_id(&self) -> TypeId[src]

Gets the TypeId of self. Read more

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

pub fn borrow(&self) -> &T[src]

Immutably borrows from an owned value. Read more

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

pub fn borrow_mut(&mut self) -> &mut T[src]

Mutably borrows from an owned value. Read more

impl<T> Conv for T

fn conv<T>(self) -> T where
    Self: Into<T>, 

Converts self into T using Into<T>. Read more

impl<T> FmtForward for T

fn fmt_binary(self) -> FmtBinary<Self> where
    Self: Binary

Causes self to use its Binary implementation when Debug-formatted.

fn fmt_display(self) -> FmtDisplay<Self> where
    Self: Display

Causes self to use its Display implementation when Debug-formatted. Read more

fn fmt_lower_exp(self) -> FmtLowerExp<Self> where
    Self: LowerExp

Causes self to use its LowerExp implementation when Debug-formatted. Read more

fn fmt_lower_hex(self) -> FmtLowerHex<Self> where
    Self: LowerHex

Causes self to use its LowerHex implementation when Debug-formatted. Read more

fn fmt_octal(self) -> FmtOctal<Self> where
    Self: Octal

Causes self to use its Octal implementation when Debug-formatted.

fn fmt_pointer(self) -> FmtPointer<Self> where
    Self: Pointer

Causes self to use its Pointer implementation when Debug-formatted. Read more

fn fmt_upper_exp(self) -> FmtUpperExp<Self> where
    Self: UpperExp

Causes self to use its UpperExp implementation when Debug-formatted. Read more

fn fmt_upper_hex(self) -> FmtUpperHex<Self> where
    Self: UpperHex

Causes self to use its UpperHex implementation when Debug-formatted. Read more

impl<T> From<T> for T[src]

pub fn from(t: T) -> T[src]

Performs the conversion.

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

pub fn into(self) -> U[src]

Performs the conversion.

impl<T> Pipe for T where
    T: ?Sized

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R

Pipes by value. This is generally the method you want to use. Read more

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R where
    R: 'a, 

Borrows self and passes that borrow into the pipe function. Read more

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R where
    R: 'a, 

Mutably borrows self and passes that borrow into the pipe function. Read more

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R where
    Self: Borrow<B>,
    B: 'a + ?Sized,
    R: 'a, 

Borrows self, then passes self.borrow() into the pipe function. Read more

fn pipe_borrow_mut<'a, B, R>(
    &'a mut self,
    func: impl FnOnce(&'a mut B) -> R
) -> R where
    Self: BorrowMut<B>,
    B: 'a + ?Sized,
    R: 'a, 

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R where
    Self: AsRef<U>,
    R: 'a,
    U: 'a + ?Sized

Borrows self, then passes self.as_ref() into the pipe function.

fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R where
    Self: AsMut<U>,
    R: 'a,
    U: 'a + ?Sized

Mutably borrows self, then passes self.as_mut() into the pipe function. Read more

fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R where
    Self: Deref<Target = T>,
    T: 'a + ?Sized,
    R: 'a, 

Borrows self, then passes self.deref() into the pipe function.

fn pipe_deref_mut<'a, T, R>(
    &'a mut self,
    func: impl FnOnce(&'a mut T) -> R
) -> R where
    Self: DerefMut<Target = T> + Deref,
    T: 'a + ?Sized,
    R: 'a, 

Mutably borrows self, then passes self.deref_mut() into the pipe function. Read more

impl<T> Pointable for T

pub const ALIGN: usize

The alignment of pointer.

type Init = T

The type for initializers.

pub unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more

pub unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more

pub unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more

pub unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more

impl<T> Same<T> for T

type Output = T

Should always be Self

impl<T> Tap for T

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self where
    Self: Borrow<B>,
    B: ?Sized

Immutable access to the Borrow<B> of a value. Read more

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self where
    Self: BorrowMut<B>,
    B: ?Sized

Mutable access to the BorrowMut<B> of a value. Read more

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self where
    Self: AsRef<R>,
    R: ?Sized

Immutable access to the AsRef<R> view of a value. Read more

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self where
    Self: AsMut<R>,
    R: ?Sized

Mutable access to the AsMut<R> view of a value. Read more

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self where
    Self: Deref<Target = T>,
    T: ?Sized

Immutable access to the Deref::Target of a value. Read more

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self where
    Self: DerefMut<Target = T> + Deref,
    T: ?Sized

Mutable access to the Deref::Target of a value. Read more

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds. Read more

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self where
    Self: Borrow<B>,
    B: ?Sized

Calls .tap_borrow() only in debug builds, and is erased in release builds. Read more

fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self where
    Self: BorrowMut<B>,
    B: ?Sized

Calls .tap_borrow_mut() only in debug builds, and is erased in release builds. Read more

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self where
    Self: AsRef<R>,
    R: ?Sized

Calls .tap_ref() only in debug builds, and is erased in release builds. Read more

fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self where
    Self: AsMut<R>,
    R: ?Sized

Calls .tap_ref_mut() only in debug builds, and is erased in release builds. Read more

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self where
    Self: Deref<Target = T>,
    T: ?Sized

Calls .tap_deref() only in debug builds, and is erased in release builds. Read more

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self where
    Self: DerefMut<Target = T> + Deref,
    T: ?Sized

Calls .tap_deref_mut() only in debug builds, and is erased in release builds. Read more

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

pub fn to_owned(&self) -> T[src]

Creates owned data from borrowed data, usually by cloning. Read more

pub fn clone_into(&self, target: &mut T)[src]

🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

Uses borrowed data to replace owned data, usually by cloning. Read more

impl<T> TryConv for T

fn try_conv<T>(self) -> Result<T, Self::Error> where
    Self: TryInto<T>, 

Attempts to convert self into T using TryInto<T>. Read more

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]

Performs the conversion.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]

Performs the conversion.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>, 

pub fn vzip(self) -> V