aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeroen van Rijn <Kelimion@users.noreply.github.com>2021-08-16 22:19:10 +0200
committerGitHub <noreply@github.com>2021-08-16 22:19:10 +0200
commiteae98feb7acda888d88343c9fd65fb072d7dda4e (patch)
tree1a3b58ce02044bb1cfdfdcea03ed70c1e135f7d4
parent19386814b3ff02914d59ecf20e40191f151d8dbe (diff)
parent3af078e9417274ce7b6fdfa76ebd72ac26f87668 (diff)
Merge pull request #1086 from Kelimion/bigint
big: Temporarily disable Toom.
-rw-r--r--core/math/big/build.bat5
-rw-r--r--core/math/big/example.odin9
-rw-r--r--core/math/big/internal.odin6
-rw-r--r--core/math/big/test.py2
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