mirror of
https://github.com/arnaucube/ark-r1cs-std.git
synced 2026-01-17 03:01:29 +01:00
Fix with latest arkworks version. (#95)
Co-authored-by: Pratyush Mishra <pratyushmishra@berkeley.edu>
This commit is contained in:
@@ -608,7 +608,8 @@ impl<F: Field> Boolean<F> {
|
||||
}
|
||||
}
|
||||
|
||||
/// Convert a little-endian bitwise representation of a field element to `FpVar<F>`
|
||||
/// Convert a little-endian bitwise representation of a field element to
|
||||
/// `FpVar<F>`
|
||||
#[tracing::instrument(target = "r1cs", skip(bits))]
|
||||
pub fn le_bits_to_fp_var(bits: &[Self]) -> Result<FpVar<F>, SynthesisError>
|
||||
where
|
||||
@@ -761,7 +762,6 @@ impl<F: Field> Boolean<F> {
|
||||
/// # Ok(())
|
||||
/// # }
|
||||
/// ```
|
||||
///
|
||||
#[tracing::instrument(target = "r1cs", skip(first, second))]
|
||||
pub fn select<T: CondSelectGadget<F>>(
|
||||
&self,
|
||||
|
||||
@@ -7,8 +7,7 @@ macro_rules! make_uint {
|
||||
#[doc = " type."]
|
||||
pub mod $mod_name {
|
||||
use ark_ff::{Field, One, PrimeField, Zero};
|
||||
use core::borrow::Borrow;
|
||||
use core::convert::TryFrom;
|
||||
use core::{borrow::Borrow, convert::TryFrom};
|
||||
use num_bigint::BigUint;
|
||||
use num_traits::cast::ToPrimitive;
|
||||
|
||||
@@ -87,7 +86,6 @@ macro_rules! make_uint {
|
||||
/// Construct `Self` from a slice of `Boolean`s.
|
||||
///
|
||||
/// # Panics
|
||||
///
|
||||
#[doc = "This method panics if `bits.len() != "]
|
||||
#[doc = $num_bits_doc]
|
||||
#[doc = "`."]
|
||||
@@ -142,8 +140,8 @@ macro_rules! make_uint {
|
||||
|
||||
/// Outputs `self ^ other`.
|
||||
///
|
||||
/// If at least one of `self` and `other` are constants, then this method
|
||||
/// *does not* create any constraints or variables.
|
||||
/// If at least one of `self` and `other` are constants, then this
|
||||
/// method *does not* create any constraints or variables.
|
||||
#[tracing::instrument(target = "r1cs", skip(self, other))]
|
||||
pub fn xor(&self, other: &Self) -> Result<Self, SynthesisError> {
|
||||
let mut result = self.clone();
|
||||
@@ -225,7 +223,8 @@ macro_rules! make_uint {
|
||||
Boolean::Not(ref bit) => {
|
||||
all_constants = false;
|
||||
|
||||
// Add coeff * (1 - bit_gadget) = coeff * ONE - coeff * bit_gadget
|
||||
// Add coeff * (1 - bit_gadget) = coeff * ONE - coeff *
|
||||
// bit_gadget
|
||||
lc = lc + (coeff, Variable::One) - (coeff, bit.variable());
|
||||
},
|
||||
Boolean::Constant(bit) => {
|
||||
|
||||
@@ -2,8 +2,11 @@ use ark_ff::{Field, PrimeField, ToConstraintField};
|
||||
|
||||
use ark_relations::r1cs::{ConstraintSystemRef, Namespace, SynthesisError};
|
||||
|
||||
use crate::fields::fp::{AllocatedFp, FpVar};
|
||||
use crate::{prelude::*, Assignment, ToConstraintFieldGadget, Vec};
|
||||
use crate::{
|
||||
fields::fp::{AllocatedFp, FpVar},
|
||||
prelude::*,
|
||||
Assignment, ToConstraintFieldGadget, Vec,
|
||||
};
|
||||
use core::{borrow::Borrow, convert::TryFrom};
|
||||
|
||||
/// Represents an interpretation of 8 `Boolean` objects as an
|
||||
@@ -335,9 +338,9 @@ impl<ConstraintF: Field> AllocVar<u8, ConstraintF> for UInt8<ConstraintF> {
|
||||
}
|
||||
}
|
||||
|
||||
/// Parses the `Vec<UInt8<ConstraintF>>` in fixed-sized `ConstraintF::MODULUS_BIT_SIZE - 1` chunks and
|
||||
/// converts each chunk, which is assumed to be little-endian, to its `FpVar<ConstraintF>`
|
||||
/// representation.
|
||||
/// Parses the `Vec<UInt8<ConstraintF>>` in fixed-sized
|
||||
/// `ConstraintF::MODULUS_BIT_SIZE - 1` chunks and converts each chunk, which is
|
||||
/// assumed to be little-endian, to its `FpVar<ConstraintF>` representation.
|
||||
/// This is the gadget counterpart to the `[u8]` implementation of
|
||||
/// [ToConstraintField](ark_ff::ToConstraintField).
|
||||
impl<ConstraintF: PrimeField> ToConstraintFieldGadget<ConstraintF> for [UInt8<ConstraintF>] {
|
||||
@@ -360,13 +363,17 @@ impl<ConstraintF: PrimeField> ToConstraintFieldGadget<ConstraintF> for Vec<UInt8
|
||||
#[cfg(test)]
|
||||
mod test {
|
||||
use super::UInt8;
|
||||
use crate::fields::fp::FpVar;
|
||||
use crate::prelude::AllocationMode::{Constant, Input, Witness};
|
||||
use crate::{prelude::*, ToConstraintFieldGadget, Vec};
|
||||
use crate::{
|
||||
fields::fp::FpVar,
|
||||
prelude::{
|
||||
AllocationMode::{Constant, Input, Witness},
|
||||
*,
|
||||
},
|
||||
ToConstraintFieldGadget, Vec,
|
||||
};
|
||||
use ark_ff::{PrimeField, ToConstraintField};
|
||||
use ark_relations::r1cs::{ConstraintSystem, SynthesisError};
|
||||
use ark_std::rand::distributions::Uniform;
|
||||
use ark_std::rand::Rng;
|
||||
use ark_std::rand::{distributions::Uniform, Rng};
|
||||
use ark_test_curves::bls12_381::Fr;
|
||||
|
||||
#[test]
|
||||
|
||||
Reference in New Issue
Block a user