1
1
/**
2
2
* @file helper methods that evaluate comparison operations on Field elements that are known to be of a fixed size (e.g. <2^16)
3
3
**/
4
- unconstrained pub fn get_lt_predicate_f (x : Field , y : Field ) -> bool {
4
+ pub unconstrained fn get_lt_predicate_f (x : Field , y : Field ) -> bool {
5
5
let a = x as u32 ;
6
6
let b = y as u32 ;
7
7
let r = a < b ;
8
8
r
9
9
}
10
10
11
- unconstrained pub fn get_lte_predicate_large (x : Field , y : Field ) -> bool {
11
+ pub unconstrained fn get_lte_predicate_large (x : Field , y : Field ) -> bool {
12
12
let r = x .lt (y ) | (x == y );
13
13
r
14
14
}
@@ -17,33 +17,33 @@ pub fn lte_field_240_bit(x: Field, y: Field) -> bool {
17
17
let predicate = get_lte_predicate_large (x , y );
18
18
let delta = y as Field - x as Field ;
19
19
20
- // (x - y) * predicate
20
+ // (x - y) * predicate
21
21
// if true, y - x >= 0
22
22
// if false, x <= y is wrong therefore x > y => x - y > 0 => x - y + 1 >= 0
23
23
// (y - x) * p + (1 - p) * (x - y + 1)
24
24
// (y - x) * p + x - y + 1 + p * (y - x)
25
25
let lt_parameter = 2 * (predicate as Field ) * delta - predicate as Field - delta + 1 ;
26
- lt_parameter .assert_max_bit_size ( 240 );
26
+ lt_parameter .assert_max_bit_size ::< 240 >( );
27
27
28
28
predicate
29
29
}
30
30
31
31
pub fn assert_lte_240_bit (x : Field , y : Field ) {
32
32
let delta = y as Field - x as Field ;
33
33
34
- // (x - y) * predicate
34
+ // (x - y) * predicate
35
35
// if true, y - x >= 0
36
36
// if false, x <= y is wrong therefore x > y => x - y > 0 => x - y + 1 >= 0
37
37
// (y - x) * p + (1 - p) * (x - y + 1)
38
38
// (y - x) * p + x - y + 1 + p * (y - x)
39
- delta .assert_max_bit_size ( 240 );
39
+ delta .assert_max_bit_size ::< 240 >( );
40
40
}
41
41
42
42
pub fn lt_field_16_bit (x : Field , y : Field ) -> bool {
43
43
let predicate = get_lt_predicate_f (x , y );
44
44
let delta = y as Field - x as Field ;
45
45
let lt_parameter = 2 * (predicate as Field ) * delta - predicate as Field - delta ;
46
- lt_parameter .assert_max_bit_size ( 16 );
46
+ lt_parameter .assert_max_bit_size ::< 16 >( );
47
47
48
48
predicate
49
49
}
@@ -52,7 +52,7 @@ pub fn lt_field_8_bit(x: Field, y: Field) -> bool {
52
52
let predicate = get_lt_predicate_f (x , y );
53
53
let delta = y as Field - x as Field ;
54
54
let lt_parameter = 2 * (predicate as Field ) * delta - predicate as Field - delta ;
55
- lt_parameter .assert_max_bit_size ( 8 );
55
+ lt_parameter .assert_max_bit_size ::< 8 >( );
56
56
57
57
predicate
58
58
}
@@ -62,13 +62,13 @@ pub fn assert_gt_240_bit(lhs: Field, rhs: Field) {
62
62
// -> lhs - rhs > 0
63
63
// -> lhs - rhs - 1 >= 0
64
64
let diff = lhs - rhs - 1 ;
65
- diff .assert_max_bit_size ( 240 );
65
+ diff .assert_max_bit_size ::< 240 >( );
66
66
}
67
67
68
68
pub fn assert_lt_240_bit (lhs : Field , rhs : Field ) {
69
69
// lhs < rhs
70
70
// -> rhs - lhs > 0
71
71
// -> rhs - lhs - 1 >= 0
72
72
let diff = rhs - lhs - 1 ;
73
- diff .assert_max_bit_size ( 240 );
73
+ diff .assert_max_bit_size ::< 240 >( );
74
74
}
0 commit comments