2 # Copyright (C) 2001-2005, The Perl Foundation.
7 use lib qw( . lib ../lib ../../lib );
9 use Parrot::Test tests => 22;
10 use Math::Trig qw( tan sec atan asin acos asec cosh sinh tanh sech );
14 t/op/trans.t - Transcendental Mathematical Ops
22 Tests the transcendental mathematical operations.
26 # This defines two macros:
29 # which will conditionally branch
30 # to LABEL if abs(n,n) < epsilon
32 pasm_output_is( <<"CODE", <<OUTPUT, "sin" );
33 .include 'include/fp_equality.pasm'
36 .fp_eq (N2, 0.841471, EQ1)
42 .fp_eq (N2, 0.841471, EQ2)
52 pasm_output_is( <<"CODE", <<OUTPUT, "cos" );
53 .include 'include/fp_equality.pasm'
56 .fp_eq (N2, 0.540302, EQ1)
62 .fp_eq (N2, 0.540302, EQ2)
71 pasm_output_is( <<"CODE", <<OUTPUT, "tan" );
72 .include 'include/fp_equality.pasm'
75 .fp_eq (N2, 1.557408, EQ1)
81 .fp_eq (N2, 1.557408, EQ2)
90 pasm_output_is( <<"CODE", <<OUTPUT, "sec" );
91 .include 'include/fp_equality.pasm'
94 .fp_eq (N2, 1.850816, EQ1)
100 .fp_eq (N2, 1.850816, EQ2)
109 pasm_output_is( <<"CODE", <<OUTPUT, "atan" );
110 .include 'include/fp_equality.pasm'
113 .fp_eq (N2, 0.785398, EQ1)
119 .fp_eq (N2,0.785398 , EQ2)
128 pasm_output_is( <<"CODE", <<OUTPUT, "asin" );
129 .include 'include/fp_equality.pasm'
132 .fp_eq (N2, 1.570796, EQ1)
138 .fp_eq (N2, 1.570796 , EQ2)
148 pasm_output_is( <<"CODE", <<OUTPUT, "acos" );
149 .include 'include/fp_equality.pasm'
152 .fp_eq (N2, 0.000000, EQ1)
158 .fp_eq (N2, 0.000000, EQ2)
168 pasm_output_is( <<"CODE", <<OUTPUT, "asec" );
169 .include 'include/fp_equality.pasm'
172 .fp_eq (N2, 0.000000, EQ1)
178 .fp_eq (N2, 0.000000, EQ2)
188 pasm_output_is( <<"CODE", <<OUTPUT, "cosh" );
189 .include 'include/fp_equality.pasm'
192 .fp_eq (N2, 1.543081, EQ1)
198 .fp_eq (N2, 1.543081, EQ2)
208 pasm_output_is( <<"CODE", <<OUTPUT, "sinh" );
209 .include 'include/fp_equality.pasm'
212 .fp_eq (N2, 1.175201, EQ1)
218 .fp_eq (N2, 1.175201, EQ2)
228 pasm_output_is( <<"CODE", <<OUTPUT, "tanh" );
229 .include 'include/fp_equality.pasm'
232 .fp_eq (N2, 0.761594, EQ1)
238 .fp_eq (N2, 0.761594, EQ2)
248 pasm_output_is( <<"CODE", <<OUTPUT, "sech" );
249 .include 'include/fp_equality.pasm'
252 .fp_eq (N2, 0.648054, EQ1)
258 .fp_eq (N2, 0.648054, EQ2)
268 pasm_output_is( <<"CODE", <<OUTPUT, "atan2" );
269 .include 'include/fp_equality.pasm'
280 .fp_eq (N4, 0.785398, EQ1)
285 .fp_eq (N4, 0.785398, EQ2)
290 .fp_eq (N4, 0.785398, EQ3)
295 .fp_eq (N4, 0.785398, EQ4)
300 .fp_eq (N4, -0.785398, EQ5)
305 .fp_eq (N4, 1.570796, EQ6)
310 .fp_eq (N4, -1.570796, EQ7)
315 .fp_eq (N4, -2.356194, EQ8)
320 .fp_eq (N4, 2.356194, EQ9)
325 .fp_eq (N4, 1.570796, EQ10)
327 EQ10: print "ok 10\\n"
330 .fp_eq (N4, 0.785398, EQ11)
332 EQ11: print "ok 11\\n"
335 .fp_eq (N4, 0.785398, EQ12)
337 EQ12: print "ok 12\\n"
340 .fp_eq (N4, 0.000000, EQ13)
342 EQ13: print "ok 13\\n"
345 .fp_eq (N4, -1.570796, EQ14)
347 EQ14: print "ok 14\\n"
350 .fp_eq (N4, 2.356194, EQ15)
352 EQ15: print "ok 15\\n"
355 .fp_eq (N4, 0.000000, EQ16)
357 EQ16: print "ok 16\\n"
379 local $TODO = 'fails on netbsd' if $^O =~ /netbsd/;
381 pasm_output_is( <<"CODE", <<'OUTPUT', 'atan, part 2' );
382 .include 'include/fp_equality.pasm'
384 .fp_eq (N4, -3.1415926, EQ1)
395 pasm_output_is( <<"CODE", <<OUTPUT, "log2" );
396 .include 'include/fp_equality.pasm'
399 .fp_eq (N2, 3.321928, EQ1)
405 .fp_eq (N2, 3.321928, EQ2)
415 pasm_output_is( <<"CODE", <<OUTPUT, "log10" );
416 .include 'include/fp_equality.pasm'
419 .fp_eq (N2, 1.176091, EQ1)
425 .fp_eq (N2, 1.176091, EQ2)
435 pasm_output_is( <<"CODE", <<OUTPUT, "ln" );
436 .include 'include/fp_equality.pasm'
439 .fp_eq (N2, 2.302585, EQ1)
445 .fp_eq (N2, 2.302585, EQ2)
454 pasm_output_is( <<"CODE", <<OUTPUT, "exp" );
455 .include 'include/fp_equality.pasm'
458 .fp_eq (N2, 22026.465795, EQ1)
464 .fp_eq (N2, 22026.465795, EQ2)
473 pasm_output_is( <<"CODE", <<OUTPUT, "pow" );
474 .include 'include/fp_equality.pasm'
480 .fp_eq (N3, 243.0, EQ1)
485 .fp_eq (N3, 243.0, EQ2)
490 .fp_eq (N3, 243.0, EQ3)
495 .fp_eq (N3, 243.0, EQ4)
506 .fp_eq (N3, 32.0, EQ5)
511 .fp_eq (N3, 0.0625, EQ6)
516 .fp_eq (N3, 2.0, EQ7)
521 .fp_eq (N3, 1.0, EQ8)
526 .fp_eq (N3, 0.0, EQ9)
531 .fp_eq (N3, 1.0, EQ10)
533 EQ10: print "ok 10\\n"
536 .fp_eq (N3, 39.0625, EQ11)
538 EQ11: print "ok 11\\n"
541 .fp_eq (N3, 0.0625, EQ12)
543 EQ12: print "ok 12\\n"
546 .fp_eq (N3, 0.0, EQ13)
548 EQ13: print "ok 13\\n"
551 .fp_eq (N3, 0.5, EQ14)
553 EQ14: print "ok 14\\n"
556 .fp_eq (N3, 256.0, EQ15)
558 EQ15: print "ok 15\\n"
561 .fp_eq (N3, 0.25, EQ16)
563 EQ16: print "ok 16\\n"
584 pasm_output_is( <<"CODE", <<OUTPUT, "sqrt" );
585 .include 'include/fp_equality.pasm'
588 .fp_eq (N2, 3.0, EQ1)
594 .fp_eq (N2, 3.0, EQ2)
604 pasm_output_is( <<'CODE', <<OUTPUT, "pow_n_n_ic" );
659 pasm_output_is( <<'CODE', <<OUTPUT, "pow_n_n_i" );
732 # cperl-indent-level: 4
735 # vim: expandtab shiftwidth=4: