Skip to content

Commit ed2d55e

Browse files
authored
Rename NonNativeFieldVar -> EmulatedFpVar (arkworks-rs#135)
1 parent 1ff3a90 commit ed2d55e

18 files changed

+669
-740
lines changed

CHANGELOG.md

+17
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,23 @@
11
# CHANGELOG
22

33
## Pending
4+
5+
### Breaking changes
6+
7+
- [\#134](https://github.com/arkworks-rs/r1cs-std/pull/134) Add `Mul<NonnativeFieldVar>` bounds and impls for `CurveVar`.
8+
- [\#135](https://github.com/arkworks-rs/r1cs-std/pull/135)
9+
- Rename `NonNativeFieldVar` to `EmulatedFpVar`.
10+
- Rename `fields::nonnative` to `fields::emulated_fp`.
11+
- Rename `fields::nonnative::{Allocated}NonNativeMulResultVar` to `fields::emulated_fp::{Allocated}MulResultVar`.
12+
13+
### Features
14+
15+
### Improvements
16+
17+
### Bug Fixes
18+
19+
## 0.4.0
20+
421
- [\#117](https://github.com/arkworks-rs/r1cs-std/pull/117) Fix result of `precomputed_base_scalar_mul_le` to not discard previous value.
522
- [\#124](https://github.com/arkworks-rs/r1cs-std/pull/124) Fix `scalar_mul_le` constraints unsatisfiability when short Weierstrass point is zero.
623
- [\#127](https://github.com/arkworks-rs/r1cs-std/pull/127) Convert `NonNativeFieldVar` constants to little-endian bytes instead of big-endian (`ToBytesGadget`).

Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ std = [ "ark-ff/std", "ark-relations/std", "ark-std/std", "num-bigint/std" ]
4444
parallel = [ "std", "ark-ff/parallel", "ark-std/parallel"]
4545

4646
[[bench]]
47-
name = "nonnative-bench"
47+
name = "emulated-bench"
4848
path = "benches/bench.rs"
4949
harness = false
5050

benches/bench.rs

+31-47
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use ark_ff::PrimeField;
22
use ark_r1cs_std::{
33
alloc::AllocVar,
44
eq::EqGadget,
5-
fields::{nonnative::NonNativeFieldVar, FieldVar},
5+
fields::{emulated_fp::EmulatedFpVar, FieldVar},
66
};
77
use ark_relations::{
88
ns,
@@ -26,20 +26,18 @@ fn get_density<BaseField: PrimeField>(cs: &ConstraintSystemRef<BaseField>) -> us
2626
}
2727
}
2828

29-
fn allocation<TargetField: PrimeField, BaseField: PrimeField, R: RngCore>(
29+
fn allocation<TargetF: PrimeField, BaseField: PrimeField, R: RngCore>(
3030
cs: ConstraintSystemRef<BaseField>,
3131
rng: &mut R,
3232
) -> (usize, usize) {
33-
let a_native = TargetField::rand(rng);
33+
let a_native = TargetF::rand(rng);
3434

3535
let constraints_before = cs.num_constraints();
3636
let nonzeros_before = get_density(&cs);
3737

3838
// There will be a check that ensures it has the reasonable number of bits
39-
let _ = NonNativeFieldVar::<TargetField, BaseField>::new_witness(ns!(cs, "alloc a"), || {
40-
Ok(a_native)
41-
})
42-
.unwrap();
39+
let _ = EmulatedFpVar::<TargetF, BaseField>::new_witness(ns!(cs, "alloc a"), || Ok(a_native))
40+
.unwrap();
4341

4442
let constraints_after = cs.num_constraints();
4543
let nonzeros_after = get_density(&cs);
@@ -50,21 +48,17 @@ fn allocation<TargetField: PrimeField, BaseField: PrimeField, R: RngCore>(
5048
);
5149
}
5250

53-
fn addition<TargetField: PrimeField, BaseField: PrimeField, R: RngCore>(
51+
fn addition<TargetF: PrimeField, BaseField: PrimeField, R: RngCore>(
5452
cs: ConstraintSystemRef<BaseField>,
5553
rng: &mut R,
5654
) -> (usize, usize) {
57-
let a_native = TargetField::rand(rng);
58-
let a = NonNativeFieldVar::<TargetField, BaseField>::new_witness(ns!(cs, "alloc a"), || {
59-
Ok(a_native)
60-
})
61-
.unwrap();
62-
63-
let b_native = TargetField::rand(rng);
64-
let b = NonNativeFieldVar::<TargetField, BaseField>::new_witness(ns!(cs, "alloc b"), || {
65-
Ok(b_native)
66-
})
67-
.unwrap();
55+
let a_native = TargetF::rand(rng);
56+
let a = EmulatedFpVar::<TargetF, BaseField>::new_witness(ns!(cs, "alloc a"), || Ok(a_native))
57+
.unwrap();
58+
59+
let b_native = TargetF::rand(rng);
60+
let b = EmulatedFpVar::<TargetF, BaseField>::new_witness(ns!(cs, "alloc b"), || Ok(b_native))
61+
.unwrap();
6862

6963
let constraints_before = cs.num_constraints();
7064
let nonzeros_before = get_density(&cs);
@@ -80,19 +74,15 @@ fn addition<TargetField: PrimeField, BaseField: PrimeField, R: RngCore>(
8074
);
8175
}
8276

83-
fn equality<TargetField: PrimeField, BaseField: PrimeField, R: RngCore>(
77+
fn equality<TargetF: PrimeField, BaseField: PrimeField, R: RngCore>(
8478
cs: ConstraintSystemRef<BaseField>,
8579
rng: &mut R,
8680
) -> (usize, usize) {
87-
let a_native = TargetField::rand(rng);
88-
let a1 = NonNativeFieldVar::<TargetField, BaseField>::new_witness(ns!(cs, "alloc a1"), || {
89-
Ok(a_native)
90-
})
91-
.unwrap();
92-
let a2 = NonNativeFieldVar::<TargetField, BaseField>::new_witness(ns!(cs, "alloc a2"), || {
93-
Ok(a_native)
94-
})
95-
.unwrap();
81+
let a_native = TargetF::rand(rng);
82+
let a1 = EmulatedFpVar::<TargetF, BaseField>::new_witness(ns!(cs, "alloc a1"), || Ok(a_native))
83+
.unwrap();
84+
let a2 = EmulatedFpVar::<TargetF, BaseField>::new_witness(ns!(cs, "alloc a2"), || Ok(a_native))
85+
.unwrap();
9686

9787
let constraints_before = cs.num_constraints();
9888
let nonzeros_before = get_density(&cs);
@@ -108,21 +98,17 @@ fn equality<TargetField: PrimeField, BaseField: PrimeField, R: RngCore>(
10898
);
10999
}
110100

111-
fn multiplication<TargetField: PrimeField, BaseField: PrimeField, R: RngCore>(
101+
fn multiplication<TargetF: PrimeField, BaseField: PrimeField, R: RngCore>(
112102
cs: ConstraintSystemRef<BaseField>,
113103
rng: &mut R,
114104
) -> (usize, usize) {
115-
let a_native = TargetField::rand(rng);
116-
let a = NonNativeFieldVar::<TargetField, BaseField>::new_witness(ns!(cs, "initial a"), || {
117-
Ok(a_native)
118-
})
119-
.unwrap();
120-
121-
let b_native = TargetField::rand(rng);
122-
let b = NonNativeFieldVar::<TargetField, BaseField>::new_witness(ns!(cs, "initial b"), || {
123-
Ok(b_native)
124-
})
125-
.unwrap();
105+
let a_native = TargetF::rand(rng);
106+
let a = EmulatedFpVar::<TargetF, BaseField>::new_witness(ns!(cs, "initial a"), || Ok(a_native))
107+
.unwrap();
108+
109+
let b_native = TargetF::rand(rng);
110+
let b = EmulatedFpVar::<TargetF, BaseField>::new_witness(ns!(cs, "initial b"), || Ok(b_native))
111+
.unwrap();
126112

127113
let constraints_before = cs.num_constraints();
128114
let nonzeros_before = get_density(&cs);
@@ -138,15 +124,13 @@ fn multiplication<TargetField: PrimeField, BaseField: PrimeField, R: RngCore>(
138124
);
139125
}
140126

141-
fn inverse<TargetField: PrimeField, BaseField: PrimeField, R: RngCore>(
127+
fn inverse<TargetF: PrimeField, BaseField: PrimeField, R: RngCore>(
142128
cs: ConstraintSystemRef<BaseField>,
143129
rng: &mut R,
144130
) -> (usize, usize) {
145-
let num_native = TargetField::rand(rng);
146-
let num = NonNativeFieldVar::<TargetField, BaseField>::new_witness(ns!(cs, "alloc"), || {
147-
Ok(num_native)
148-
})
149-
.unwrap();
131+
let num_native = TargetF::rand(rng);
132+
let num = EmulatedFpVar::<TargetF, BaseField>::new_witness(ns!(cs, "alloc"), || Ok(num_native))
133+
.unwrap();
150134

151135
let constraints_before = cs.num_constraints();
152136
let nonzeros_before = get_density(&cs);

0 commit comments

Comments
 (0)