@@ -14,7 +14,8 @@ struct Uint8 {
14
14
fn Uint8.new(val: Field) -> Uint8 {
15
15
let bit_len = 8;
16
16
17
- bits::check_field_size(bit_len);
17
+ // has to ensure multiply won't overflow prime field
18
+ bits::check_field_size(bit_len * 2);
18
19
19
20
// range check
20
21
let ignore_ = bits::to_bits(bit_len, val);
@@ -33,7 +34,8 @@ struct Uint16 {
33
34
fn Uint16.new(val: Field) -> Uint16 {
34
35
let bit_len = 16;
35
36
36
- bits::check_field_size(bit_len);
37
+ // has to ensure multiply won't overflow prime field
38
+ bits::check_field_size(bit_len * 2);
37
39
38
40
// range check
39
41
let ignore_ = bits::to_bits(bit_len, val);
@@ -52,7 +54,8 @@ struct Uint32 {
52
54
fn Uint32.new(val: Field) -> Uint32 {
53
55
let bit_len = 32;
54
56
55
- bits::check_field_size(bit_len);
57
+ // has to ensure multiply won't overflow prime field
58
+ bits::check_field_size(bit_len * 2);
56
59
57
60
// range check
58
61
let ignore_ = bits::to_bits(bit_len, val);
@@ -71,7 +74,8 @@ struct Uint64 {
71
74
fn Uint64.new(val: Field) -> Uint64 {
72
75
let bit_len = 64;
73
76
74
- bits::check_field_size(bit_len);
77
+ // has to ensure multiply won't overflow prime field
78
+ bits::check_field_size(bit_len * 2);
75
79
76
80
// range check
77
81
let ignore_ = bits::to_bits(bit_len, val);
0 commit comments