2 # Copyright (C) 2001-2010, Parrot Foundation.
7 t/op/trans.t - Trancendental Mathematical Ops
15 Tests various transcendental operations
22 .include 'test_more.pir'
50 integer_overflow_with_pow()
51 e_raised_pi_time_i__plus_1_equal_0()
55 .return (3.1415926535897)
59 .return (2.7182818459045)
70 is($N0, 0.0, "sin(0.0)", epsilon)
73 is($N0, 0.841471, "sin(1.0)", epsilon)
77 is($N0, 0.0, "sin(pi)", epsilon)
82 is($N0, 1.0, "sin(pi/2)", epsilon)
89 is($N0, 0.0, "sin(0)", epsilon)
92 is($N0, 0.841471, "sin(1)", epsilon)
99 is($N0, 1.0, "cos(0.0)", epsilon)
102 is($N0, 0.540302, "cos(1.0)", epsilon)
106 is($N0, -1.0, "cos(pi)", epsilon)
111 is($N0, 0.0, "cos(pi/2)", epsilon)
118 is($N0, 1.0, "cos(0)", epsilon)
121 is($N0, 0.540302, "cos(1)", epsilon)
128 is($N0, 0.0, "tan(0.0)", epsilon)
131 is($N0, 1.557408, "tan(1.0)", epsilon)
138 is($N0, 0.0, "tan(0)", epsilon)
141 is($N0, 1.557408, "tan(1)", epsilon)
148 is($N0, 1.8305, "cot(0.5)", epsilon)
151 is($N0, 0.64209, "cot(1.0)", epsilon)
158 is($N0, 0.64209, "cot(1)", epsilon)
161 is($N0, -0.45766, "cot(2)", epsilon)
169 is($N2, 1.850816, "sec(1.0)", epsilon)
177 is($N1, 1.850816, "sec(1)", epsilon)
184 is($N0, 2.0858, "csc(0.5)", epsilon)
187 is($N0, 1.1884, "csc(1.0)", epsilon)
194 is($N0, 1.1884, "csc(1)", epsilon)
197 is($N0, 1.0998, "csc(2)", epsilon)
205 is($N2, 0.785398, "atan(1.0)", epsilon)
213 is($N1, 0.785398, "atan(1)", epsilon)
224 is($N2, pi2, "asin(1.0)", epsilon)
235 is($N1, pi2, "asin(1)", epsilon)
243 is($N2, 0.0, "acos(1.0)", epsilon)
251 is($N1, 0.0, "acos(1)", epsilon)
259 is($N2, 0.0, "asec(1.0)", epsilon)
267 is($N1, 0.0, "asec(1)", epsilon)
276 is($N2, 1.543081, "cosh(1.0)", epsilon)
284 is($N1, 1.543081, "cosh(1)", epsilon)
287 .sub integer_overflow_with_pow
288 .include "iglobals.pasm"
290 # Check that we aren't 32-bit INTVALs without GMP
291 .local pmc interp # a handle to our interpreter object.
294 config = interp[.IGLOBALS_CONFIG_HASH]
295 .local int intvalsize
296 intvalsize = config['intvalsize']
300 if intvalsize != 4 goto can_test
302 skip(40,'No integer overflow for 32-bit INTVALs without GMP installed')
319 is( $S0, $I1, 'integer_overflow_with_pow' )
322 # XXX: this must be extended to at least 64 bit range
323 # when sure that the result is not floating point.
324 # In the meantime, make sure it overflows nicely
326 unless i2 > 40 goto next
331 .macro sprintf_is(fmt, number, message)
333 $S0 = sprintf .fmt, c
338 .sub e_raised_pi_time_i__plus_1_equal_0
350 .sprintf_is( "%.3f%+.3fi", c2, "0.000+0.000i" )
357 # vim: expandtab shiftwidth=4 ft=pir: