This commit is contained in:
gingerBill
2021-08-18 20:31:39 +01:00
4 changed files with 31 additions and 12 deletions
+1 -1
View File
@@ -1,5 +1,5 @@
@echo off @echo off
:odin run . -vet -o:speed -no-bounds-check :odin run . -vet -o:size
: -o:size : -o:size
:odin build . -build-mode:shared -show-timings -o:minimal -no-bounds-check -define:MATH_BIG_EXE=false && python test.py -fast-tests :odin build . -build-mode:shared -show-timings -o:minimal -no-bounds-check -define:MATH_BIG_EXE=false && python test.py -fast-tests
:odin build . -build-mode:shared -show-timings -o:size -no-bounds-check -define:MATH_BIG_EXE=false && python test.py -fast-tests :odin build . -build-mode:shared -show-timings -o:size -no-bounds-check -define:MATH_BIG_EXE=false && python test.py -fast-tests
File diff suppressed because one or more lines are too long
+4 -2
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); } if multiplier.used == 0 || src.used == 0 { return internal_zero(dest); }
neg := src.sign != multiplier.sign;
if src == multiplier { if src == multiplier {
/* /*
Do we need to square? Do we need to square?
@@ -674,7 +676,7 @@ internal_int_mul :: proc(dest, src, multiplier: ^Int, allocator := context.alloc
*/ */
max_used >= 2 * min_used { max_used >= 2 * min_used {
// err = s_mp_mul_balance(a,b,c); // err = s_mp_mul_balance(a,b,c);
} else if false && min_used >= MUL_TOOM_CUTOFF { } else if min_used >= MUL_TOOM_CUTOFF {
/* /*
Toom path commented out until it no longer fails Factorial 10k or 100k, Toom path commented out until it no longer fails Factorial 10k or 100k,
as reveaved in the long test. as reveaved in the long test.
@@ -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); 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; dest.sign = .Negative if dest.used > 0 && neg else .Zero_or_Positive;
return err; return err;
} }
+1
View File
@@ -161,6 +161,7 @@ _private_int_mul_toom :: proc(dest, a, b: ^Int, allocator := context.allocator)
internal_clamp(b1); internal_clamp(b1);
internal_clamp(b2); internal_clamp(b2);
/* /*
\\ S1 = (a2+a1+a0) * (b2+b1+b0); \\ S1 = (a2+a1+a0) * (b2+b1+b0);
*/ */