source: src/tests/gmp.c@ b4f0dde

ADT aaron-thesis arm-eh ast-experimental cleanup-dtors deferred_resn demangler enum forall-pointer-decay jacob/cs343-translation jenkins-sandbox new-ast new-ast-unique-expr new-env no_list persistent-indexer pthread-emulation qualifiedEnum with_gc
Last change on this file since b4f0dde was f802e46, checked in by Peter A. Buhr <pabuhr@…>, 8 years ago

cleanup code

  • Property mode set to 100644
File size: 2.5 KB
Line 
1//
2// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
3//
4// The contents of this file are covered under the licence agreement in the
5// file "LICENCE" distributed with Cforall.
6//
7// gmp.c --
8//
9// Author : Peter A. Buhr
10// Created On : Tue Apr 19 08:55:51 2016
11// Last Modified By : Peter A. Buhr
12// Last Modified On : Thu Sep 28 18:33:51 2017
13// Update Count : 555
14//
15
16// NOTE: UBUNTU DOES NOT SUPPORT GMP MULTILIB, SO ONLY 64-BIT GMP IS TESTED.
17
18#include <gmp>
19
20int main( void ) {
21 sout | "constructors" | endl;
22 short int si = 3;
23 Int x = { "50000000000000000000" }, y = { si }, z = x + y;
24 sout | x | y | z | endl;
25 sout | "x:" | x | "y:" | y | "z:" | z | endl;
26
27 sout | "conversions" | endl;
28 y = 'a';
29 sout | "y:" | y | endl;
30 y = "12345678901234567890123456789";
31 sout | "y:" | y | endl;
32 y = 100`mp + 100`mp;
33 sout | "y:" | y | endl;
34 y = -200u`mp + -200u`mp;
35 sout | "y:" | y | endl;
36 y = "12345678901234567890123456789"`mp + "12345678901234567890123456789"`mp;
37 sout | "y:" | y | endl;
38 y = si;
39 sout | "y:" | y | endl;
40 y = -3;
41 sout | "y:" | y | endl;
42 y += 7;
43 sout | "y:" | y | endl;
44 y -= 1;
45 sout | "y:" | y | endl;
46 int b;
47 b = y;
48 si = y;
49 sout | "y:" | y | "b:" | b | "si:" | si | endl;
50
51 sout | "comparison" | endl;
52 sout | x == x | endl;
53 sout | x != x | endl;
54 sout | x < x | endl;
55 sout | x <= x | endl;
56 sout | x > x | endl;
57 sout | x >= x | endl;
58
59 sout | "arithmetic" | endl;
60 z = x + y + z;
61 sout | "z:" | z | endl;
62 z = z = x;
63 sout | "z:" | z | endl;
64 z = x - y - z;
65 sout | "z:" | z | endl;
66 z = x * y * z;
67 sout | "z:" | z | endl;
68 z = x * 3;
69 sout | "z:" | z | endl;
70 z = 3 * x;
71 sout | "z:" | z | endl;
72 z = x / 3;
73 sout | "z:" | z | endl;
74 sout | div( x, 3 ) | x / 3 | "," | x % 3 | endl;
75 [ x, y ] = div( x, 3 );
76 sout | "x:" | x | "y:" | y | endl;
77
78 sout | endl;
79
80 sin | x | y | z;
81 sout | x | y | z | endl;
82
83 sout | endl;
84
85 sout | "Fibonacci Numbers" | endl;
86 Int fn, fn1, fn2;
87 fn = (Int){0}; fn1 = fn; // 1st case
88 sout | (int)0 | fn | endl;
89 fn = 1; fn2 = fn1; fn1 = fn; // 2nd case
90 sout | 1 | fn | endl;
91 for ( unsigned int i = 2; i <= 200; i += 1 ) {
92 fn = fn1 + fn2; fn2 = fn1; fn1 = fn; // general case
93 sout | i | fn | endl;
94 } // for
95
96 sout | endl;
97
98 sout | "Factorial Numbers" | endl;
99 Int fact = 1; // 1st case
100 sout | (int)0 | fact | endl;
101 for ( unsigned int i = 1; i <= 40; i += 1 ) {
102 fact *= i; // general case
103 sout | i | fact | endl;
104 } // for
105} // main
106
107// Local Variables: //
108// tab-width: 4 //
109// compile-command: "cfa gmp.c -lgmp" //
110// End: //
Note: See TracBrowser for help on using the repository browser.