2f11800775923793fae9e54f1d8abfe957921701
[ghc-hetmet.git] / ghc / tests / numeric / should_run / arith003.hs
1 --!!! test arithmetic operations from "Prelude" (gcd, ldm, etc.)
2 --
3 main
4   = let
5         minInt = minBound :: Int
6         maxInt = maxBound :: Int
7     in
8     putStr
9        (-- w/ Ints
10         show [
11             minInt, maxInt,
12
13             subtract i8 i4,
14             subtract i8m i4,
15             subtract maxInt i4,
16             subtract i0 minInt,
17
18             gcd i8 i6,
19             gcd i8m i6,
20             gcd i8m i6m,
21             gcd i8m i0,
22             gcd i0 i8m,
23             gcd (4070297::Int) (2695911::Int), -- 52,861
24             
25             lcm i8 i6,
26             lcm i8m i6,
27             lcm i8m i6m,
28             lcm i8m i0,
29             lcm i0 i8m,
30             lcm (4070297::Int) (2695911::Int), -- 207,585,147
31
32             i8 ^ i0,
33             i8m ^ i4,
34             i4 ^ i6
35             -- ToDo: more stuff
36
37             ]
38         ++ "\n"
39
40         -- w/ Integers
41         ++ show [
42             toInteger minInt, toInteger maxInt,
43
44             subtract i8I i4I,
45             subtract i8mI i4I,
46             subtract (toInteger maxInt) i4I,
47             subtract i0I (toInteger minInt),
48
49             gcd i8I i6I,
50             gcd i8mI i6I,
51             gcd i8mI i6mI,
52             gcd i8mI i0I,
53             gcd i0I i8mI,
54             gcd (4070297::Integer) (2695911::Integer), -- 52,861
55             
56             lcm i8I i6I,
57             lcm i8mI i6I,
58             lcm i8mI i6mI,
59             lcm i8mI i0I,
60             lcm i0I i8mI,
61             lcm (4070297::Integer) (2695911::Integer), -- 207,585,147
62
63             i8I ^ i0I,
64             i8mI ^ i4I,
65             i4I ^ i6I
66             -- ToDo: more stuff
67             ]
68         ++ "\n"
69         )
70   where
71     i0, i4, i4m, i6, i6m, i8, i8m :: Int
72     i0 = 0
73     i4 = 4
74     i4m = -4
75     i6 = 6
76     i6m = -6
77     i8 = 8
78     i8m = -8
79
80     i0I, i4I, i4mI, i6I, i6mI, i8I, i8mI :: Integer
81     i0I = 0
82     i4I = 4
83     i4mI = -4
84     i6I = 6
85     i6mI = -6
86     i8I = 8
87     i8mI = -8