Division less buggy, still slow
[ipdf/code.git] / src / tests / arb.cpp
1 #include <cstdlib>
2 #include <cstdio>
3 #include <iostream>
4 #include <cassert>
5 #include "arbint.h"
6
7 using namespace std;
8 using namespace IPDF;
9
10 #define TEST_CASES 100
11
12
13 int main(int argc, char ** argv)
14 {
15         
16
17         for (unsigned i = 0; i < TEST_CASES; ++i)
18         {
19                 Arbint::digit_t a = rand();
20                 Arbint::digit_t b = rand();
21                 
22                 Arbint arb_a(a);
23                 Arbint arb_b(b);
24                 
25                 Debug("Test %u: a = %li, b = %li", i, a, b);
26                 
27                 Debug("a < b = %d", a < b);
28                 Debug("Arb a<b = %d", arb_a < arb_b);
29                 assert((arb_a < arb_b) == (a < b));
30                 
31                 Debug("a > b = %d", a > b);
32                 Debug("Arb a>b = %d", arb_a > arb_b);
33                 assert((arb_a > arb_b) == (a > b));
34                 
35                 Debug("a + b = %.16lx", a+b);
36                 Debug("Arb a+b = %s", (arb_a+arb_b).DigitStr().c_str());
37                 assert((arb_a+arb_b).AsDigit() == a + b);
38                 
39                 Debug("a - b = %li %.16lx", (a-b), (a-b));
40                 Debug("Arb a-b = %s %.16lx", (arb_a-arb_b).DigitStr().c_str(), (arb_a-arb_b).AsDigit());
41                 assert((arb_a-arb_b).AsDigit() == a - b);
42                 
43                 Debug("a * b = %.16lx", a*b);
44                 Debug("Arb a*b = %s", (arb_a*arb_b).DigitStr().c_str());
45                 assert((arb_a*arb_b).AsDigit() == a * b);
46                 
47                 Debug("a / b = %.16lx", a/b);
48                 Debug("Arb a/b = %s", (arb_a/arb_b).DigitStr().c_str());
49                 assert((arb_a/arb_b).AsDigit() == a / b);
50                 assert((arb_a%arb_b).AsDigit() == a % b);
51         }
52         printf("All single digit tests successful!\n");
53         
54         return 0;
55 }

UCC git Repository :: git.ucc.asn.au