big: Fix signed multiplication for some inputs.

This commit is contained in:
Jeroen van Rijn
2021-08-18 15:24:43 +02:00
parent a01c946c20
commit 5fd7a5f32a
4 changed files with 31 additions and 13 deletions
+3 -1
View File
@@ -630,6 +630,8 @@ internal_int_mul :: proc(dest, src, multiplier: ^Int, allocator := context.alloc
*/
if multiplier.used == 0 || src.used == 0 { return internal_zero(dest); }
neg := src.sign != multiplier.sign;
if src == multiplier {
/*
Do we need to square?
@@ -694,7 +696,7 @@ internal_int_mul :: proc(dest, src, multiplier: ^Int, allocator := context.alloc
err = #force_inline _private_int_mul(dest, src, multiplier, digits);
}
}
neg := src.sign != multiplier.sign;
dest.sign = .Negative if dest.used > 0 && neg else .Zero_or_Positive;
return err;
}