[TT# 1592][t] Improve test for open opcode delegation. All tests in the file pass...
[parrot.git] / t / op / trans.t
blob4f3440b03c0cacfab21f815e062cf6652f8f34fd
1 #!./parrot
2 # Copyright (C) 2001-2010, Parrot Foundation.
3 # $Id$
5 =head1 NAME
7 t/op/trans.t - Trancendental Mathematical Ops
9 =head1 SYNOPSIS
11         % prove t/op/trans.t
13 =head1 DESCRIPTION
15 Tests various transcendental operations
17 =cut
19 .sub main :main
20     .include 'test_more.pir'
21     .local num epsilon
22     epsilon = _epsilon()
24     plan(28)
26     test_sin_n(epsilon)
27     test_sin_i(epsilon)
28     test_cos_n(epsilon)
29     test_cos_i(epsilon)
30     test_tan_n(epsilon)
31     test_tan_i(epsilon)
32     test_sec_n(epsilon)
33     test_sec_i(epsilon)
34     test_atan_n(epsilon)
35     test_atan_i(epsilon)
36     test_asin_n(epsilon)
37     test_asin_i(epsilon)
38     test_acos_n(epsilon)
39     test_acos_i(epsilon)
40     test_asec_n(epsilon)
41     test_asec_i(epsilon)
42     test_cosh_n(epsilon)
43     test_cosh_i(epsilon)
44 .end
46 .sub _pi
47     .return (3.1415926535897)
48 .end
50 .sub _e
51     .return (2.7182818459045)
52 .end
54 .sub _epsilon
55     .return (0.0001)
56 .end
58 .sub test_sin_n
59     .param num epsilon
61     $N0 = sin 0.0
62     is($N0, 0.0, "sin(0.0)", epsilon)
64     $N0 = sin 1.0
65     is($N0, 0.841471, "sin(1.0)", epsilon)
67     $N1 = _pi()
68     $N0 = sin $N1
69     is($N0, 0.0, "sin(pi)", epsilon)
71     $N1 = _pi()
72     $N1 = $N1 / 2
73     $N0 = sin $N1
74     is($N0, 1.0, "sin(pi/2)", epsilon)
75 .end
77 .sub test_sin_i
78     .param num epsilon
80     $N0 = sin 0
81     is($N0, 0.0, "sin(0)", epsilon)
83     $N0 = sin 1
84     is($N0, 0.841471, "sin(1)", epsilon)
85 .end
87 .sub test_cos_n
88     .param num epsilon
90     $N0 = cos 0.0
91     is($N0, 1.0, "cos(0.0)", epsilon)
93     $N0 = cos 1.0
94     is($N0, 0.540302, "cos(1.0)", epsilon)
96     $N1 = _pi()
97     $N0 = cos $N1
98     is($N0, -1.0, "cos(pi)", epsilon)
100     $N1 = _pi()
101     $N1 = $N1 / 2
102     $N0 = cos $N1
103     is($N0, 0.0, "cos(pi/2)", epsilon)
104 .end
106 .sub test_cos_i
107     .param num epsilon
109     $N0 = cos 0
110     is($N0, 1.0, "cos(0)", epsilon)
112     $N0 = cos 1
113     is($N0, 0.540302, "cos(1)", epsilon)
114 .end
116 .sub test_tan_n
117     .param num epsilon
119     $N0 = tan 0.0
120     is($N0, 0.0, "tan(0.0)", epsilon)
122     $N0 = tan 1.0
123     is($N0, 1.557408, "tan(1.0)", epsilon)
124 .end
126 .sub test_tan_i
127     .param num epsilon
129     $N0 = tan 0
130     is($N0, 0.0, "tan(0)", epsilon)
132     $N0 = tan 1
133     is($N0, 1.557408, "tan(1)", epsilon)
134 .end
136 .sub test_sec_n
137     .param num epsilon
139     $N1 = 1.0
140     $N2 = sec $N1
141     is($N2, 1.850816, "sec(1.0)", epsilon)
142 .end
144 .sub test_sec_i
145     .param num epsilon
147     $I1 = 1
148     $N1 = sec $I1
149     is($N1, 1.850816, "sec(1)", epsilon)
150 .end
152 .sub test_atan_n
153     .param num epsilon
155     $N1 = 1.0
156     $N2 = atan $N1
157     is($N2, 0.785398, "atan(1.0)", epsilon)
158 .end
160 .sub test_atan_i
161     .param num epsilon
163     $I1 = 1
164     $N1 = atan $I1
165     is($N1, 0.785398, "atan(1)", epsilon)
166 .end
168 .sub test_asin_n
169     .param num epsilon
170     .local num pi2
171     pi2 = _pi()
172     pi2 /= 2
174     $N1 = 1.0
175     $N2 = asin $N1
176     is($N2, pi2, "asin(1.0)", epsilon)
177 .end
179 .sub test_asin_i
180     .param num epsilon
181     .local num pi2
182     pi2 = _pi()
183     pi2 /= 2
185     $I1 = 1
186     $N1 = asin $I1
187     is($N1, pi2, "asin(1)", epsilon)
188 .end
190 .sub test_acos_n
191     .param num epsilon
193     $N1 = 1.0
194     $N2 = acos $N1
195     is($N2, 0.0, "acos(1.0)", epsilon)
196 .end
198 .sub test_acos_i
199     .param num epsilon
201     $I1 = 1
202     $N1 = acos $I1
203     is($N1, 0.0, "acos(1)", epsilon)
204 .end
206 .sub test_asec_n
207     .param num epsilon
209     $N1 = 1.0
210     $N2 = asec $N1
211     is($N2, 0.0, "asec(1.0)", epsilon)
212 .end
214 .sub test_asec_i
215     .param num epsilon
217     $I1 = 1
218     $N1 = asec $I1
219     is($N1, 0.0, "asec(1)", epsilon)
220 .end
222 .sub test_cosh_n
223     .param num epsilon
224     .local num result
226     $N1 = 1.0
227     $N2 = cosh $N1
228     is($N2, 1.543081, "cosh(1.0)", epsilon)
229 .end
231 .sub test_cosh_i
232     .param num epsilon
234     $I1 = 1
235     $N1 = cosh $I1
236     is($N1, 1.543081, "cosh(1)", epsilon)
237 .end
239 # Local Variables:
240 #   mode: pir
241 #   fill-column: 100
242 # End:
243 # vim: expandtab shiftwidth=4 ft=pir: