pub enum NonNativeFieldMulResultVar<TargetField: PrimeField, BaseField: PrimeField> {
Constant(TargetField),
Var(AllocatedNonNativeFieldMulResultVar<TargetField, BaseField>),
}
Expand description
An intermediate representation especially for the result of a multiplication, containing more limbs. It is intended for advanced usage to improve the efficiency.
That is, instead of calling mul
, one can call mul_without_reduce
to
obtain this intermediate representation, which can still be added.
Then, one can call reduce
to reduce it back to NonNativeFieldVar
.
This may help cut the number of reduce operations.
Variants§
Constant(TargetField)
as a constant
Var(AllocatedNonNativeFieldMulResultVar<TargetField, BaseField>)
as an allocated gadget
Implementations§
source§impl<TargetField: PrimeField, BaseField: PrimeField> NonNativeFieldMulResultVar<TargetField, BaseField>
impl<TargetField: PrimeField, BaseField: PrimeField> NonNativeFieldMulResultVar<TargetField, BaseField>
sourcepub fn reduce(&self) -> R1CSResult<NonNativeFieldVar<TargetField, BaseField>>
pub fn reduce(&self) -> R1CSResult<NonNativeFieldVar<TargetField, BaseField>>
Reduce the NonNativeFieldMulResultVar
back to NonNativeFieldVar
Trait Implementations§
source§impl<'a, TargetField: PrimeField, BaseField: PrimeField> Add<&'a NonNativeFieldMulResultVar<TargetField, BaseField>> for &'a NonNativeFieldMulResultVar<TargetField, BaseField>
impl<'a, TargetField: PrimeField, BaseField: PrimeField> Add<&'a NonNativeFieldMulResultVar<TargetField, BaseField>> for &'a NonNativeFieldMulResultVar<TargetField, BaseField>
source§impl<'a, TargetField: PrimeField, BaseField: PrimeField> Add<&'a NonNativeFieldMulResultVar<TargetField, BaseField>> for NonNativeFieldMulResultVar<TargetField, BaseField>
impl<'a, TargetField: PrimeField, BaseField: PrimeField> Add<&'a NonNativeFieldMulResultVar<TargetField, BaseField>> for NonNativeFieldMulResultVar<TargetField, BaseField>
§type Output = NonNativeFieldMulResultVar<TargetField, BaseField>
type Output = NonNativeFieldMulResultVar<TargetField, BaseField>
The resulting type after applying the
+
operator.source§impl<'a, TargetField: PrimeField, BaseField: PrimeField> Add<NonNativeFieldMulResultVar<TargetField, BaseField>> for &'a NonNativeFieldMulResultVar<TargetField, BaseField>
impl<'a, TargetField: PrimeField, BaseField: PrimeField> Add<NonNativeFieldMulResultVar<TargetField, BaseField>> for &'a NonNativeFieldMulResultVar<TargetField, BaseField>
§type Output = NonNativeFieldMulResultVar<TargetField, BaseField>
type Output = NonNativeFieldMulResultVar<TargetField, BaseField>
The resulting type after applying the
+
operator.source§impl<TargetField: PrimeField, BaseField: PrimeField> Add<NonNativeFieldMulResultVar<TargetField, BaseField>> for NonNativeFieldMulResultVar<TargetField, BaseField>
impl<TargetField: PrimeField, BaseField: PrimeField> Add<NonNativeFieldMulResultVar<TargetField, BaseField>> for NonNativeFieldMulResultVar<TargetField, BaseField>
§type Output = NonNativeFieldMulResultVar<TargetField, BaseField>
type Output = NonNativeFieldMulResultVar<TargetField, BaseField>
The resulting type after applying the
+
operator.source§impl<'a, TargetField: PrimeField, BaseField: PrimeField> Add<TargetField> for &'a NonNativeFieldMulResultVar<TargetField, BaseField>
impl<'a, TargetField: PrimeField, BaseField: PrimeField> Add<TargetField> for &'a NonNativeFieldMulResultVar<TargetField, BaseField>
source§impl<TargetField: PrimeField, BaseField: PrimeField> Add<TargetField> for NonNativeFieldMulResultVar<TargetField, BaseField>
impl<TargetField: PrimeField, BaseField: PrimeField> Add<TargetField> for NonNativeFieldMulResultVar<TargetField, BaseField>
source§impl<'a, TargetField: PrimeField, BaseField: PrimeField> AddAssign<&'a NonNativeFieldMulResultVar<TargetField, BaseField>> for NonNativeFieldMulResultVar<TargetField, BaseField>
impl<'a, TargetField: PrimeField, BaseField: PrimeField> AddAssign<&'a NonNativeFieldMulResultVar<TargetField, BaseField>> for NonNativeFieldMulResultVar<TargetField, BaseField>
source§fn add_assign(
&mut self,
other: &'a NonNativeFieldMulResultVar<TargetField, BaseField>
)
fn add_assign(
&mut self,
other: &'a NonNativeFieldMulResultVar<TargetField, BaseField>
)
Performs the
+=
operation. Read moresource§impl<TargetField: PrimeField, BaseField: PrimeField> AddAssign<NonNativeFieldMulResultVar<TargetField, BaseField>> for NonNativeFieldMulResultVar<TargetField, BaseField>
impl<TargetField: PrimeField, BaseField: PrimeField> AddAssign<NonNativeFieldMulResultVar<TargetField, BaseField>> for NonNativeFieldMulResultVar<TargetField, BaseField>
source§fn add_assign(
&mut self,
other: NonNativeFieldMulResultVar<TargetField, BaseField>
)
fn add_assign(
&mut self,
other: NonNativeFieldMulResultVar<TargetField, BaseField>
)
Performs the
+=
operation. Read moresource§impl<TargetField: PrimeField, BaseField: PrimeField> AddAssign<TargetField> for NonNativeFieldMulResultVar<TargetField, BaseField>
impl<TargetField: PrimeField, BaseField: PrimeField> AddAssign<TargetField> for NonNativeFieldMulResultVar<TargetField, BaseField>
source§fn add_assign(&mut self, other: TargetField)
fn add_assign(&mut self, other: TargetField)
Performs the
+=
operation. Read moresource§impl<TargetField: Debug + PrimeField, BaseField: Debug + PrimeField> Debug for NonNativeFieldMulResultVar<TargetField, BaseField>
impl<TargetField: Debug + PrimeField, BaseField: Debug + PrimeField> Debug for NonNativeFieldMulResultVar<TargetField, BaseField>
source§impl<TargetField: PrimeField, BaseField: PrimeField> From<&NonNativeFieldVar<TargetField, BaseField>> for NonNativeFieldMulResultVar<TargetField, BaseField>
impl<TargetField: PrimeField, BaseField: PrimeField> From<&NonNativeFieldVar<TargetField, BaseField>> for NonNativeFieldMulResultVar<TargetField, BaseField>
source§fn from(src: &NonNativeFieldVar<TargetField, BaseField>) -> Self
fn from(src: &NonNativeFieldVar<TargetField, BaseField>) -> Self
Converts to this type from the input type.