| ... | @@ -203,19 +203,17 @@ pub fn Field(comptime params: FieldParams) type { | ... | @@ -203,19 +203,17 @@ pub fn Field(comptime params: FieldParams) type { |
| 203 | const XLimbs = [a.limbs.len + 1]Word; | 203 | const XLimbs = [a.limbs.len + 1]Word; |
| 204 | | 204 | |
| 205 | var d: Word = 1; | 205 | var d: Word = 1; |
| 206 | var f: XLimbs = undefined; | 206 | var f = comptime blk: { |
| 207 | fiat.msat(&f); | 207 | var f: XLimbs = undefined; |
| 208 | | 208 | fiat.msat(&f); |
| | 209 | break :blk f; |
| | 210 | }; |
| 209 | var g: XLimbs = undefined; | 211 | var g: XLimbs = undefined; |
| 210 | fiat.fromMontgomery(g[0..a.limbs.len], a.limbs); | 212 | fiat.fromMontgomery(g[0..a.limbs.len], a.limbs); |
| 211 | g[g.len - 1] = 0; | 213 | g[g.len - 1] = 0; |
| 212 | | 214 | |
| 213 | var r: Limbs = undefined; | 215 | var r = Fe.one.limbs; |
| 214 | fiat.setOne(&r); | 216 | var v = Fe.zero.limbs; |
| 215 | var v = mem.zeroes(Limbs); | | |
| 216 | | | |
| 217 | var precomp: Limbs = undefined; | | |
| 218 | fiat.divstepPrecomp(&precomp); | | |
| 219 | | 217 | |
| 220 | var out1: Word = undefined; | 218 | var out1: Word = undefined; |
| 221 | var out2: XLimbs = undefined; | 219 | var out2: XLimbs = undefined; |
| ... | @@ -236,6 +234,12 @@ pub fn Field(comptime params: FieldParams) type { | ... | @@ -236,6 +234,12 @@ pub fn Field(comptime params: FieldParams) type { |
| 236 | var v_opp: Limbs = undefined; | 234 | var v_opp: Limbs = undefined; |
| 237 | fiat.opp(&v_opp, v); | 235 | fiat.opp(&v_opp, v); |
| 238 | fiat.selectznz(&v, @truncate(u1, f[f.len - 1] >> (@bitSizeOf(Word) - 1)), v, v_opp); | 236 | fiat.selectznz(&v, @truncate(u1, f[f.len - 1] >> (@bitSizeOf(Word) - 1)), v, v_opp); |
| | 237 | |
| | 238 | const precomp = blk: { |
| | 239 | var precomp: Limbs = undefined; |
| | 240 | fiat.divstepPrecomp(&precomp); |
| | 241 | break :blk precomp; |
| | 242 | }; |
| 239 | var fe: Fe = undefined; | 243 | var fe: Fe = undefined; |
| 240 | fiat.mul(&fe.limbs, v, precomp); | 244 | fiat.mul(&fe.limbs, v, precomp); |
| 241 | return fe; | 245 | return fe; |