initial
[prop.git] / lib-src / numeric / qa.cc
blob76b0a276171e306ff77d63a912bfbfec569b22cd
1 //////////////////////////////////////////////////////////////////////////////
2 // NOTICE:
3 //
4 // ADLib, Prop and their related set of tools and documentation are in the
5 // public domain. The author(s) of this software reserve no copyrights on
6 // the source code and any code generated using the tools. You are encouraged
7 // to use ADLib and Prop to develop software, in both academic and commercial
8 // settings, and are free to incorporate any part of ADLib and Prop into
9 // your programs.
11 // Although you are under no obligation to do so, we strongly recommend that
12 // you give away all software developed using our tools.
14 // We also ask that credit be given to us when ADLib and/or Prop are used in
15 // your programs, and that this notice be preserved intact in all the source
16 // code.
18 // This software is still under development and we welcome any suggestions
19 // and help from the users.
21 // Allen Leung
22 // 1994
23 //////////////////////////////////////////////////////////////////////////////
25 #include <stdio.h>
26 #include <iostream.h>
27 #include <assert.h>
28 #include <AD/numeric/bigint.h>
29 #include <AD/numeric/complex.h>
30 #include <AD/numeric/matrix.h>
31 #include <AD/numeric/ratio.h>
32 #include <AD/numeric/z.h>
34 int main(int argc, char * argv[])
35 { Z<9> a = 0, b = 1, c = 0;
37 assert(sizeof(a) == 4);
38 assert(a != b && a == c);
40 Complex i(0,1);
42 assert (i * i == -1);
45 BigInt x = 123456, y = 8765;
46 cout << x << " % " << y << " = " << (x%y) << '\n';
47 cout << x << " / " << y << " = " << (x/y) << '\n';
48 cout << x << " * " << y << " = " << (x*y) << '\n';
49 cout << x << " + " << y << " = " << (x+y) << '\n';
50 cout << x << " - " << y << " = " << (x-y) << '\n';
52 cout << x << " % " << y << " = " << (123456%8765) << '\n';
53 cout << x << " / " << y << " = " << (123456/8765) << '\n';
54 cout << x << " * " << y << " = " << (123456*8765) << '\n';
55 cout << x << " + " << y << " = " << (123456+8765) << '\n';
56 cout << x << " - " << y << " = " << (123456-8765) << '\n';
59 BigInt fact = 1;
60 int limit = 100;
61 if (argc == 2) sscanf(argv[1],"%d",&limit);
62 for (int n = 1; n <= limit; n++) {
63 fact *= n;
65 cout << "Done\n"; cout.flush();
66 cout << "fact(" << limit << ") = " << fact << '\n';
68 //for (n = 1; n <= 10000; n++) fact /= n;
69 //cout << "one = " << fact << '\n';
71 printf("OK\n");
72 return 0;