| ... | @@ -57,9 +57,10 @@ fn fixLastLimb(out_ptr: [*]u64, is_signed: bool, bits: u16) void { | ... | @@ -57,9 +57,10 @@ fn fixLastLimb(out_ptr: [*]u64, is_signed: bool, bits: u16) void { |
| 57 | if (limb_cnt == true_limb_cnt) return; | 57 | if (limb_cnt == true_limb_cnt) return; |
| 58 | const true_out = out_ptr[0..true_limb_cnt]; | 58 | const true_out = out_ptr[0..true_limb_cnt]; |
| 59 | | 59 | |
| 60 | const sign: u64 = if (!is_signed or @as(i64, @bitCast(true_out[limb_cnt - 1])) >= 0) 0 else ~@as(u64, 0); | 60 | const ms = limbGet(true_out, limb_cnt - 1); |
| | 61 | const sign: u64 = if (!is_signed or @as(i64, @bitCast(ms)) >= 0) 0 else ~@as(u64, 0); |
| 61 | for (limb_cnt..true_limb_cnt) |i| { | 62 | for (limb_cnt..true_limb_cnt) |i| { |
| 62 | true_out[i] = sign; | 63 | limbSet(true_out, i, sign); |
| 63 | } | 64 | } |
| 64 | } | 65 | } |
| 65 | | 66 | |