Struct ark_r1cs_std::fields::fp::AllocatedFp [−][src]
pub struct AllocatedFp<F: PrimeField> { pub variable: Variable, pub cs: ConstraintSystemRef<F>, // some fields omitted }
Expand description
Represents a variable in the constraint system whose value can be an arbitrary field element.
Fields
variable: Variable
The allocated variable corresponding to self
in self.cs
.
cs: ConstraintSystemRef<F>
The constraint system that self
was allocated in.
Implementations
Constructs a new AllocatedFp
from a (optional) value, a low-level
Variable, and a ConstraintSystemRef
.
Constructs Self
from a Boolean
: if other
is false, this outputs
zero
, else it outputs one
.
Returns the value assigned to self
in the underlying constraint system
(if a value was assigned).
Outputs self + other
.
This does not create any constraints.
Add many allocated Fp elements together.
This does not create any constraints and only creates one linear combination.
Outputs self - other
.
This does not create any constraints.
Output self + other
This does not create any constraints.
Output self - other
This does not create any constraints.
Output self * other
This does not create any constraints.
Output self + self
This does not create any constraints.
Sets self = -self
This does not create any constraints.
Outputs self * self
This requires one constraint.
Outputs result
such that result * self = 1
.
This requires one constraint.
This is a no-op for prime fields.
Enforces that self * other = result
.
This requires one constraint.
Enforces that self * self = result
.
This requires one constraint.
Outputs the bit self == other
.
This requires three constraints.
Outputs the bit self != other
.
This requires three constraints.
pub fn conditional_enforce_equal(
&self,
other: &Self,
should_enforce: &Boolean<F>
) -> Result<(), SynthesisError>
pub fn conditional_enforce_equal(
&self,
other: &Self,
should_enforce: &Boolean<F>
) -> Result<(), SynthesisError>
Enforces that self == other if should_enforce.is_eq(&Boolean::TRUE)
.
This requires one constraint.
pub fn conditional_enforce_not_equal(
&self,
other: &Self,
should_enforce: &Boolean<F>
) -> Result<(), SynthesisError>
pub fn conditional_enforce_not_equal(
&self,
other: &Self,
should_enforce: &Boolean<F>
) -> Result<(), SynthesisError>
Enforces that self != other if should_enforce.is_eq(&Boolean::TRUE)
.
This requires one constraint.
Trait Implementations
fn new_variable<T: Borrow<F>>(
cs: impl Into<Namespace<F>>,
f: impl FnOnce() -> Result<T, SynthesisError>,
mode: AllocationMode
) -> Result<Self, SynthesisError>
fn new_variable<T: Borrow<F>>(
cs: impl Into<Namespace<F>>,
f: impl FnOnce() -> Result<T, SynthesisError>,
mode: AllocationMode
) -> Result<Self, SynthesisError>
Allocates a new variable of type Self
in the ConstraintSystem
cs
.
The mode of allocation is decided by mode
. Read more
fn new_constant(
cs: impl Into<Namespace<F>>,
t: impl Borrow<V>
) -> Result<Self, SynthesisError>
fn new_constant(
cs: impl Into<Namespace<F>>,
t: impl Borrow<V>
) -> Result<Self, SynthesisError>
Allocates a new constant of type Self
in the ConstraintSystem
cs
. Read more
fn new_input<T: Borrow<V>>(
cs: impl Into<Namespace<F>>,
f: impl FnOnce() -> Result<T, SynthesisError>
) -> Result<Self, SynthesisError>
fn new_input<T: Borrow<V>>(
cs: impl Into<Namespace<F>>,
f: impl FnOnce() -> Result<T, SynthesisError>
) -> Result<Self, SynthesisError>
Allocates a new public input of type Self
in the ConstraintSystem
cs
. Read more
fn new_witness<T: Borrow<V>>(
cs: impl Into<Namespace<F>>,
f: impl FnOnce() -> Result<T, SynthesisError>
) -> Result<Self, SynthesisError>
fn new_witness<T: Borrow<V>>(
cs: impl Into<Namespace<F>>,
f: impl FnOnce() -> Result<T, SynthesisError>
) -> Result<Self, SynthesisError>
Allocates a new private witness of type Self
in the ConstraintSystem
cs
. Read more
fn conditionally_select(
cond: &Boolean<F>,
true_val: &Self,
false_val: &Self
) -> Result<Self, SynthesisError>
fn conditionally_select(
cond: &Boolean<F>,
true_val: &Self,
false_val: &Self
) -> Result<Self, SynthesisError>
If cond == &Boolean::TRUE
, then this returns true_value
; else,
returns false_value
. Read more
fn conditionally_select_power_of_two_vector(
position: &[Boolean<ConstraintF>],
values: &[Self]
) -> Result<Self, SynthesisError>
fn conditionally_select_power_of_two_vector(
position: &[Boolean<ConstraintF>],
values: &[Self]
) -> Result<Self, SynthesisError>
Returns an element of values
whose index in represented by position
.
position
is an array of boolean that represents an unsigned integer in big endian order. Read more
Performs the conversion.
type TableConstant = F
type TableConstant = F
The type of values being looked up.
fn three_bit_cond_neg_lookup(
b: &[Boolean<F>],
b0b1: &Boolean<F>,
c: &[Self::TableConstant]
) -> Result<Self, SynthesisError>
fn three_bit_cond_neg_lookup(
b: &[Boolean<F>],
b0b1: &Boolean<F>,
c: &[Self::TableConstant]
) -> Result<Self, SynthesisError>
Interprets the slice bits
as a two-bit integer b = bits[0] + (bits[1] << 1)
, and then outputs constants[b] * c
, where c = if bits[2] { -1 } else { 1 };
. Read more
Outputs the unique bit-wise decomposition of self
in little-endian
form.
This method enforces that the output is in the field, i.e.
it invokes Boolean::enforce_in_field_le
on the bit decomposition.
Outputs a possibly non-unique little-endian bit-wise representation of
self
. Read more
Outputs the canonical big-endian bit-wise representation of self
.
Outputs a possibly non-unique big-endian bit-wise representation of
self
. Read more
Outputs the unique byte decomposition of self
in little-endian
form.
This method enforces that the decomposition represents
an integer that is less than F::MODULUS
.
Outputs a possibly non-unique byte decomposition of self
. Read more
Converts self
to FpVar<ConstraintF>
variables.
Uses two bits to perform a lookup into a table
b
is little-endian: b[0]
is LSB.
type TableConstant = F
type TableConstant = F
The type of values being looked up.
fn two_bit_lookup(
b: &[Boolean<F>],
c: &[Self::TableConstant]
) -> Result<Self, SynthesisError>
fn two_bit_lookup(
b: &[Boolean<F>],
c: &[Self::TableConstant]
) -> Result<Self, SynthesisError>
Interprets the slice bits
as a two-bit integer b = bits[0] + (bits[1] << 1)
, and then outputs constants[b]
. Read more
Auto Trait Implementations
impl<F> !RefUnwindSafe for AllocatedFp<F>
impl<F> !Send for AllocatedFp<F>
impl<F> !Sync for AllocatedFp<F>
impl<F> Unpin for AllocatedFp<F> where
F: Unpin,
impl<F> !UnwindSafe for AllocatedFp<F>
Blanket Implementations
Mutably borrows from an owned value. Read more
Instruments this type with the provided Span
, returning an
Instrumented
wrapper. Read more
type Output = T
type Output = T
Should always be Self
pub fn vzip(self) -> V