diff options
-rw-r--r-- | bigint.cpp | 1 | ||||
-rwxr-xr-x | biginttest.py | 39 |
2 files changed, 0 insertions, 40 deletions
@@ -347,7 +347,6 @@ pair<Bigint,Bigint> Bigint::divmod(const Bigint &div) const { pair<Bigint,Bigint> p=divmod(*this,div,bitcdiff/29+10); //ignores all signs /* To let the result come out correctly, we apply case analysis to the signs of the arguments. * As a guiding example, these two cases can be examined. - * The code was tested with many large random numbers (also negative), using a Python script. * (1) 4 = 1* 3 + 1 6 = 2* 3 + 0 * (2) 4 = -1*-3 + 1 6 = -2*-3 + 0 * (3) -4 = -2* 3 + 2 -6 = -2* 3 + 0 diff --git a/biginttest.py b/biginttest.py deleted file mode 100755 index 71c5417..0000000 --- a/biginttest.py +++ /dev/null @@ -1,39 +0,0 @@ -#!/usr/bin/env python3 -import sys, random, subprocess - -ntimes=10000 -maxn=1e100 - -def check(desc,x,y): - if x==y: return - print("{}: {} != {}".format(desc,x,y)) - assert False - -def gendata(): - for _ in range(ntimes): - yield random.randint(-maxn,maxn), random.randint(-maxn,maxn) - -def proctest(): - proc=subprocess.Popen(["./main"],stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=sys.stderr) - - for (a,b) in gendata(): - proc.stdin.write("div {} {}\n".format(a,b).encode("ascii")) - proc.stdin.write("mod {} {}\n".format(a,b).encode("ascii")) - proc.stdin.flush() - - q=int(proc.stdout.readline()) - r=int(proc.stdout.readline()) - if r<0 or r>=abs(b) or a!=q*b+r: - print("Error: {} divmod {}".format(a,b)) - print("Diff: {}".format(a-q*b-r)) - sys.exit(1) - - proc.kill() - -def justprint(): - for (a,b) in gendata(): - print("div {} {}".format(a,b)) - print("mod {} {}".format(a,b)) - -#justprint() -proctest() |