#lang planet chongkai/sml
(* Auxiliary functions for test cases *)
infix 1 seq
fun e1 seq e2 = e2fun check b = if b then "OK" else "WRONG"fun check' f = (if f () then "OK" else "WRONG") handle _ => "EXN"
fun range (from, to) p =
let open Int
in
(from > to) orelse (p from) andalso (range (from+1, to) p)
end
fun checkrange bounds = check o range bounds
fun tst0 s s' = print (s ^ " \t" ^ s' ^ "\n")fun tst s b = tst0 s (check b)fun tst' s f = tst0 s (check' f)
fun tstrange s bounds = (tst s) o range bounds
val _ = print "Testing function applications, etc...\n"
fun f(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,
a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,
a20,a21,a22,a23,a24,a25,a26,a27,a28,a29,
a30,a31,a32,a33,a34,a35,a36,a37,a38,a39,
a40,a41,a42,a43,a44,a45,a46,a47,a48,a49,
a50,a51,a52,a53,a54,a55,a56,a57,a58,a59,
a60,a61,a62,a63,a64,a65,a66,a67,a68,a69,
a70,a71,a72,a73,a74,a75,a76,a77,a78,a79,
a80,a81,a82,a83,a84,a85,a86,a87,a88,a89,
a90,a91,a92,a93,a94,a95,a96,a97,a98,a99)
: int =
a0+a1+a2+a3+a4+a5+a6+a7+a8+a9+
a10+a11+a12+a13+a14+a15+a16+a17+a18+a19+
a20+a21+a22+a23+a24+a25+a26+a27+a28+a29+
a30+a31+a32+a33+a34+a35+a36+a37+a38+a39+
a40+a41+a42+a43+a44+a45+a46+a47+a48+a49+
a50+a51+a52+a53+a54+a55+a56+a57+a58+a59+
a60+a61+a62+a63+a64+a65+a66+a67+a68+a69+
a70+a71+a72+a73+a74+a75+a76+a77+a78+a79+
a80+a81+a82+a83+a84+a85+a86+a87+a88+a89+
a90+a91+a92+a93+a94+a95+a96+a97+a98+a99
val r1 =
f(0,1,2,3,4,5,6,7,8,9,
10,11,12,13,14,15,16,17,18,19,
20,21,22,23,24,25,26,27,28,29,
30,31,32,33,34,35,36,37,38,39,
40,41,42,43,44,45,46,47,48,49,
50,51,52,53,54,55,56,57,58,59,
60,61,62,63,64,65,66,67,68,69,
70,71,72,73,74,75,76,77,78,79,
80,81,82,83,84,85,86,87,88,89,
90,91,92,93,94,95,96,97,98,99)
val _ = tst "test1" (r1 = (100*99) div 2)
fun g(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,
a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,
a20,a21,a22,a23,a24,a25,a26,a27,a28,a29,
a30,a31,a32,a33,a34,a35,a36,a37,a38,a39,
a40,a41,a42,a43,a44,a45,a46,a47,a48,a49,
a50,a51,a52,a53,a54,a55,a56,a57,a58,a59,
a60,a61,a62,a63,a64,a65,a66,a67,a68,a69,
a70,a71,a72,a73,a74,a75,a76,a77,a78,a79,
a80,a81,a82,a83,a84,a85,a86,a87,a88,a89,
a90,a91,a92,a93,a94,a95,a96,a97,a98,a99)
: real =
a0+a1+a2+a3+a4+a5+a6+a7+a8+a9+
a10+a11+a12+a13+a14+a15+a16+a17+a18+a19+
a20+a21+a22+a23+a24+a25+a26+a27+a28+a29+
a30+a31+a32+a33+a34+a35+a36+a37+a38+a39+
a40+a41+a42+a43+a44+a45+a46+a47+a48+a49+
a50+a51+a52+a53+a54+a55+a56+a57+a58+a59+
a60+a61+a62+a63+a64+a65+a66+a67+a68+a69+
a70+a71+a72+a73+a74+a75+a76+a77+a78+a79+
a80+a81+a82+a83+a84+a85+a86+a87+a88+a89+
a90+a91+a92+a93+a94+a95+a96+a97+a98+a99
val r2 =
g(real 0,real 1,real 2,real 3,real 4,real 5,real 6,real 7,real 8,real 9,
real 10,real 11,real 12,real 13,real 14,real 15,real 16,real 17,real 18,real 19,
real 20,real 21,real 22,real 23,real 24,real 25,real 26,real 27,real 28,real 29,
real 30,real 31,real 32,real 33,real 34,real 35,real 36,real 37,real 38,real 39,
real 40,real 41,real 42,real 43,real 44,real 45,real 46,real 47,real 48,real 49,
real 50,real 51,real 52,real 53,real 54,real 55,real 56,real 57,real 58,real 59,
real 60,real 61,real 62,real 63,real 64,real 65,real 66,real 67,real 68,real 69,
real 70,real 71,real 72,real 73,real 74,real 75,real 76,real 77,real 78,real 79,
real 80,real 81,real 82,real 83,real 84,real 85,real 86,real 87,real 88,real 89,
real 90,real 91,real 92,real 93,real 94,real 95,real 96,real 97,real 98,real 99)
val _ = tst "test2" (round r2 = (100*99) div 2)
fun mkI i : int = i*2
fun h () =
let val a0 = mkI 0
val a1 = mkI 1
val a2 = mkI 2
val a3 = mkI 3
val a4 = mkI 4
val a5 = mkI 5
val a6 = mkI 6
val a7 = mkI 7
val a8 = mkI 8
val a9 = mkI 9
val a10 = mkI 10
val a11 = mkI 11
val a12 = mkI 12
val a13 = mkI 13
val a14 = mkI 14
val a15 = mkI 15
val a16 = mkI 16
val a17 = mkI 17
val a18 = mkI 18
val a19 = mkI 19
val a20 = mkI 20
val a21 = mkI 21
val a22 = mkI 22
val a23 = mkI 23
val a24 = mkI 24
val a25 = mkI 25
val a26 = mkI 26
val a27 = mkI 27
val a28 = mkI 28
val a29 = mkI 29
val a30 = mkI 30
val a31 = mkI 31
val a32 = mkI 32
val a33 = mkI 33
val a34 = mkI 34
val a35 = mkI 35
val a36 = mkI 36
val a37 = mkI 37
val a38 = mkI 38
val a39 = mkI 39
val a40 = mkI 40
val a41 = mkI 41
val a42 = mkI 42
val a43 = mkI 43
val a44 = mkI 44
val a45 = mkI 45
val a46 = mkI 46
val a47 = mkI 47
val a48 = mkI 48
val a49 = mkI 49
val a50 = mkI 50
val a51 = mkI 51
val a52 = mkI 52
val a53 = mkI 53
val a54 = mkI 54
val a55 = mkI 55
val a56 = mkI 56
val a57 = mkI 57
val a58 = mkI 58
val a59 = mkI 59
val a60 = mkI 60
val a61 = mkI 61
val a62 = mkI 62
val a63 = mkI 63
val a64 = mkI 64
val a65 = mkI 65
val a66 = mkI 66
val a67 = mkI 67
val a68 = mkI 68
val a69 = mkI 69
val a70 = mkI 70
val a71 = mkI 71
val a72 = mkI 72
val a73 = mkI 73
val a74 = mkI 74
val a75 = mkI 75
val a76 = mkI 76
val a77 = mkI 77
val a78 = mkI 78
val a79 = mkI 79
val a80 = mkI 80
val a81 = mkI 81
val a82 = mkI 82
val a83 = mkI 83
val a84 = mkI 84
val a85 = mkI 85
val a86 = mkI 86
val a87 = mkI 87
val a88 = mkI 88
val a89 = mkI 89
val a90 = mkI 90
val a91 = mkI 91
val a92 = mkI 92
val a93 = mkI 93
val a94 = mkI 94
val a95 = mkI 95
val a96 = mkI 96
val a97 = mkI 97
val a98 = mkI 98
val a99 = mkI 99
val f1 = f(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,
a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,
a20,a21,a22,a23,a24,a25,a26,a27,a28,a29,
a30,a31,a32,a33,a34,a35,a36,a37,a38,a39,
a40,a41,a42,a43,a44,a45,a46,a47,a48,a49,
a50,a51,a52,a53,a54,a55,a56,a57,a58,a59,
a60,a61,a62,a63,a64,a65,a66,a67,a68,a69,
a70,a71,a72,a73,a74,a75,a76,a77,a78,a79,
a80,a81,a82,a83,a84,a85,a86,a87,a88,a89,
a90,a91,a92,a93,a94,a95,a96,a97,a98,a99)
val g1 = g(real a0,real a1,real a2,real a3,real a4,real a5,real a6,real a7,real a8,real a9,real
a10,real a11,real a12,real a13,real a14,real a15,real a16,real a17,real a18,real a19,real
a20,real a21,real a22,real a23,real a24,real a25,real a26,real a27,real a28,real a29,real
a30,real a31,real a32,real a33,real a34,real a35,real a36,real a37,real a38,real a39,real
a40,real a41,real a42,real a43,real a44,real a45,real a46,real a47,real a48,real a49,real
a50,real a51,real a52,real a53,real a54,real a55,real a56,real a57,real a58,real a59,real
a60,real a61,real a62,real a63,real a64,real a65,real a66,real a67,real a68,real a69,real
a70,real a71,real a72,real a73,real a74,real a75,real a76,real a77,real a78,real a79,real
a80,real a81,real a82,real a83,real a84,real a85,real a86,real a87,real a88,real a89,real
a90,real a91,real a92,real a93,real a94,real a95,real a96,real a97,real a98,real a99)
in real f1 + g1
end
val r3 = h()
val _ = tst "test3" (round r3 = 2*(100*99))