From 48c1f0ab590d5f120548a212fff2c762f8818f34 Mon Sep 17 00:00:00 2001 From: Jeroen van Rijn Date: Mon, 16 Aug 2021 22:13:54 +0200 Subject: [PATCH] big: Disable Toom for a moment. --- core/math/big/build.bat | 5 +++-- core/math/big/example.odin | 9 ++++++--- core/math/big/internal.odin | 6 +++++- core/math/big/test.py | 2 +- 4 files changed, 15 insertions(+), 7 deletions(-) diff --git a/core/math/big/build.bat b/core/math/big/build.bat index eb6f581aa..73dce208f 100644 --- a/core/math/big/build.bat +++ b/core/math/big/build.bat @@ -1,8 +1,9 @@ @echo off -:odin run . -vet +:odin run . -vet -o:speed -no-bounds-check : -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:size -no-bounds-check -define:MATH_BIG_EXE=false && python test.py -fast-tests :odin build . -build-mode:shared -show-timings -o:size -define:MATH_BIG_EXE=false && python test.py -fast-tests -odin build . -build-mode:shared -show-timings -o:speed -no-bounds-check -define:MATH_BIG_EXE=false && python test.py -fast-tests +odin build . -build-mode:shared -show-timings -o:speed -no-bounds-check -define:MATH_BIG_EXE=false && python test.py +: -fast-tests :odin build . -build-mode:shared -show-timings -o:speed -define:MATH_BIG_EXE=false && python test.py -fast-tests \ No newline at end of file diff --git a/core/math/big/example.odin b/core/math/big/example.odin index 852adf1e6..994fbf55a 100644 --- a/core/math/big/example.odin +++ b/core/math/big/example.odin @@ -211,9 +211,12 @@ demo :: proc() { atoi(b, "378271691190525325893712245607881659587045836991909505715443874842659307597325888631898626653926188084180707310543535657996185416604973577488563643125766400", 10); print("b: ", b, 10, true, true, true); - // _private_mul_karatsuba(c, a, b); - _private_int_mul_toom(c, a, b); - // 232651448952541576870611266174879305550351371288854695862580414333123414997160350830885091499735909790287667499899722495800734048928379224433901855785208987458832826418636718381316545267329375006999278984386253755079362097682611712000 + factorial(c, 10_000); + + // 120CCAA2076ADF69F75A97695E6C1C2A4E6F377DF92226E43B + cs, _ := itoa(c, 16); + defer delete(cs); + print("c: ", c, 10, true, true, true); } diff --git a/core/math/big/internal.odin b/core/math/big/internal.odin index baf102ccb..31831f492 100644 --- a/core/math/big/internal.odin +++ b/core/math/big/internal.odin @@ -674,7 +674,11 @@ internal_int_mul :: proc(dest, src, multiplier: ^Int, allocator := context.alloc */ max_used >= 2 * min_used { // err = s_mp_mul_balance(a,b,c); - } else if min_used >= MUL_TOOM_CUTOFF { + } else if false && min_used >= MUL_TOOM_CUTOFF { + /* + Toom path commented out until it no longer fails Factorial 10k or 100k, + as reveaved in the long test. + */ err = #force_inline _private_int_mul_toom(dest, src, multiplier); } else if min_used >= MUL_KARATSUBA_CUTOFF { err = #force_inline _private_int_mul_karatsuba(dest, src, multiplier); diff --git a/core/math/big/test.py b/core/math/big/test.py index 922500e77..4798d110f 100644 --- a/core/math/big/test.py +++ b/core/math/big/test.py @@ -532,7 +532,7 @@ TESTS = { if not args.fast_tests: TESTS[test_factorial].append( # This one on its own takes around 800ms, so we exclude it for FAST_TESTS - [ 100_000 ], + [ 10_000 ], ) total_passes = 0