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