[svn:parrot] r46813 - in branches/ops_massacre: . src/dynoplibs src/ops t/compilers/imcc/syn t/dynoplibs t/op t/pmc
plobsing at svn.parrot.org
plobsing at svn.parrot.org
Thu May 20 07:12:17 UTC 2010
Author: plobsing
Date: Thu May 20 07:12:16 2010
New Revision: 46813
URL: https://trac.parrot.org/parrot/changeset/46813
Log:
move transcendental ops to dynops
Added:
branches/ops_massacre/src/dynoplibs/trans.ops (contents, props changed)
branches/ops_massacre/t/dynoplibs/trans-infnan.t (contents, props changed)
branches/ops_massacre/t/dynoplibs/trans-old.t (contents, props changed)
branches/ops_massacre/t/dynoplibs/trans.t (contents, props changed)
Deleted:
branches/ops_massacre/t/op/trans.t
branches/ops_massacre/t/op/trans_old.t
Modified:
branches/ops_massacre/MANIFEST
branches/ops_massacre/src/dynoplibs/Defines.in
branches/ops_massacre/src/dynoplibs/Rules.in
branches/ops_massacre/src/dynoplibs/math.ops
branches/ops_massacre/src/ops/math.ops
branches/ops_massacre/src/ops/ops.num
branches/ops_massacre/t/compilers/imcc/syn/op.t
branches/ops_massacre/t/dynoplibs/obscure.t
branches/ops_massacre/t/op/arithmetics.t
branches/ops_massacre/t/op/arithmetics_pmc.t
branches/ops_massacre/t/op/inf_nan.t
branches/ops_massacre/t/op/sprintf.t
branches/ops_massacre/t/pmc/complex.t
branches/ops_massacre/t/pmc/integer.t
branches/ops_massacre/t/pmc/sub.t
Modified: branches/ops_massacre/MANIFEST
==============================================================================
--- branches/ops_massacre/MANIFEST Thu May 20 05:43:45 2010 (r46812)
+++ branches/ops_massacre/MANIFEST Thu May 20 07:12:16 2010 (r46813)
@@ -1,7 +1,7 @@
# ex: set ro:
# $Id$
#
-# generated by tools/dev/mk_manifest_and_skip.pl Thu May 20 00:41:03 2010 UT
+# generated by tools/dev/mk_manifest_and_skip.pl Thu May 20 06:44:30 2010 UT
#
# See below for documentation on the format of this file.
#
@@ -1244,6 +1244,7 @@
src/dynoplibs/deprecated.ops []
src/dynoplibs/math.ops []
src/dynoplibs/obscure.ops []
+src/dynoplibs/trans.ops []
src/dynpmc/Defines.in []
src/dynpmc/README.pod []doc
src/dynpmc/Rules.in []
@@ -1629,6 +1630,9 @@
t/dynoplibs/deprecated.t [test]
t/dynoplibs/math.t [test]
t/dynoplibs/obscure.t [test]
+t/dynoplibs/trans-infnan.t [test]
+t/dynoplibs/trans-old.t [test]
+t/dynoplibs/trans.t [test]
t/dynpmc/dynlexpad.t [test]
t/dynpmc/file.t [test]
t/dynpmc/foo.t [test]
@@ -1789,8 +1793,6 @@
t/op/sysinfo.t [test]
t/op/time.t [test]
t/op/time_old.t [test]
-t/op/trans.t [test]
-t/op/trans_old.t [test]
t/op/vivify.t [test]
t/perl/Parrot_Distribution.t [test]
t/perl/Parrot_Docs.t [test]
Modified: branches/ops_massacre/src/dynoplibs/Defines.in
==============================================================================
--- branches/ops_massacre/src/dynoplibs/Defines.in Thu May 20 05:43:45 2010 (r46812)
+++ branches/ops_massacre/src/dynoplibs/Defines.in Thu May 20 07:12:16 2010 (r46813)
@@ -2,6 +2,7 @@
$(DYNEXT_DIR)/obscure_ops$(LOAD_EXT) \
$(DYNEXT_DIR)/math_ops$(LOAD_EXT) \
$(DYNEXT_DIR)/deprecated_ops$(LOAD_EXT) \
+ $(DYNEXT_DIR)/trans_ops$(LOAD_EXT) \
DYNOPLIBS_CLEANUPS = \
src/dynoplibs/*.c \
Modified: branches/ops_massacre/src/dynoplibs/Rules.in
==============================================================================
--- branches/ops_massacre/src/dynoplibs/Rules.in Thu May 20 05:43:45 2010 (r46812)
+++ branches/ops_massacre/src/dynoplibs/Rules.in Thu May 20 07:12:16 2010 (r46813)
@@ -47,3 +47,16 @@
src/dynoplibs/deprecated_ops.c: src/dynoplibs/deprecated.ops $(BUILD_TOOLS_DIR)/ops2c.pl
$(PERL) $(BUILD_TOOLS_DIR)/ops2c.pl C --dynamic src/dynoplibs/deprecated.ops
+
+$(DYNEXT_DIR)/trans_ops$(LOAD_EXT): src/dynoplibs/trans_ops$(O) $(LIBPARROT)
+ $(LD) @ld_out@$@ src/dynoplibs/trans_ops$(O) $(LINKARGS)
+#IF(win32): if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;2
+#IF(cygwin or hpux): $(CHMOD) 0775 $@
+
+src/dynoplibs/trans_ops$(O): $(DYNOP_O_DEPS) \
+ src/dynoplibs/trans_ops.c src/dynoplibs/trans_ops.h
+
+src/dynoplibs/trans_ops.h: src/dynoplibs/trans_ops.c
+
+src/dynoplibs/trans_ops.c: src/dynoplibs/trans.ops $(BUILD_TOOLS_DIR)/ops2c.pl
+ $(PERL) $(BUILD_TOOLS_DIR)/ops2c.pl C --dynamic src/dynoplibs/trans.ops
Modified: branches/ops_massacre/src/dynoplibs/math.ops
==============================================================================
--- branches/ops_massacre/src/dynoplibs/math.ops Thu May 20 05:43:45 2010 (r46812)
+++ branches/ops_massacre/src/dynoplibs/math.ops Thu May 20 07:12:16 2010 (r46813)
@@ -25,7 +25,13 @@
=cut
-=over
+###############################################################################
+
+=head2 Pseudorandom number operations
+
+These operations perform various pseudorandom number operations.
+
+=over 4
=item B<rand>(out NUM)
@@ -109,6 +115,8 @@
=back
+=cut
+
=head1 COPYRIGHT
Copyright (C) 2001-2009, Parrot Foundation.
Added: branches/ops_massacre/src/dynoplibs/trans.ops
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_massacre/src/dynoplibs/trans.ops Thu May 20 07:12:16 2010 (r46813)
@@ -0,0 +1,320 @@
+/*
+ * $Id$
+ * trans.ops
+ */
+
+=head1 NAME
+
+trans.ops - Transcendental Opcodes
+
+=head1 DESCRIPTION
+
+Addition library of operations to perform various transcendental operations such
+as logarithmics and trigonometrics.
+
+To use this library of ops, add this directive to your PIR:
+
+ .loadlib 'trans_ops'
+
+=over 4
+
+=cut
+
+########################################
+
+=item B<acos>(out NUM, in NUM)
+
+Set $1 to the arc cosine (in radians) of $2.
+
+=cut
+
+inline op acos(out NUM, in NUM) :base_math {
+ $1 = acos((FLOATVAL)$2);
+}
+
+########################################
+
+=item B<asec>(out NUM, in NUM)
+
+Set $1 to the arc secant (in radians) of $2.
+
+=cut
+
+inline op asec(out NUM, in NUM) :base_math {
+ $1 = acos(((FLOATVAL)1) / ((FLOATVAL)$2));
+}
+
+########################################
+
+
+=item B<asin>(out NUM, in NUM)
+
+Set $1 to the arc sine (in radians) of $2.
+
+=cut
+
+inline op asin(out NUM, in NUM) :base_math {
+ $1 = asin((FLOATVAL)$2);
+}
+
+########################################
+
+=item B<atan>(out NUM, in NUM)
+
+=item B<atan>(out NUM, in NUM, in NUM)
+
+The two-argument versions set $1 to the arc tangent (in radians) of $2.
+
+The three-argument versions set $1 to the arc tangent (in radians) of
+$2 / $3, taking account of the signs of the arguments in determining the
+quadrant of the result.
+
+=cut
+
+inline op atan(out NUM, in NUM) :base_math {
+ $1 = atan((FLOATVAL)$2);
+}
+
+inline op atan(out NUM, in NUM, in NUM) :base_math {
+ $1 = atan2((FLOATVAL)$2, (FLOATVAL)$3);
+}
+
+########################################
+
+=item B<cos>(out NUM, in NUM)
+
+Set $1 to the cosine of $2 (given in radians).
+
+=cut
+
+inline op cos(out NUM, in NUM) :base_math {
+ $1 = cos((FLOATVAL)$2);
+}
+
+########################################
+
+=item B<cosh>(out NUM, in NUM)
+
+Set $1 to the hyperbolic cosine of $2 (given in radians).
+
+=cut
+
+inline op cosh(out NUM, in NUM) :base_math {
+ $1 = cosh((FLOATVAL)$2);
+}
+
+########################################
+
+=item B<exp>(out NUM, in NUM)
+
+Set $1 to I<e> raised to the power $2. I<e> is the base of the natural
+logarithm.
+
+=cut
+
+inline op exp(out NUM, in NUM) :base_math {
+ $1 = exp((FLOATVAL)$2);
+}
+
+########################################
+
+=item B<ln>(out NUM, in NUM)
+
+Set $1 to the natural (base I<e>) logarithm of $2.
+
+=cut
+
+inline op ln(out NUM, in NUM) :base_math {
+ $1 = log((FLOATVAL)$2);
+}
+
+########################################
+
+=item B<log10>(out NUM, in NUM)
+
+Set $1 to the base 10 logarithm of $2.
+
+=cut
+
+inline op log10(out NUM, in NUM) :base_math {
+ $1 = log10((FLOATVAL)$2);
+}
+
+########################################
+
+=item B<log2>(out NUM, in NUM)
+
+Set $1 to the base 2 logarithm of $2.
+
+=cut
+
+op log2(out NUM, in NUM) :base_math {
+ FLOATVAL temp = log((FLOATVAL)2.0);
+ $1 = log((FLOATVAL)$2) / temp;
+}
+
+########################################
+
+=item B<sec>(out NUM, in NUM)
+
+Set $1 to the secant of $2 (given in radians).
+
+=cut
+
+inline op sec(out NUM, in NUM) :base_math {
+ $1 = ((FLOATVAL)1) / cos((FLOATVAL)$2);
+}
+
+########################################
+
+=item B<sech>(out NUM, in NUM)
+
+Set $1 to the hyperbolic secant of $2 (given in radians).
+
+=cut
+
+inline op sech(out NUM, in NUM) :base_math {
+ $1 = ((FLOATVAL)1) / cosh((FLOATVAL)$2);
+}
+
+########################################
+
+=item B<sin>(out NUM, in NUM)
+
+Set $1 to the sine of $2 (given in radians).
+
+=cut
+
+inline op sin(out NUM, in NUM) :base_math {
+ $1 = sin((FLOATVAL)$2);
+}
+
+########################################
+
+=item B<sinh>(out NUM, in NUM)
+
+Set $1 to the hyperbolic sine of $2 (given in radians).
+
+=cut
+
+inline op sinh(out NUM, in NUM) :base_math {
+ $1 = sinh((FLOATVAL)$2);
+}
+
+########################################
+
+=item B<tan>(out NUM, in NUM)
+
+Set $1 to the tangent of $2 (given in radians).
+
+=cut
+
+inline op tan(out NUM, in NUM) :base_math {
+ $1 = tan((FLOATVAL)$2);
+}
+
+########################################
+
+=item B<tanh>(out NUM, in NUM)
+
+Set $1 to the hyperbolic tangent of $2 (given in radians).
+
+=cut
+
+inline op tanh(out NUM, in NUM) :base_math {
+ $1 = tanh((FLOATVAL)$2);
+}
+
+=item B<pow>(out NUM, in NUM, in NUM)
+
+=item B<pow>(out NUM, in NUM, in INT)
+
+=item B<pow>(invar PMC, invar PMC, invar PMC)
+
+=item B<pow>(invar PMC, invar PMC, in INT)
+
+=item B<pow>(invar PMC, invar PMC, in NUM)
+
+Set $1 to $2 raised to the power $3.
+
+=cut
+
+inline op pow(out NUM, in NUM, in NUM) :base_core {
+ $1 = pow((FLOATVAL)$2, (FLOATVAL)$3);
+}
+
+inline op pow(invar PMC, invar PMC, invar PMC) :base_core {
+ const FLOATVAL a = VTABLE_get_number(interp, $2);
+ const FLOATVAL b = VTABLE_get_number(interp, $3);
+ const FLOATVAL c = pow(a, b);
+ if (PMC_IS_NULL($1))
+ $1 = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_Float));
+ else
+ $1 = Parrot_pmc_new(interp, $1->vtable->base_type);
+ VTABLE_set_number_native(interp, $1, c);
+}
+
+inline op pow(invar PMC, invar PMC, in INT) :base_core {
+ const FLOATVAL a = VTABLE_get_number(interp, $2);
+ const FLOATVAL b = (FLOATVAL)$3;
+ const FLOATVAL c = pow(a, b);
+ if (PMC_IS_NULL($1))
+ $1 = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_Float));
+ else
+ $1 = Parrot_pmc_new(interp, $1->vtable->base_type);
+ VTABLE_set_number_native(interp, $1, c);
+}
+
+inline op pow(invar PMC, invar PMC, in NUM) :base_core {
+ const FLOATVAL a = VTABLE_get_number(interp, $2);
+ const FLOATVAL c = pow(a, $3);
+ if (PMC_IS_NULL($1))
+ $1 = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_Float));
+ else
+ $1 = Parrot_pmc_new(interp, $1->vtable->base_type);
+ VTABLE_set_number_native(interp, $1, c);
+}
+
+inline op pow(out NUM, in NUM, in INT) :base_core {
+ FLOATVAL n2 = $2;
+ FLOATVAL res = 1.0;
+ INTVAL e = $3;
+ int s = 1;
+ if (e != 0) {
+ if (e < 0) {
+ s = -1;
+ e = -e;
+ }
+ }
+ while (e) {
+ if (e & 1) {
+ res *= n2;
+ }
+ n2 *= n2;
+ e >>= 1;
+ }
+ if (s < 0) {
+ res = 1.0/res;
+ }
+ $1 = res;
+}
+
+=back
+
+=head1 COPYRIGHT
+
+Copyright (C) 2010-2010, Parrot Foundation.
+
+=head1 LICENSE
+
+This program is free software. It is subject to the same license
+as the Parrot interpreter itself.
+
+=cut
+
+/*
+ * Local variables:
+ * c-file-style: "parrot"
+ * End:
+ * vim: expandtab shiftwidth=4:
+ */
Modified: branches/ops_massacre/src/ops/math.ops
==============================================================================
--- branches/ops_massacre/src/ops/math.ops Thu May 20 05:43:45 2010 (r46812)
+++ branches/ops_massacre/src/ops/math.ops Thu May 20 07:12:16 2010 (r46813)
@@ -11,8 +11,8 @@
=head1 DESCRIPTION
-Operations that perform some sort of mathematics, including both basic
-math and transcendental functions.
+Operations that perform basic mathematics. See F<src/dynoplibs/> for more
+advanced operations.
=head2 Arithmetic operations
@@ -787,82 +787,6 @@
########################################
-=item B<pow>(out NUM, in NUM, in NUM)
-
-=item B<pow>(out NUM, in NUM, in INT)
-
-=item B<pow>(invar PMC, invar PMC, invar PMC)
-
-=item B<pow>(invar PMC, invar PMC, in INT)
-
-=item B<pow>(invar PMC, invar PMC, in NUM)
-
-Set $1 to $2 raised to the power $3.
-
-=cut
-
-inline op pow(out NUM, in NUM, in NUM) :base_core {
- $1 = pow((FLOATVAL)$2, (FLOATVAL)$3);
-}
-
-inline op pow(invar PMC, invar PMC, invar PMC) :base_core {
- const FLOATVAL a = VTABLE_get_number(interp, $2);
- const FLOATVAL b = VTABLE_get_number(interp, $3);
- const FLOATVAL c = pow(a, b);
- if (PMC_IS_NULL($1))
- $1 = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_Float));
- else
- $1 = Parrot_pmc_new(interp, $1->vtable->base_type);
- VTABLE_set_number_native(interp, $1, c);
-}
-
-inline op pow(invar PMC, invar PMC, in INT) :base_core {
- const FLOATVAL a = VTABLE_get_number(interp, $2);
- const FLOATVAL b = (FLOATVAL)$3;
- const FLOATVAL c = pow(a, b);
- if (PMC_IS_NULL($1))
- $1 = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_Float));
- else
- $1 = Parrot_pmc_new(interp, $1->vtable->base_type);
- VTABLE_set_number_native(interp, $1, c);
-}
-
-inline op pow(invar PMC, invar PMC, in NUM) :base_core {
- const FLOATVAL a = VTABLE_get_number(interp, $2);
- const FLOATVAL c = pow(a, $3);
- if (PMC_IS_NULL($1))
- $1 = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_Float));
- else
- $1 = Parrot_pmc_new(interp, $1->vtable->base_type);
- VTABLE_set_number_native(interp, $1, c);
-}
-
-inline op pow(out NUM, in NUM, in INT) :base_core {
- FLOATVAL n2 = $2;
- FLOATVAL res = 1.0;
- INTVAL e = $3;
- int s = 1;
- if (e != 0) {
- if (e < 0) {
- s = -1;
- e = -e;
- }
- }
- while (e) {
- if (e & 1) {
- res *= n2;
- }
- n2 *= n2;
- e >>= 1;
- }
- if (s < 0) {
- res = 1.0/res;
- }
- $1 = res;
-}
-
-########################################
-
=item B<sub>(inout INT, in INT)
=item B<sub>(inout NUM, in NUM)
@@ -945,228 +869,6 @@
=cut
-
-
-###############################################################################
-
-=head2 Transcendental mathematical operations
-
-These operations perform various transcendental operations such as logarithmics
-and trigonometrics.
-
-=over 4
-
-=cut
-
-########################################
-
-=item B<acos>(out NUM, in NUM)
-
-Set $1 to the arc cosine (in radians) of $2.
-
-=cut
-
-inline op acos(out NUM, in NUM) :base_math {
- $1 = acos((FLOATVAL)$2);
-}
-
-########################################
-
-=item B<asec>(out NUM, in NUM)
-
-Set $1 to the arc secant (in radians) of $2.
-
-=cut
-
-inline op asec(out NUM, in NUM) :base_math {
- $1 = acos(((FLOATVAL)1) / ((FLOATVAL)$2));
-}
-
-########################################
-
-
-=item B<asin>(out NUM, in NUM)
-
-Set $1 to the arc sine (in radians) of $2.
-
-=cut
-
-inline op asin(out NUM, in NUM) :base_math {
- $1 = asin((FLOATVAL)$2);
-}
-
-########################################
-
-=item B<atan>(out NUM, in NUM)
-
-=item B<atan>(out NUM, in NUM, in NUM)
-
-The two-argument versions set $1 to the arc tangent (in radians) of $2.
-
-The three-argument versions set $1 to the arc tangent (in radians) of
-$2 / $3, taking account of the signs of the arguments in determining the
-quadrant of the result.
-
-=cut
-
-inline op atan(out NUM, in NUM) :base_math {
- $1 = atan((FLOATVAL)$2);
-}
-
-inline op atan(out NUM, in NUM, in NUM) :base_math {
- $1 = atan2((FLOATVAL)$2, (FLOATVAL)$3);
-}
-
-########################################
-
-=item B<cos>(out NUM, in NUM)
-
-Set $1 to the cosine of $2 (given in radians).
-
-=cut
-
-inline op cos(out NUM, in NUM) :base_math {
- $1 = cos((FLOATVAL)$2);
-}
-
-########################################
-
-=item B<cosh>(out NUM, in NUM)
-
-Set $1 to the hyperbolic cosine of $2 (given in radians).
-
-=cut
-
-inline op cosh(out NUM, in NUM) :base_math {
- $1 = cosh((FLOATVAL)$2);
-}
-
-########################################
-
-=item B<exp>(out NUM, in NUM)
-
-Set $1 to I<e> raised to the power $2. I<e> is the base of the natural
-logarithm.
-
-=cut
-
-inline op exp(out NUM, in NUM) :base_math {
- $1 = exp((FLOATVAL)$2);
-}
-
-########################################
-
-=item B<ln>(out NUM, in NUM)
-
-Set $1 to the natural (base I<e>) logarithm of $2.
-
-=cut
-
-inline op ln(out NUM, in NUM) :base_math {
- $1 = log((FLOATVAL)$2);
-}
-
-########################################
-
-=item B<log10>(out NUM, in NUM)
-
-Set $1 to the base 10 logarithm of $2.
-
-=cut
-
-inline op log10(out NUM, in NUM) :base_math {
- $1 = log10((FLOATVAL)$2);
-}
-
-########################################
-
-=item B<log2>(out NUM, in NUM)
-
-Set $1 to the base 2 logarithm of $2.
-
-=cut
-
-op log2(out NUM, in NUM) :base_math {
- FLOATVAL temp = log((FLOATVAL)2.0);
- $1 = log((FLOATVAL)$2) / temp;
-}
-
-########################################
-
-=item B<sec>(out NUM, in NUM)
-
-Set $1 to the secant of $2 (given in radians).
-
-=cut
-
-inline op sec(out NUM, in NUM) :base_math {
- $1 = ((FLOATVAL)1) / cos((FLOATVAL)$2);
-}
-
-########################################
-
-=item B<sech>(out NUM, in NUM)
-
-Set $1 to the hyperbolic secant of $2 (given in radians).
-
-=cut
-
-inline op sech(out NUM, in NUM) :base_math {
- $1 = ((FLOATVAL)1) / cosh((FLOATVAL)$2);
-}
-
-########################################
-
-=item B<sin>(out NUM, in NUM)
-
-Set $1 to the sine of $2 (given in radians).
-
-=cut
-
-inline op sin(out NUM, in NUM) :base_math {
- $1 = sin((FLOATVAL)$2);
-}
-
-########################################
-
-=item B<sinh>(out NUM, in NUM)
-
-Set $1 to the hyperbolic sine of $2 (given in radians).
-
-=cut
-
-inline op sinh(out NUM, in NUM) :base_math {
- $1 = sinh((FLOATVAL)$2);
-}
-
-########################################
-
-=item B<tan>(out NUM, in NUM)
-
-Set $1 to the tangent of $2 (given in radians).
-
-=cut
-
-inline op tan(out NUM, in NUM) :base_math {
- $1 = tan((FLOATVAL)$2);
-}
-
-########################################
-
-=item B<tanh>(out NUM, in NUM)
-
-Set $1 to the hyperbolic tangent of $2 (given in radians).
-
-=cut
-
-inline op tanh(out NUM, in NUM) :base_math {
- $1 = tanh((FLOATVAL)$2);
-}
-
-=back
-
-=cut
-
###############################################################################
=head1 COPYRIGHT
Modified: branches/ops_massacre/src/ops/ops.num
==============================================================================
--- branches/ops_massacre/src/ops/ops.num Thu May 20 05:43:45 2010 (r46812)
+++ branches/ops_massacre/src/ops/ops.num Thu May 20 07:12:16 2010 (r46813)
@@ -657,568 +657,537 @@
neg_i_i 633
neg_n_n 634
neg_p_p 635
-pow_n_n_n 636
-pow_n_nc_n 637
-pow_n_n_nc 638
-pow_p_p_p 639
-pow_p_p_i 640
-pow_p_p_ic 641
-pow_p_p_n 642
-pow_p_p_nc 643
-pow_n_n_i 644
-pow_n_nc_i 645
-pow_n_n_ic 646
-pow_n_nc_ic 647
-sub_i_i 648
-sub_i_ic 649
-sub_n_n 650
-sub_n_nc 651
-sub_p_p 652
-sub_p_i 653
-sub_p_ic 654
-sub_p_n 655
-sub_p_nc 656
-sub_i_i_i 657
-sub_i_ic_i 658
-sub_i_i_ic 659
-sub_n_n_n 660
-sub_n_nc_n 661
-sub_n_n_nc 662
-sub_p_p_p 663
-sub_p_p_i 664
-sub_p_p_ic 665
-sub_p_p_n 666
-sub_p_p_nc 667
-sqrt_n_n 668
-acos_n_n 669
-asec_n_n 670
-asin_n_n 671
-atan_n_n 672
-atan_n_n_n 673
-atan_n_nc_n 674
-atan_n_n_nc 675
-cos_n_n 676
-cosh_n_n 677
-exp_n_n 678
-ln_n_n 679
-log10_n_n 680
-log2_n_n 681
-sec_n_n 682
-sech_n_n 683
-sin_n_n 684
-sinh_n_n 685
-tan_n_n 686
-tanh_n_n 687
-callmethodcc_p_s 688
-callmethodcc_p_sc 689
-callmethodcc_p_p 690
-callmethod_p_s_p 691
-callmethod_p_sc_p 692
-callmethod_p_p_p 693
-tailcallmethod_p_s 694
-tailcallmethod_p_sc 695
-tailcallmethod_p_p 696
-addmethod_p_s_p 697
-addmethod_p_sc_p 698
-can_i_p_s 699
-can_i_p_sc 700
-does_i_p_s 701
-does_i_p_sc 702
-does_i_p_p 703
-does_i_p_pc 704
-isa_i_p_s 705
-isa_i_p_sc 706
-isa_i_p_p 707
-isa_i_p_pc 708
-newclass_p_s 709
-newclass_p_sc 710
-newclass_p_p 711
-newclass_p_pc 712
-subclass_p_p 713
-subclass_p_pc 714
-subclass_p_p_s 715
-subclass_p_pc_s 716
-subclass_p_p_sc 717
-subclass_p_pc_sc 718
-subclass_p_p_p 719
-subclass_p_pc_p 720
-subclass_p_p_pc 721
-subclass_p_pc_pc 722
-subclass_p_s 723
-subclass_p_sc 724
-subclass_p_s_s 725
-subclass_p_sc_s 726
-subclass_p_s_sc 727
-subclass_p_sc_sc 728
-subclass_p_s_p 729
-subclass_p_sc_p 730
-subclass_p_s_pc 731
-subclass_p_sc_pc 732
-get_class_p_s 733
-get_class_p_sc 734
-get_class_p_p 735
-get_class_p_pc 736
-class_p_p 737
-addparent_p_p 738
-removeparent_p_p 739
-addrole_p_p 740
-addattribute_p_s 741
-addattribute_p_sc 742
-removeattribute_p_s 743
-removeattribute_p_sc 744
-getattribute_p_p_s 745
-getattribute_p_p_sc 746
-getattribute_p_p_p_s 747
-getattribute_p_p_pc_s 748
-getattribute_p_p_p_sc 749
-getattribute_p_p_pc_sc 750
-setattribute_p_s_p 751
-setattribute_p_sc_p 752
-setattribute_p_p_s_p 753
-setattribute_p_pc_s_p 754
-setattribute_p_p_sc_p 755
-setattribute_p_pc_sc_p 756
-inspect_p_p 757
-inspect_p_pc 758
-inspect_p_p_s 759
-inspect_p_pc_s 760
-inspect_p_p_sc 761
-inspect_p_pc_sc 762
-new_p_s 763
-new_p_sc 764
-new_p_s_p 765
-new_p_sc_p 766
-new_p_s_pc 767
-new_p_sc_pc 768
-new_p_p 769
-new_p_pc 770
-new_p_p_p 771
-new_p_pc_p 772
-new_p_p_pc 773
-new_p_pc_pc 774
-root_new_p_p 775
-root_new_p_pc 776
-root_new_p_p_p 777
-root_new_p_pc_p 778
-root_new_p_p_pc 779
-root_new_p_pc_pc 780
-typeof_s_p 781
-typeof_p_p 782
-get_repr_s_p 783
-find_method_p_p_s 784
-find_method_p_p_sc 785
-defined_i_p 786
-defined_i_p_ki 787
-defined_i_p_kic 788
-defined_i_p_k 789
-defined_i_p_kc 790
-exists_i_p_ki 791
-exists_i_p_kic 792
-exists_i_p_k 793
-exists_i_p_kc 794
-delete_p_k 795
-delete_p_kc 796
-delete_p_ki 797
-delete_p_kic 798
-elements_i_p 799
-push_p_i 800
-push_p_ic 801
-push_p_n 802
-push_p_nc 803
-push_p_s 804
-push_p_sc 805
-push_p_p 806
-pop_i_p 807
-pop_n_p 808
-pop_s_p 809
-pop_p_p 810
-unshift_p_i 811
-unshift_p_ic 812
-unshift_p_n 813
-unshift_p_nc 814
-unshift_p_s 815
-unshift_p_sc 816
-unshift_p_p 817
-shift_i_p 818
-shift_n_p 819
-shift_s_p 820
-shift_p_p 821
-splice_p_p_i_i 822
-splice_p_p_ic_i 823
-splice_p_p_i_ic 824
-splice_p_p_ic_ic 825
-setprop_p_s_p 826
-setprop_p_sc_p 827
-getprop_p_s_p 828
-getprop_p_sc_p 829
-delprop_p_s 830
-delprop_p_sc 831
-prophash_p_p 832
-freeze_s_p 833
-thaw_p_s 834
-thaw_p_sc 835
-add_multi_s_s_p 836
-add_multi_sc_s_p 837
-add_multi_s_sc_p 838
-add_multi_sc_sc_p 839
-find_multi_p_s_s 840
-find_multi_p_sc_s 841
-find_multi_p_s_sc 842
-find_multi_p_sc_sc 843
-register_p 844
-unregister_p 845
-box_p_i 846
-box_p_ic 847
-box_p_n 848
-box_p_nc 849
-box_p_s 850
-box_p_sc 851
-iter_p_p 852
-morph_p_p 853
-morph_p_pc 854
-clone_s_s 855
-clone_s_sc 856
-set_i_i 857
-set_i_ic 858
-set_i_n 859
-set_i_nc 860
-set_i_s 861
-set_i_sc 862
-set_n_n 863
-set_n_nc 864
-set_n_i 865
-set_n_ic 866
-set_n_s 867
-set_n_sc 868
-set_n_p 869
-set_s_p 870
-set_s_s 871
-set_s_sc 872
-set_s_i 873
-set_s_ic 874
-set_s_n 875
-set_s_nc 876
-set_p_pc 877
-set_p_p 878
-set_p_i 879
-set_p_ic 880
-set_p_n 881
-set_p_nc 882
-set_p_s 883
-set_p_sc 884
-set_i_p 885
-assign_p_p 886
-assign_p_i 887
-assign_p_ic 888
-assign_p_n 889
-assign_p_nc 890
-assign_p_s 891
-assign_p_sc 892
-assign_s_s 893
-assign_s_sc 894
-setref_p_p 895
-deref_p_p 896
-set_p_ki_i 897
-set_p_kic_i 898
-set_p_ki_ic 899
-set_p_kic_ic 900
-set_p_ki_n 901
-set_p_kic_n 902
-set_p_ki_nc 903
-set_p_kic_nc 904
-set_p_ki_s 905
-set_p_kic_s 906
-set_p_ki_sc 907
-set_p_kic_sc 908
-set_p_ki_p 909
-set_p_kic_p 910
-set_i_p_ki 911
-set_i_p_kic 912
-set_n_p_ki 913
-set_n_p_kic 914
-set_s_p_ki 915
-set_s_p_kic 916
-set_p_p_ki 917
-set_p_p_kic 918
-set_p_k_i 919
-set_p_kc_i 920
-set_p_k_ic 921
-set_p_kc_ic 922
-set_p_k_n 923
-set_p_kc_n 924
-set_p_k_nc 925
-set_p_kc_nc 926
-set_p_k_s 927
-set_p_kc_s 928
-set_p_k_sc 929
-set_p_kc_sc 930
-set_p_k_p 931
-set_p_kc_p 932
-set_i_p_k 933
-set_i_p_kc 934
-set_n_p_k 935
-set_n_p_kc 936
-set_s_p_k 937
-set_s_p_kc 938
-set_p_p_k 939
-set_p_p_kc 940
-clone_p_p 941
-clone_p_p_p 942
-clone_p_p_pc 943
-copy_p_p 944
-null_s 945
-null_i 946
-null_p 947
-null_n 948
-ord_i_s 949
-ord_i_sc 950
-ord_i_s_i 951
-ord_i_sc_i 952
-ord_i_s_ic 953
-ord_i_sc_ic 954
-chr_s_i 955
-chr_s_ic 956
-chopn_s_s_i 957
-chopn_s_sc_i 958
-chopn_s_s_ic 959
-chopn_s_sc_ic 960
-concat_s_s 961
-concat_s_sc 962
-concat_p_p 963
-concat_p_s 964
-concat_p_sc 965
-concat_s_s_s 966
-concat_s_sc_s 967
-concat_s_s_sc 968
-concat_p_p_s 969
-concat_p_p_sc 970
-concat_p_p_p 971
-repeat_s_s_i 972
-repeat_s_sc_i 973
-repeat_s_s_ic 974
-repeat_s_sc_ic 975
-repeat_p_p_i 976
-repeat_p_p_ic 977
-repeat_p_p_p 978
-repeat_p_i 979
-repeat_p_ic 980
-repeat_p_p 981
-length_i_s 982
-length_i_sc 983
-bytelength_i_s 984
-bytelength_i_sc 985
-pin_s 986
-unpin_s 987
-substr_s_s_i 988
-substr_s_sc_i 989
-substr_s_s_ic 990
-substr_s_sc_ic 991
-substr_s_s_i_i 992
-substr_s_sc_i_i 993
-substr_s_s_ic_i 994
-substr_s_sc_ic_i 995
-substr_s_s_i_ic 996
-substr_s_sc_i_ic 997
-substr_s_s_ic_ic 998
-substr_s_sc_ic_ic 999
-substr_s_p_i_i 1000
-substr_s_p_ic_i 1001
-substr_s_p_i_ic 1002
-substr_s_p_ic_ic 1003
-replace_s_s_i_i_s 1004
-replace_s_sc_i_i_s 1005
-replace_s_s_ic_i_s 1006
-replace_s_sc_ic_i_s 1007
-replace_s_s_i_ic_s 1008
-replace_s_sc_i_ic_s 1009
-replace_s_s_ic_ic_s 1010
-replace_s_sc_ic_ic_s 1011
-replace_s_s_i_i_sc 1012
-replace_s_sc_i_i_sc 1013
-replace_s_s_ic_i_sc 1014
-replace_s_sc_ic_i_sc 1015
-replace_s_s_i_ic_sc 1016
-replace_s_sc_i_ic_sc 1017
-replace_s_s_ic_ic_sc 1018
-replace_s_sc_ic_ic_sc 1019
-index_i_s_s 1020
-index_i_sc_s 1021
-index_i_s_sc 1022
-index_i_sc_sc 1023
-index_i_s_s_i 1024
-index_i_sc_s_i 1025
-index_i_s_sc_i 1026
-index_i_sc_sc_i 1027
-index_i_s_s_ic 1028
-index_i_sc_s_ic 1029
-index_i_s_sc_ic 1030
-index_i_sc_sc_ic 1031
-sprintf_s_s_p 1032
-sprintf_s_sc_p 1033
-sprintf_p_p_p 1034
-new_s 1035
-new_s_i 1036
-new_s_ic 1037
-stringinfo_i_s_i 1038
-stringinfo_i_sc_i 1039
-stringinfo_i_s_ic 1040
-stringinfo_i_sc_ic 1041
-upcase_s_s 1042
-upcase_s_sc 1043
-downcase_s_s 1044
-downcase_s_sc 1045
-titlecase_s_s 1046
-titlecase_s_sc 1047
-join_s_s_p 1048
-join_s_sc_p 1049
-split_p_s_s 1050
-split_p_sc_s 1051
-split_p_s_sc 1052
-split_p_sc_sc 1053
-charset_i_s 1054
-charset_i_sc 1055
-charsetname_s_i 1056
-charsetname_s_ic 1057
-find_charset_i_s 1058
-find_charset_i_sc 1059
-trans_charset_s_s_i 1060
-trans_charset_s_sc_i 1061
-trans_charset_s_s_ic 1062
-trans_charset_s_sc_ic 1063
-encoding_i_s 1064
-encoding_i_sc 1065
-encodingname_s_i 1066
-encodingname_s_ic 1067
-find_encoding_i_s 1068
-find_encoding_i_sc 1069
-trans_encoding_s_s_i 1070
-trans_encoding_s_sc_i 1071
-trans_encoding_s_s_ic 1072
-trans_encoding_s_sc_ic 1073
-is_cclass_i_i_s_i 1074
-is_cclass_i_ic_s_i 1075
-is_cclass_i_i_sc_i 1076
-is_cclass_i_ic_sc_i 1077
-is_cclass_i_i_s_ic 1078
-is_cclass_i_ic_s_ic 1079
-is_cclass_i_i_sc_ic 1080
-is_cclass_i_ic_sc_ic 1081
-find_cclass_i_i_s_i_i 1082
-find_cclass_i_ic_s_i_i 1083
-find_cclass_i_i_sc_i_i 1084
-find_cclass_i_ic_sc_i_i 1085
-find_cclass_i_i_s_ic_i 1086
-find_cclass_i_ic_s_ic_i 1087
-find_cclass_i_i_sc_ic_i 1088
-find_cclass_i_ic_sc_ic_i 1089
-find_cclass_i_i_s_i_ic 1090
-find_cclass_i_ic_s_i_ic 1091
-find_cclass_i_i_sc_i_ic 1092
-find_cclass_i_ic_sc_i_ic 1093
-find_cclass_i_i_s_ic_ic 1094
-find_cclass_i_ic_s_ic_ic 1095
-find_cclass_i_i_sc_ic_ic 1096
-find_cclass_i_ic_sc_ic_ic 1097
-find_not_cclass_i_i_s_i_i 1098
-find_not_cclass_i_ic_s_i_i 1099
-find_not_cclass_i_i_sc_i_i 1100
-find_not_cclass_i_ic_sc_i_i 1101
-find_not_cclass_i_i_s_ic_i 1102
-find_not_cclass_i_ic_s_ic_i 1103
-find_not_cclass_i_i_sc_ic_i 1104
-find_not_cclass_i_ic_sc_ic_i 1105
-find_not_cclass_i_i_s_i_ic 1106
-find_not_cclass_i_ic_s_i_ic 1107
-find_not_cclass_i_i_sc_i_ic 1108
-find_not_cclass_i_ic_sc_i_ic 1109
-find_not_cclass_i_i_s_ic_ic 1110
-find_not_cclass_i_ic_s_ic_ic 1111
-find_not_cclass_i_i_sc_ic_ic 1112
-find_not_cclass_i_ic_sc_ic_ic 1113
-escape_s_s 1114
-compose_s_s 1115
-compose_s_sc 1116
-spawnw_i_s 1117
-spawnw_i_sc 1118
-spawnw_i_p 1119
-err_i 1120
-err_s 1121
-err_s_i 1122
-err_s_ic 1123
-time_i 1124
-time_n 1125
-gmtime_s_i 1126
-gmtime_s_ic 1127
-localtime_s_i 1128
-localtime_s_ic 1129
-decodetime_p_i 1130
-decodetime_p_ic 1131
-decodelocaltime_p_i 1132
-decodelocaltime_p_ic 1133
-sysinfo_s_i 1134
-sysinfo_s_ic 1135
-sysinfo_i_i 1136
-sysinfo_i_ic 1137
-sleep_i 1138
-sleep_ic 1139
-sleep_n 1140
-sleep_nc 1141
-store_lex_s_p 1142
-store_lex_sc_p 1143
-store_dynamic_lex_s_p 1144
-store_dynamic_lex_sc_p 1145
-find_lex_p_s 1146
-find_lex_p_sc 1147
-find_dynamic_lex_p_s 1148
-find_dynamic_lex_p_sc 1149
-find_caller_lex_p_s 1150
-find_caller_lex_p_sc 1151
-get_namespace_p 1152
-get_namespace_p_p 1153
-get_namespace_p_pc 1154
-get_hll_namespace_p 1155
-get_hll_namespace_p_p 1156
-get_hll_namespace_p_pc 1157
-get_root_namespace_p 1158
-get_root_namespace_p_p 1159
-get_root_namespace_p_pc 1160
-get_global_p_s 1161
-get_global_p_sc 1162
-get_global_p_p_s 1163
-get_global_p_pc_s 1164
-get_global_p_p_sc 1165
-get_global_p_pc_sc 1166
-get_hll_global_p_s 1167
-get_hll_global_p_sc 1168
-get_hll_global_p_p_s 1169
-get_hll_global_p_pc_s 1170
-get_hll_global_p_p_sc 1171
-get_hll_global_p_pc_sc 1172
-get_root_global_p_s 1173
-get_root_global_p_sc 1174
-get_root_global_p_p_s 1175
-get_root_global_p_pc_s 1176
-get_root_global_p_p_sc 1177
-get_root_global_p_pc_sc 1178
-set_global_s_p 1179
-set_global_sc_p 1180
-set_global_p_s_p 1181
-set_global_pc_s_p 1182
-set_global_p_sc_p 1183
-set_global_pc_sc_p 1184
-set_hll_global_s_p 1185
-set_hll_global_sc_p 1186
-set_hll_global_p_s_p 1187
-set_hll_global_pc_s_p 1188
-set_hll_global_p_sc_p 1189
-set_hll_global_pc_sc_p 1190
-set_root_global_s_p 1191
-set_root_global_sc_p 1192
-set_root_global_p_s_p 1193
-set_root_global_pc_s_p 1194
-set_root_global_p_sc_p 1195
-set_root_global_pc_sc_p 1196
-find_name_p_s 1197
-find_name_p_sc 1198
-find_sub_not_null_p_s 1199
-find_sub_not_null_p_sc 1200
+sub_i_i 636
+sub_i_ic 637
+sub_n_n 638
+sub_n_nc 639
+sub_p_p 640
+sub_p_i 641
+sub_p_ic 642
+sub_p_n 643
+sub_p_nc 644
+sub_i_i_i 645
+sub_i_ic_i 646
+sub_i_i_ic 647
+sub_n_n_n 648
+sub_n_nc_n 649
+sub_n_n_nc 650
+sub_p_p_p 651
+sub_p_p_i 652
+sub_p_p_ic 653
+sub_p_p_n 654
+sub_p_p_nc 655
+sqrt_n_n 656
+callmethodcc_p_s 657
+callmethodcc_p_sc 658
+callmethodcc_p_p 659
+callmethod_p_s_p 660
+callmethod_p_sc_p 661
+callmethod_p_p_p 662
+tailcallmethod_p_s 663
+tailcallmethod_p_sc 664
+tailcallmethod_p_p 665
+addmethod_p_s_p 666
+addmethod_p_sc_p 667
+can_i_p_s 668
+can_i_p_sc 669
+does_i_p_s 670
+does_i_p_sc 671
+does_i_p_p 672
+does_i_p_pc 673
+isa_i_p_s 674
+isa_i_p_sc 675
+isa_i_p_p 676
+isa_i_p_pc 677
+newclass_p_s 678
+newclass_p_sc 679
+newclass_p_p 680
+newclass_p_pc 681
+subclass_p_p 682
+subclass_p_pc 683
+subclass_p_p_s 684
+subclass_p_pc_s 685
+subclass_p_p_sc 686
+subclass_p_pc_sc 687
+subclass_p_p_p 688
+subclass_p_pc_p 689
+subclass_p_p_pc 690
+subclass_p_pc_pc 691
+subclass_p_s 692
+subclass_p_sc 693
+subclass_p_s_s 694
+subclass_p_sc_s 695
+subclass_p_s_sc 696
+subclass_p_sc_sc 697
+subclass_p_s_p 698
+subclass_p_sc_p 699
+subclass_p_s_pc 700
+subclass_p_sc_pc 701
+get_class_p_s 702
+get_class_p_sc 703
+get_class_p_p 704
+get_class_p_pc 705
+class_p_p 706
+addparent_p_p 707
+removeparent_p_p 708
+addrole_p_p 709
+addattribute_p_s 710
+addattribute_p_sc 711
+removeattribute_p_s 712
+removeattribute_p_sc 713
+getattribute_p_p_s 714
+getattribute_p_p_sc 715
+getattribute_p_p_p_s 716
+getattribute_p_p_pc_s 717
+getattribute_p_p_p_sc 718
+getattribute_p_p_pc_sc 719
+setattribute_p_s_p 720
+setattribute_p_sc_p 721
+setattribute_p_p_s_p 722
+setattribute_p_pc_s_p 723
+setattribute_p_p_sc_p 724
+setattribute_p_pc_sc_p 725
+inspect_p_p 726
+inspect_p_pc 727
+inspect_p_p_s 728
+inspect_p_pc_s 729
+inspect_p_p_sc 730
+inspect_p_pc_sc 731
+new_p_s 732
+new_p_sc 733
+new_p_s_p 734
+new_p_sc_p 735
+new_p_s_pc 736
+new_p_sc_pc 737
+new_p_p 738
+new_p_pc 739
+new_p_p_p 740
+new_p_pc_p 741
+new_p_p_pc 742
+new_p_pc_pc 743
+root_new_p_p 744
+root_new_p_pc 745
+root_new_p_p_p 746
+root_new_p_pc_p 747
+root_new_p_p_pc 748
+root_new_p_pc_pc 749
+typeof_s_p 750
+typeof_p_p 751
+get_repr_s_p 752
+find_method_p_p_s 753
+find_method_p_p_sc 754
+defined_i_p 755
+defined_i_p_ki 756
+defined_i_p_kic 757
+defined_i_p_k 758
+defined_i_p_kc 759
+exists_i_p_ki 760
+exists_i_p_kic 761
+exists_i_p_k 762
+exists_i_p_kc 763
+delete_p_k 764
+delete_p_kc 765
+delete_p_ki 766
+delete_p_kic 767
+elements_i_p 768
+push_p_i 769
+push_p_ic 770
+push_p_n 771
+push_p_nc 772
+push_p_s 773
+push_p_sc 774
+push_p_p 775
+pop_i_p 776
+pop_n_p 777
+pop_s_p 778
+pop_p_p 779
+unshift_p_i 780
+unshift_p_ic 781
+unshift_p_n 782
+unshift_p_nc 783
+unshift_p_s 784
+unshift_p_sc 785
+unshift_p_p 786
+shift_i_p 787
+shift_n_p 788
+shift_s_p 789
+shift_p_p 790
+splice_p_p_i_i 791
+splice_p_p_ic_i 792
+splice_p_p_i_ic 793
+splice_p_p_ic_ic 794
+setprop_p_s_p 795
+setprop_p_sc_p 796
+getprop_p_s_p 797
+getprop_p_sc_p 798
+delprop_p_s 799
+delprop_p_sc 800
+prophash_p_p 801
+freeze_s_p 802
+thaw_p_s 803
+thaw_p_sc 804
+add_multi_s_s_p 805
+add_multi_sc_s_p 806
+add_multi_s_sc_p 807
+add_multi_sc_sc_p 808
+find_multi_p_s_s 809
+find_multi_p_sc_s 810
+find_multi_p_s_sc 811
+find_multi_p_sc_sc 812
+register_p 813
+unregister_p 814
+box_p_i 815
+box_p_ic 816
+box_p_n 817
+box_p_nc 818
+box_p_s 819
+box_p_sc 820
+iter_p_p 821
+morph_p_p 822
+morph_p_pc 823
+clone_s_s 824
+clone_s_sc 825
+set_i_i 826
+set_i_ic 827
+set_i_n 828
+set_i_nc 829
+set_i_s 830
+set_i_sc 831
+set_n_n 832
+set_n_nc 833
+set_n_i 834
+set_n_ic 835
+set_n_s 836
+set_n_sc 837
+set_n_p 838
+set_s_p 839
+set_s_s 840
+set_s_sc 841
+set_s_i 842
+set_s_ic 843
+set_s_n 844
+set_s_nc 845
+set_p_pc 846
+set_p_p 847
+set_p_i 848
+set_p_ic 849
+set_p_n 850
+set_p_nc 851
+set_p_s 852
+set_p_sc 853
+set_i_p 854
+assign_p_p 855
+assign_p_i 856
+assign_p_ic 857
+assign_p_n 858
+assign_p_nc 859
+assign_p_s 860
+assign_p_sc 861
+assign_s_s 862
+assign_s_sc 863
+setref_p_p 864
+deref_p_p 865
+set_p_ki_i 866
+set_p_kic_i 867
+set_p_ki_ic 868
+set_p_kic_ic 869
+set_p_ki_n 870
+set_p_kic_n 871
+set_p_ki_nc 872
+set_p_kic_nc 873
+set_p_ki_s 874
+set_p_kic_s 875
+set_p_ki_sc 876
+set_p_kic_sc 877
+set_p_ki_p 878
+set_p_kic_p 879
+set_i_p_ki 880
+set_i_p_kic 881
+set_n_p_ki 882
+set_n_p_kic 883
+set_s_p_ki 884
+set_s_p_kic 885
+set_p_p_ki 886
+set_p_p_kic 887
+set_p_k_i 888
+set_p_kc_i 889
+set_p_k_ic 890
+set_p_kc_ic 891
+set_p_k_n 892
+set_p_kc_n 893
+set_p_k_nc 894
+set_p_kc_nc 895
+set_p_k_s 896
+set_p_kc_s 897
+set_p_k_sc 898
+set_p_kc_sc 899
+set_p_k_p 900
+set_p_kc_p 901
+set_i_p_k 902
+set_i_p_kc 903
+set_n_p_k 904
+set_n_p_kc 905
+set_s_p_k 906
+set_s_p_kc 907
+set_p_p_k 908
+set_p_p_kc 909
+clone_p_p 910
+clone_p_p_p 911
+clone_p_p_pc 912
+copy_p_p 913
+null_s 914
+null_i 915
+null_p 916
+null_n 917
+ord_i_s 918
+ord_i_sc 919
+ord_i_s_i 920
+ord_i_sc_i 921
+ord_i_s_ic 922
+ord_i_sc_ic 923
+chr_s_i 924
+chr_s_ic 925
+chopn_s_s_i 926
+chopn_s_sc_i 927
+chopn_s_s_ic 928
+chopn_s_sc_ic 929
+concat_s_s 930
+concat_s_sc 931
+concat_p_p 932
+concat_p_s 933
+concat_p_sc 934
+concat_s_s_s 935
+concat_s_sc_s 936
+concat_s_s_sc 937
+concat_p_p_s 938
+concat_p_p_sc 939
+concat_p_p_p 940
+repeat_s_s_i 941
+repeat_s_sc_i 942
+repeat_s_s_ic 943
+repeat_s_sc_ic 944
+repeat_p_p_i 945
+repeat_p_p_ic 946
+repeat_p_p_p 947
+repeat_p_i 948
+repeat_p_ic 949
+repeat_p_p 950
+length_i_s 951
+length_i_sc 952
+bytelength_i_s 953
+bytelength_i_sc 954
+pin_s 955
+unpin_s 956
+substr_s_s_i 957
+substr_s_sc_i 958
+substr_s_s_ic 959
+substr_s_sc_ic 960
+substr_s_s_i_i 961
+substr_s_sc_i_i 962
+substr_s_s_ic_i 963
+substr_s_sc_ic_i 964
+substr_s_s_i_ic 965
+substr_s_sc_i_ic 966
+substr_s_s_ic_ic 967
+substr_s_sc_ic_ic 968
+substr_s_p_i_i 969
+substr_s_p_ic_i 970
+substr_s_p_i_ic 971
+substr_s_p_ic_ic 972
+replace_s_s_i_i_s 973
+replace_s_sc_i_i_s 974
+replace_s_s_ic_i_s 975
+replace_s_sc_ic_i_s 976
+replace_s_s_i_ic_s 977
+replace_s_sc_i_ic_s 978
+replace_s_s_ic_ic_s 979
+replace_s_sc_ic_ic_s 980
+replace_s_s_i_i_sc 981
+replace_s_sc_i_i_sc 982
+replace_s_s_ic_i_sc 983
+replace_s_sc_ic_i_sc 984
+replace_s_s_i_ic_sc 985
+replace_s_sc_i_ic_sc 986
+replace_s_s_ic_ic_sc 987
+replace_s_sc_ic_ic_sc 988
+index_i_s_s 989
+index_i_sc_s 990
+index_i_s_sc 991
+index_i_sc_sc 992
+index_i_s_s_i 993
+index_i_sc_s_i 994
+index_i_s_sc_i 995
+index_i_sc_sc_i 996
+index_i_s_s_ic 997
+index_i_sc_s_ic 998
+index_i_s_sc_ic 999
+index_i_sc_sc_ic 1000
+sprintf_s_s_p 1001
+sprintf_s_sc_p 1002
+sprintf_p_p_p 1003
+new_s 1004
+new_s_i 1005
+new_s_ic 1006
+stringinfo_i_s_i 1007
+stringinfo_i_sc_i 1008
+stringinfo_i_s_ic 1009
+stringinfo_i_sc_ic 1010
+upcase_s_s 1011
+upcase_s_sc 1012
+downcase_s_s 1013
+downcase_s_sc 1014
+titlecase_s_s 1015
+titlecase_s_sc 1016
+join_s_s_p 1017
+join_s_sc_p 1018
+split_p_s_s 1019
+split_p_sc_s 1020
+split_p_s_sc 1021
+split_p_sc_sc 1022
+charset_i_s 1023
+charset_i_sc 1024
+charsetname_s_i 1025
+charsetname_s_ic 1026
+find_charset_i_s 1027
+find_charset_i_sc 1028
+trans_charset_s_s_i 1029
+trans_charset_s_sc_i 1030
+trans_charset_s_s_ic 1031
+trans_charset_s_sc_ic 1032
+encoding_i_s 1033
+encoding_i_sc 1034
+encodingname_s_i 1035
+encodingname_s_ic 1036
+find_encoding_i_s 1037
+find_encoding_i_sc 1038
+trans_encoding_s_s_i 1039
+trans_encoding_s_sc_i 1040
+trans_encoding_s_s_ic 1041
+trans_encoding_s_sc_ic 1042
+is_cclass_i_i_s_i 1043
+is_cclass_i_ic_s_i 1044
+is_cclass_i_i_sc_i 1045
+is_cclass_i_ic_sc_i 1046
+is_cclass_i_i_s_ic 1047
+is_cclass_i_ic_s_ic 1048
+is_cclass_i_i_sc_ic 1049
+is_cclass_i_ic_sc_ic 1050
+find_cclass_i_i_s_i_i 1051
+find_cclass_i_ic_s_i_i 1052
+find_cclass_i_i_sc_i_i 1053
+find_cclass_i_ic_sc_i_i 1054
+find_cclass_i_i_s_ic_i 1055
+find_cclass_i_ic_s_ic_i 1056
+find_cclass_i_i_sc_ic_i 1057
+find_cclass_i_ic_sc_ic_i 1058
+find_cclass_i_i_s_i_ic 1059
+find_cclass_i_ic_s_i_ic 1060
+find_cclass_i_i_sc_i_ic 1061
+find_cclass_i_ic_sc_i_ic 1062
+find_cclass_i_i_s_ic_ic 1063
+find_cclass_i_ic_s_ic_ic 1064
+find_cclass_i_i_sc_ic_ic 1065
+find_cclass_i_ic_sc_ic_ic 1066
+find_not_cclass_i_i_s_i_i 1067
+find_not_cclass_i_ic_s_i_i 1068
+find_not_cclass_i_i_sc_i_i 1069
+find_not_cclass_i_ic_sc_i_i 1070
+find_not_cclass_i_i_s_ic_i 1071
+find_not_cclass_i_ic_s_ic_i 1072
+find_not_cclass_i_i_sc_ic_i 1073
+find_not_cclass_i_ic_sc_ic_i 1074
+find_not_cclass_i_i_s_i_ic 1075
+find_not_cclass_i_ic_s_i_ic 1076
+find_not_cclass_i_i_sc_i_ic 1077
+find_not_cclass_i_ic_sc_i_ic 1078
+find_not_cclass_i_i_s_ic_ic 1079
+find_not_cclass_i_ic_s_ic_ic 1080
+find_not_cclass_i_i_sc_ic_ic 1081
+find_not_cclass_i_ic_sc_ic_ic 1082
+escape_s_s 1083
+compose_s_s 1084
+compose_s_sc 1085
+spawnw_i_s 1086
+spawnw_i_sc 1087
+spawnw_i_p 1088
+err_i 1089
+err_s 1090
+err_s_i 1091
+err_s_ic 1092
+time_i 1093
+time_n 1094
+gmtime_s_i 1095
+gmtime_s_ic 1096
+localtime_s_i 1097
+localtime_s_ic 1098
+decodetime_p_i 1099
+decodetime_p_ic 1100
+decodelocaltime_p_i 1101
+decodelocaltime_p_ic 1102
+sysinfo_s_i 1103
+sysinfo_s_ic 1104
+sysinfo_i_i 1105
+sysinfo_i_ic 1106
+sleep_i 1107
+sleep_ic 1108
+sleep_n 1109
+sleep_nc 1110
+store_lex_s_p 1111
+store_lex_sc_p 1112
+store_dynamic_lex_s_p 1113
+store_dynamic_lex_sc_p 1114
+find_lex_p_s 1115
+find_lex_p_sc 1116
+find_dynamic_lex_p_s 1117
+find_dynamic_lex_p_sc 1118
+find_caller_lex_p_s 1119
+find_caller_lex_p_sc 1120
+get_namespace_p 1121
+get_namespace_p_p 1122
+get_namespace_p_pc 1123
+get_hll_namespace_p 1124
+get_hll_namespace_p_p 1125
+get_hll_namespace_p_pc 1126
+get_root_namespace_p 1127
+get_root_namespace_p_p 1128
+get_root_namespace_p_pc 1129
+get_global_p_s 1130
+get_global_p_sc 1131
+get_global_p_p_s 1132
+get_global_p_pc_s 1133
+get_global_p_p_sc 1134
+get_global_p_pc_sc 1135
+get_hll_global_p_s 1136
+get_hll_global_p_sc 1137
+get_hll_global_p_p_s 1138
+get_hll_global_p_pc_s 1139
+get_hll_global_p_p_sc 1140
+get_hll_global_p_pc_sc 1141
+get_root_global_p_s 1142
+get_root_global_p_sc 1143
+get_root_global_p_p_s 1144
+get_root_global_p_pc_s 1145
+get_root_global_p_p_sc 1146
+get_root_global_p_pc_sc 1147
+set_global_s_p 1148
+set_global_sc_p 1149
+set_global_p_s_p 1150
+set_global_pc_s_p 1151
+set_global_p_sc_p 1152
+set_global_pc_sc_p 1153
+set_hll_global_s_p 1154
+set_hll_global_sc_p 1155
+set_hll_global_p_s_p 1156
+set_hll_global_pc_s_p 1157
+set_hll_global_p_sc_p 1158
+set_hll_global_pc_sc_p 1159
+set_root_global_s_p 1160
+set_root_global_sc_p 1161
+set_root_global_p_s_p 1162
+set_root_global_pc_s_p 1163
+set_root_global_p_sc_p 1164
+set_root_global_pc_sc_p 1165
+find_name_p_s 1166
+find_name_p_sc 1167
+find_sub_not_null_p_s 1168
+find_sub_not_null_p_sc 1169
Modified: branches/ops_massacre/t/compilers/imcc/syn/op.t
==============================================================================
--- branches/ops_massacre/t/compilers/imcc/syn/op.t Thu May 20 05:43:45 2010 (r46812)
+++ branches/ops_massacre/t/compilers/imcc/syn/op.t Thu May 20 07:12:16 2010 (r46813)
@@ -4,7 +4,7 @@
.sub test :main
.include 'test_more.pir'
- plan(59)
+ plan(58)
test_plus_equal()
test_minus_equal()
@@ -21,7 +21,6 @@
test_x_defined()
test_x_clone()
test_x_length()
- test_x_sin()
test_x_can()
test_x_isa()
test_x_add()
@@ -174,11 +173,6 @@
is($I0, 0, 'x = length')
.end
-.sub test_x_sin
- $N0 = sin 0
- is($N0, 0, 'x = sin')
-.end
-
.sub test_x_can
$P0 = new 'FileHandle'
$I0 = can $P0, "puts"
Modified: branches/ops_massacre/t/dynoplibs/obscure.t
==============================================================================
--- branches/ops_massacre/t/dynoplibs/obscure.t Thu May 20 05:43:45 2010 (r46812)
+++ branches/ops_massacre/t/dynoplibs/obscure.t Thu May 20 07:12:16 2010 (r46813)
@@ -17,6 +17,8 @@
=cut
.loadlib 'obscure_ops'
+.loadlib 'trans_ops' # needed for atan
+
.sub main :main
.include 'fp_equality.pasm'
.include 'test_more.pir'
Added: branches/ops_massacre/t/dynoplibs/trans-infnan.t
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_massacre/t/dynoplibs/trans-infnan.t Thu May 20 07:12:16 2010 (r46813)
@@ -0,0 +1,332 @@
+#!./parrot
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+=head1 NAME
+
+t/dynoplibs/trans-infnan.t - Test Trans Dynops
+
+=head1 SYNOPSIS
+
+ %prove t/dynoplibs/trans-infnan.t
+
+=head1 DESCRIPTION
+
+Tests for C<Inf> and C<NaN> handling of transcendental ops in the C<trans_ops> dynlib.
+
+=cut
+
+.loadlib 'trans_ops'
+
+.sub main :main
+ .include 'test_more.pir'
+ plan(67)
+
+ test_exp()
+ test_sin()
+ test_sinh()
+ test_asin()
+ test_cos()
+ test_cosh()
+ test_acos()
+ test_tan()
+ test_tanh()
+ test_atan()
+ test_cot()
+ test_coth()
+ test_acot()
+ test_sec()
+ test_sech()
+ test_asec()
+ test_ln()
+ test_log10()
+ test_log2()
+ test_pow()
+.end
+
+.sub test_exp
+ $N0 = 'Inf'
+ $N1 = exp $N0
+ is($N1, 'Inf', 'exp: exp Inf')
+ $N0 = '-Inf'
+ $N1 = exp $N0
+ is($N1, 0, '... exp -Inf')
+ $N0 = 'NaN'
+ $N1 = exp $N0
+ is($N1, 'NaN', '... exp NaN')
+.end
+
+.sub test_sin
+ $N0 = 'Inf'
+ $N1 = sin $N0
+ is($N1, 'NaN', 'sin: sin Inf')
+ $N0 = '-Inf'
+ $N1 = sin $N0
+ is($N1, 'NaN', '... sin -Inf')
+ $N0 = 'NaN'
+ $N1 = sin $N0
+ is($N1, 'NaN', '... sin NaN')
+.end
+
+.sub test_sinh
+ $N0 = 'Inf'
+ $N1 = sinh $N0
+ is($N1, 'Inf', 'sinh: sinh Inf')
+ $N0 = '-Inf'
+ $N1 = sinh $N0
+ is($N1, '-Inf', '... sinh -Inf')
+ $N0 = 'NaN'
+ $N1 = sinh $N0
+ is($N1, 'NaN', '... sinh NaN')
+.end
+
+.sub test_asin
+ $N0 = 'Inf'
+ $N1 = asin $N0
+ is($N1, 'NaN', 'asin: asin Inf')
+ $N0 = '-Inf'
+ $N1 = asin $N0
+ is($N1, 'NaN', '... asin -Inf')
+ $N0 = 'NaN'
+ $N1 = asin $N0
+ is($N1, 'NaN', '... asin NaN')
+ $N0 = '-2'
+ $N1 = asin $N0
+ is($N1, 'NaN', '... asin -2')
+ $N0 = '2'
+ $N1 = asin $N0
+ is($N1, 'NaN', '... asin 2')
+.end
+
+.sub test_acos
+ $N0 = 'Inf'
+ $N1 = acos $N0
+ is($N1, 'NaN', 'acos: acos Inf')
+ $N0 = '-Inf'
+ $N1 = acos $N0
+ is($N1, 'NaN', '... acos -Inf')
+ $N0 = 'NaN'
+ $N1 = acos $N0
+ is($N1, 'NaN', '... acos NaN')
+ $N0 = '-2'
+ $N1 = acos $N0
+ is($N1, 'NaN', '... acos -2')
+ $N0 = '2'
+ $N1 = acos $N0
+ is($N1, 'NaN', '... acos 2')
+.end
+
+.sub test_cosh
+ $N0 = 'Inf'
+ $N1 = cosh $N0
+ is($N1, 'Inf', 'cosh: cosh Inf')
+ $N0 = '-Inf'
+ $N1 = cosh $N0
+ is($N1, 'Inf', '... cosh -Inf')
+ $N0 = 'NaN'
+ $N1 = cosh $N0
+ is($N1, 'NaN', '... cosh NaN')
+.end
+
+.sub test_cos
+ $N0 = 'Inf'
+ $N1 = cos $N0
+ is($N1, 'NaN', 'cos: cos Inf')
+ $N0 = '-Inf'
+ $N1 = cos $N0
+ is($N1, 'NaN', '... cos -Inf')
+ $N0 = 'NaN'
+ $N1 = cos $N0
+ is($N1, 'NaN', '... cos NaN')
+.end
+
+.sub test_tan
+ $N0 = 'Inf'
+ $N1 = tan $N0
+ is($N1, 'NaN', 'tan: tan Inf')
+ $N0 = '-Inf'
+ $N1 = tan $N0
+ is($N1, 'NaN', '... tan -Inf')
+ $N0 = 'NaN'
+ $N1 = tan $N0
+ is($N1, 'NaN', '... tan NaN')
+.end
+
+.sub test_tanh
+ $N0 = 'Inf'
+ $N1 = tanh $N0
+ is($N1, 1, 'tanh: tanh Inf')
+ $N0 = '-Inf'
+ $N1 = tanh $N0
+ is($N1, -1, '... tanh -Inf')
+ $N0 = 'NaN'
+ $N1 = tanh $N0
+ is($N1, 'NaN', '... tanh NaN')
+.end
+
+.sub test_atan
+ $N0 = 'Inf'
+ $N1 = atan $N0
+ $P1 = new 'Float'
+ $P1 = $N1
+ is($P1, 1.5707963, 'atan: atan Inf',1e-6)
+
+ $N0 = '-Inf'
+ $N1 = atan $N0
+ $P1 = new 'Float'
+ $P1 = $N1
+ is($P1, -1.5707963, '... atan -Inf',1e-6)
+
+ $N0 = 'NaN'
+ $N1 = atan $N0
+ is($N1, 'NaN', '... atan NaN')
+.end
+
+.sub test_coth
+ $N0 = 'Inf'
+ #$N1 = coth $N0
+ #is($N1, 1, 'coth: coth Inf')
+ todo(0, 'coth Inf', 'cot/coth/acot not implemented for real numbers')
+ $N0 = '-Inf'
+ #$N1 = coth $N0
+ #is($N1, -1, '... coth -Inf')
+ todo(0, 'coth -Inf', 'cot/coth/acot not implemented for real numbers')
+ $N0 = 'NaN'
+ #$N1 = coth $N0
+ #is($N1, 'NaN', '... coth NaN')
+ todo(0, 'coth NaN', 'cot/coth/acot not implemented for real numbers')
+.end
+
+.sub test_acot
+ $N0 = 'Inf'
+ #$N1 = acot $N0
+ #is($N1, 'NaN', 'acot: acot Inf')
+ todo(0, 'acot Inf', 'cot/coth/acot not implemented for real numbers')
+ $N0 = '-Inf'
+ #$N1 = acot $N0
+ #is($N1, 'NaN', '... acot -Inf')
+ todo(0, 'acot -Inf', 'cot/coth/acot not implemented for real numbers')
+ $N0 = 'NaN'
+ #$N1 = acot $N0
+ #is($N1, 'NaN', '... acot NaN')
+ todo(0, 'acot NaN', 'cot/coth/acot not implemented for real numbers')
+ $N0 = '-2'
+ #$N1 = acot $N0
+ #is($N1, 'NaN', '... acot -2')
+ todo(0, 'acot -2', 'cot/coth/acot not implemented for real numbers')
+ $N0 = '2'
+ #$N1 = acot $N0
+ #is($N1, 'NaN', '... acot 2')
+ todo(0, 'acot 2', 'cot/coth/acot not implemented for real numbers')
+.end
+
+.sub test_sec
+ $N0 = 'Inf'
+ $N1 = sec $N0
+ is($N1, 'NaN', 'sec: sec Inf')
+ $N0 = '-Inf'
+ $N1 = sec $N0
+ is($N1, 'NaN', '... sec -Inf')
+ $N0 = 'NaN'
+ $N1 = sec $N0
+ is($N1, 'NaN', '... sec NaN')
+.end
+
+.sub test_sech
+ $N0 = 'Inf'
+ $N1 = sech $N0
+ is($N1, 0, 'sech: sech Inf')
+ $N0 = '-Inf'
+ $N1 = sech $N0
+ is($N1, 0, '... sech -Inf')
+ $N0 = 'NaN'
+ $N1 = sech $N0
+ is($N1, 'NaN', '... sech NaN')
+.end
+
+.sub test_asec
+ $N0 = 'Inf'
+ $N1 = asec $N0
+ $P1 = new 'Float'
+ $P1 = $N1
+ is($P1, 1.5707963, 'asec: asec Inf',1e-6)
+ $N0 = '-Inf'
+ $N1 = asec $N0
+ $P1 = $N1
+ is($P1, 1.5707963, '... asec -Inf',1e-6)
+ $N0 = 'NaN'
+ $N1 = asec $N0
+ is($N1, 'NaN', 'asec NaN')
+.end
+
+.sub test_ln
+ $N0 = 'Inf'
+ $N1 = ln $N0
+ is($N1, 'Inf', 'ln: ln Inf')
+ $N0 = '-Inf'
+ $N1 = ln $N0
+ is($N1, 'NaN', '... ln Inf')
+ $N0 = 'NaN'
+ $N1 = ln $N0
+ is($N1, 'NaN', '... ln NaN')
+.end
+
+.sub test_log10
+ $N0 = 'Inf'
+ $N1 = log10 $N0
+ is($N1, 'Inf', 'log10: log10 Inf')
+ $N0 = '-Inf'
+ $N1 = log10 $N0
+ is($N1, 'NaN', '... log10 -Inf')
+ $N0 = 'NaN'
+ $N1 = log10 $N0
+ is($N1, 'NaN', '... log10 NaN')
+.end
+
+.sub test_log2
+ $N0 = 'Inf'
+ $N1 = log2 $N0
+ is($N1, 'Inf', 'log2: log2 Inf')
+ $N0 = '-Inf'
+ $N1 = log2 $N0
+ is($N1, 'NaN', '... log2 -Inf')
+ $N0 = 'NaN'
+ $N1 = log2 $N0
+ is($N1, 'NaN', '... log2 -Inf')
+.end
+
+
+.sub test_cot
+ $N0 = 'Inf'
+ #$N1 = cot $N0
+ #is($N1, 'NaN', 'cot: cot Inf')
+ todo(0, 'cot Inf', 'cot/coth/acot not implemented for real numbers')
+ $N0 = '-Inf'
+ #$N1 = cot $N0
+ #is($N1, 'NaN', '... cot -Inf')
+ todo(0, 'cot -Inf', 'cot/coth/acot not implemented for real numbers')
+ $N0 = 'NaN'
+ #$N1 = cot $N0
+ #is($N1, 'NaN', '... cot NaN')
+ todo(0, 'cot NaN', 'cot/coth/acot not implemented for real numbers')
+.end
+
+.sub test_pow
+ $N0 = 'Inf'
+ pow $N1, $N0, 2
+ is($N1, 'Inf', 'pow: Inf ^ 2')
+ pow $N1, 2, $N0
+ is($N1, 'Inf', '...: 2 ^ Inf')
+ $N0 = 'NaN'
+ pow $N1, $N0, 2
+ is($N1, 'NaN', '...: NaN ^ 2')
+ pow $N1, 2, $N0
+ is($N1, 'NaN', '...: 2 ^ NaN')
+.end
+
+
+# Local Variables:
+# mode: pir
+# fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:
Added: branches/ops_massacre/t/dynoplibs/trans-old.t
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_massacre/t/dynoplibs/trans-old.t Thu May 20 07:12:16 2010 (r46813)
@@ -0,0 +1,565 @@
+#!perl
+# Copyright (C) 2001-2008, Parrot Foundation.
+# $Id$
+
+use strict;
+use warnings;
+use lib qw( . lib ../lib ../../lib );
+use Test::More;
+use Parrot::Test tests => 13;
+use Math::Trig qw( tan sec atan asin acos asec cosh sinh tanh sech );
+
+=head1 NAME
+
+t/op/trans.t - Transcendental Mathematical Ops
+
+=head1 SYNOPSIS
+
+ % prove t/op/trans.t
+
+=head1 DESCRIPTION
+
+Tests the transcendental mathematical operations.
+
+=cut
+
+# This defines two macros:
+# fp_eq N, N, LABEL
+# fp_ne N, N, LABEL
+# which will conditionally branch
+# to LABEL if abs(n,n) < epsilon
+
+pasm_output_is( <<"CODE", <<OUTPUT, "sinh" );
+ .loadlib 'trans_ops'
+ .include 'fp_equality.pasm'
+ set N1, 1.0
+ sinh N2, N1
+ .fp_eq_pasm (N2, 1.175201, EQ1)
+ print "not "
+EQ1: print "ok 1\\n"
+
+ set I1, 1
+ sinh N2, I1
+ .fp_eq_pasm (N2, 1.175201, EQ2)
+ print "not "
+EQ2: print "ok 2\\n"
+
+ end
+CODE
+ok 1
+ok 2
+OUTPUT
+
+pasm_output_is( <<"CODE", <<OUTPUT, "tanh" );
+ .loadlib 'trans_ops'
+ .include 'fp_equality.pasm'
+ set N1, 1.0
+ tanh N2, N1
+ .fp_eq_pasm (N2, 0.761594, EQ1)
+ print "not "
+EQ1: print "ok 1\\n"
+
+ set I1, 1
+ tanh N2, I1
+ .fp_eq_pasm (N2, 0.761594, EQ2)
+ print "not "
+EQ2: print "ok 2\\n"
+
+ end
+CODE
+ok 1
+ok 2
+OUTPUT
+
+pasm_output_is( <<"CODE", <<OUTPUT, "sech" );
+ .loadlib 'trans_ops'
+ .include 'fp_equality.pasm'
+ set N1, 1.0
+ sech N2, N1
+ .fp_eq_pasm (N2, 0.648054, EQ1)
+ print "not "
+EQ1: print "ok 1\\n"
+
+ set I1, 1
+ sech N2, I1
+ .fp_eq_pasm (N2, 0.648054, EQ2)
+ print "not "
+EQ2: print "ok 2\\n"
+
+ end
+CODE
+ok 1
+ok 2
+OUTPUT
+
+pasm_output_is( <<"CODE", <<OUTPUT, 'atan2' );
+ .loadlib 'trans_ops'
+ .include 'fp_equality.pasm'
+ set N0, 0.0
+ set I0, 0
+ set N1, 1.0
+ set I1, 1
+ set N2, 1.0
+ set I2, 1
+ set I3, -1
+ set N3, -1.0
+
+ atan N4, N1, N2
+ .fp_eq_pasm (N4, 0.785398, EQ1)
+ print "not "
+EQ1: print "ok 1\\n"
+
+ atan N4, N1, I2
+ .fp_eq_pasm (N4, 0.785398, EQ2)
+ print "not "
+EQ2: print "ok 2\\n"
+
+ atan N4, I1, N2
+ .fp_eq_pasm (N4, 0.785398, EQ3)
+ print "not "
+EQ3: print "ok 3\\n"
+
+ atan N4, I1, I2
+ .fp_eq_pasm (N4, 0.785398, EQ4)
+ print "not "
+EQ4: print "ok 4\\n"
+
+ atan N4, N3, 1.0
+ .fp_eq_pasm (N4, -0.785398, EQ5)
+ print "not "
+EQ5: print "ok 5\\n"
+
+ atan N4, N1, 0
+ .fp_eq_pasm (N4, 1.570796, EQ6)
+ print "not "
+EQ6: print "ok 6\\n"
+
+ atan N4, I3, 0.0
+ .fp_eq_pasm (N4, -1.570796, EQ7)
+ print "not "
+EQ7: print "ok 7\\n"
+
+ atan N4, I3, -1
+ .fp_eq_pasm (N4, -2.356194, EQ8)
+ print "not "
+EQ8: print "ok 8\\n"
+
+ atan N4, 1.0, N3
+ .fp_eq_pasm (N4, 2.356194, EQ9)
+ print "not "
+EQ9: print "ok 9\\n"
+
+ atan N4, 1.0, I0
+ .fp_eq_pasm (N4, 1.570796, EQ10)
+ print "not "
+EQ10: print "ok 10\\n"
+
+ atan N4, 1, N1
+ .fp_eq_pasm (N4, 0.785398, EQ11)
+ print "not "
+EQ11: print "ok 11\\n"
+
+ atan N4, 1, I1
+ .fp_eq_pasm (N4, 0.785398, EQ12)
+ print "not "
+EQ12: print "ok 12\\n"
+
+ atan N4, 0.0, 1.0
+ .fp_eq_pasm (N4, 0.000000, EQ13)
+ print "not "
+EQ13: print "ok 13\\n"
+
+ atan N4, -1.0, 0
+ .fp_eq_pasm (N4, -1.570796, EQ14)
+ print "not "
+EQ14: print "ok 14\\n"
+
+ atan N4, 1, -1.0
+ .fp_eq_pasm (N4, 2.356194, EQ15)
+ print "not "
+EQ15: print "ok 15\\n"
+
+ atan N4, 0, 1
+ .fp_eq_pasm (N4, 0.000000, EQ16)
+ print "not "
+EQ16: print "ok 16\\n"
+ end
+CODE
+ok 1
+ok 2
+ok 3
+ok 4
+ok 5
+ok 6
+ok 7
+ok 8
+ok 9
+ok 10
+ok 11
+ok 12
+ok 13
+ok 14
+ok 15
+ok 16
+OUTPUT
+
+pasm_output_is( <<"CODE", <<'OUTPUT', 'atan, part 2' );
+ .loadlib 'trans_ops'
+ .include 'fp_equality.pasm'
+ atan N4, -0.0, -0.0
+ .fp_eq_pasm (N4, -3.1415926, EQ1)
+ print "not "
+EQ1: print "ok 1\\n"
+ end
+CODE
+ok 1
+OUTPUT
+
+pasm_output_is( <<"CODE", <<OUTPUT, "log2" );
+ .loadlib 'trans_ops'
+ .include 'fp_equality.pasm'
+ set N1, 10.0
+ log2 N2, N1
+ .fp_eq_pasm (N2, 3.321928, EQ1)
+ print "not "
+EQ1: print "ok 1\\n"
+
+ set I1, 10
+ log2 N2, I1
+ .fp_eq_pasm (N2, 3.321928, EQ2)
+ print "not "
+EQ2: print "ok 2\\n"
+
+ end
+CODE
+ok 1
+ok 2
+OUTPUT
+
+pasm_output_is( <<"CODE", <<OUTPUT, "log10" );
+ .loadlib 'trans_ops'
+ .include 'fp_equality.pasm'
+ set N1, 15.0
+ log10 N2, N1
+ .fp_eq_pasm (N2, 1.176091, EQ1)
+ print "not "
+EQ1: print "ok 1\\n"
+
+ set I1, 15
+ log10 N2, I1
+ .fp_eq_pasm (N2, 1.176091, EQ2)
+ print "not "
+EQ2: print "ok 2\\n"
+
+ end
+CODE
+ok 1
+ok 2
+OUTPUT
+
+pasm_output_is( <<"CODE", <<OUTPUT, "ln" );
+ .loadlib 'trans_ops'
+ .include 'fp_equality.pasm'
+ set N1, 10.0
+ ln N2, N1
+ .fp_eq_pasm (N2, 2.302585, EQ1)
+ print "not "
+EQ1: print "ok 1\\n"
+
+ set I1, 10
+ ln N2, I1
+ .fp_eq_pasm (N2, 2.302585, EQ2)
+ print "not "
+EQ2: print "ok 2\\n"
+ end
+CODE
+ok 1
+ok 2
+OUTPUT
+
+pasm_output_is( <<"CODE", <<OUTPUT, "exp" );
+ .loadlib 'trans_ops'
+ .include 'fp_equality.pasm'
+ set N1, 10.0
+ exp N2, N1
+ .fp_eq_pasm (N2, 22026.465795, EQ1)
+ print "not "
+EQ1: print "ok 1\\n"
+
+ set I1, 10
+ exp N2, I1
+ .fp_eq_pasm (N2, 22026.465795, EQ2)
+ print "not "
+EQ2: print "ok 2\\n"
+ end
+CODE
+ok 1
+ok 2
+OUTPUT
+
+pasm_output_is( <<"CODE", <<OUTPUT, "pow" );
+ .loadlib 'trans_ops'
+ .include 'fp_equality.pasm'
+ set N1, 3.0
+ set I1, 3
+ set N2, 5.0
+ set I2, 5
+ pow N3, N1, N2
+ .fp_eq_pasm (N3, 243.0, EQ1)
+ print "not "
+EQ1: print "ok 1\\n"
+
+ pow N3, N1, I2
+ .fp_eq_pasm (N3, 243.0, EQ2)
+ print "not "
+EQ2: print "ok 2\\n"
+
+ pow N3, I1, N2
+ .fp_eq_pasm (N3, 243.0, EQ3)
+ print "not "
+EQ3: print "ok 3\\n"
+
+ pow N3, I1, I2
+ .fp_eq_pasm (N3, 243.0, EQ4)
+ print "not "
+EQ4: print "ok 4\\n"
+
+ set N0, 0.0
+ set I0, 0
+ set N1, 1.0
+ set I1, 1
+ set N2, 4.0
+ set I2, 4
+ pow N3, N2, 2.5
+ .fp_eq_pasm (N3, 32.0, EQ5)
+ print "not "
+EQ5: print "ok 5\\n"
+
+ pow N3, N2, -2
+ .fp_eq_pasm (N3, 0.0625, EQ6)
+ print "not "
+EQ6: print "ok 6\\n"
+
+ pow N3, I2, 0.5
+ .fp_eq_pasm (N3, 2.0, EQ7)
+ print "not "
+EQ7: print "ok 7\\n"
+
+ pow N3, I2, 0
+ .fp_eq_pasm (N3, 1.0, EQ8)
+ print "not "
+EQ8: print "ok 8\\n"
+
+ pow N3, 0.0, N2
+ .fp_eq_pasm (N3, 0.0, EQ9)
+ print "not "
+EQ9: print "ok 9\\n"
+
+ pow N3, 2.5, 0.0
+ .fp_eq_pasm (N3, 1.0, EQ10)
+ print "not "
+EQ10: print "ok 10\\n"
+
+ pow N3, 2.5, I2
+ .fp_eq_pasm (N3, 39.0625, EQ11)
+ print "not "
+EQ11: print "ok 11\\n"
+
+ pow N3, 2.0, -4
+ .fp_eq_pasm (N3, 0.0625, EQ12)
+ print "not "
+EQ12: print "ok 12\\n"
+
+ pow N3, 0, N2
+ .fp_eq_pasm (N3, 0.0, EQ13)
+ print "not "
+EQ13: print "ok 13\\n"
+
+ pow N3, 4, -0.5
+ .fp_eq_pasm (N3, 0.5, EQ14)
+ print "not "
+EQ14: print "ok 14\\n"
+
+ pow N3, 4, I2
+ .fp_eq_pasm (N3, 256.0, EQ15)
+ print "not "
+EQ15: print "ok 15\\n"
+
+ pow N3, 4, -1
+ .fp_eq_pasm (N3, 0.25, EQ16)
+ print "not "
+EQ16: print "ok 16\\n"
+ end
+CODE
+ok 1
+ok 2
+ok 3
+ok 4
+ok 5
+ok 6
+ok 7
+ok 8
+ok 9
+ok 10
+ok 11
+ok 12
+ok 13
+ok 14
+ok 15
+ok 16
+OUTPUT
+
+pasm_output_is( <<"CODE", <<OUTPUT, "sqrt" );
+ .include 'fp_equality.pasm'
+ set N1, 9.0
+ sqrt N2, N1
+ .fp_eq_pasm (N2, 3.0, EQ1)
+ print "not "
+EQ1: print "ok 1\\n"
+
+ set I1, 9
+ sqrt N2, I1
+ .fp_eq_pasm (N2, 3.0, EQ2)
+ print "not "
+EQ2: print "ok 2\\n"
+
+ end
+CODE
+ok 1
+ok 2
+OUTPUT
+
+pasm_output_is( <<'CODE', <<OUTPUT, "pow_n_n_ic" );
+ .loadlib 'trans_ops'
+ set N0, 2.0
+ pow N1, N0, 0
+ print N1
+ print "\n"
+ pow N1, N0, 1
+ print N1
+ print "\n"
+ pow N1, N0, 2
+ print N1
+ print "\n"
+ pow N1, N0, 3
+ print N1
+ print "\n"
+ pow N1, N0, 4
+ print N1
+ print "\n"
+ pow N1, N0, 5
+ print N1
+ print "\n"
+ pow N1, N0, 6
+ print N1
+ print "\n"
+ pow N1, N0, 7
+ print N1
+ print "\n"
+ pow N1, N0, -1
+ print N1
+ print "\n"
+ pow N1, N0, -2
+ print N1
+ print "\n"
+ pow N1, N0, -3
+ print N1
+ print "\n"
+ pow N1, N0, -4
+ print N1
+ print "\n"
+ pow N1, N0, -5
+ end
+CODE
+1
+2
+4
+8
+16
+32
+64
+128
+0.5
+0.25
+0.125
+0.0625
+OUTPUT
+
+pasm_output_is( <<'CODE', <<OUTPUT, "pow_n_n_i" );
+ .loadlib 'trans_ops'
+ set N0, 2.0
+ set I0, 0
+ pow N1, N0, I0
+ print N1
+ print "\n"
+ inc I0
+ pow N1, N0, I0
+ print N1
+ print "\n"
+ inc I0
+ pow N1, N0, I0
+ print N1
+ print "\n"
+ inc I0
+ pow N1, N0, I0
+ print N1
+ print "\n"
+ inc I0
+ pow N1, N0, I0
+ print N1
+ print "\n"
+ inc I0
+ pow N1, N0, I0
+ print N1
+ print "\n"
+ inc I0
+ pow N1, N0, I0
+ print N1
+ print "\n"
+ set I0, -1
+ pow N1, N0, I0
+ print N1
+ print "\n"
+ dec I0
+ pow N1, N0, I0
+ print N1
+ print "\n"
+ dec I0
+ pow N1, N0, I0
+ print N1
+ print "\n"
+ dec I0
+ pow N1, N0, I0
+ print N1
+ print "\n"
+ dec I0
+ pow N1, N0, I0
+ print N1
+ print "\n"
+ dec I0
+ pow N1, N0, I0
+ print N1
+ print "\n"
+ end
+CODE
+1
+2
+4
+8
+16
+32
+64
+0.5
+0.25
+0.125
+0.0625
+0.03125
+0.015625
+OUTPUT
+
+# Local Variables:
+# mode: cperl
+# cperl-indent-level: 4
+# fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4:
Added: branches/ops_massacre/t/dynoplibs/trans.t
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_massacre/t/dynoplibs/trans.t Thu May 20 07:12:16 2010 (r46813)
@@ -0,0 +1,292 @@
+#!./parrot
+# Copyright (C) 2001-2010, Parrot Foundation.
+# $Id$
+
+=head1 NAME
+
+t/op/trans.t - Trancendental Mathematical Ops
+
+=head1 SYNOPSIS
+
+ % prove t/op/trans.t
+
+=head1 DESCRIPTION
+
+Tests various transcendental operations
+
+=cut
+
+.loadlib 'trans_ops'
+
+.sub main :main
+ .include 'test_more.pir'
+ .local num epsilon
+ epsilon = _epsilon()
+
+ plan(68)
+
+ test_sin_n(epsilon)
+ test_sin_i(epsilon)
+ test_cos_n(epsilon)
+ test_cos_i(epsilon)
+ test_tan_n(epsilon)
+ test_tan_i(epsilon)
+ test_sec_n(epsilon)
+ test_sec_i(epsilon)
+ test_atan_n(epsilon)
+ test_atan_i(epsilon)
+ test_asin_n(epsilon)
+ test_asin_i(epsilon)
+ test_acos_n(epsilon)
+ test_acos_i(epsilon)
+ test_asec_n(epsilon)
+ test_asec_i(epsilon)
+ test_cosh_n(epsilon)
+ test_cosh_i(epsilon)
+ integer_overflow_with_pow()
+.end
+
+.sub _pi
+ .return (3.1415926535897)
+.end
+
+.sub _e
+ .return (2.7182818459045)
+.end
+
+.sub _epsilon
+ .return (0.0001)
+.end
+
+.sub test_sin_n
+ .param num epsilon
+
+ $N0 = sin 0.0
+ is($N0, 0.0, "sin(0.0)", epsilon)
+
+ $N0 = sin 1.0
+ is($N0, 0.841471, "sin(1.0)", epsilon)
+
+ $N1 = _pi()
+ $N0 = sin $N1
+ is($N0, 0.0, "sin(pi)", epsilon)
+
+ $N1 = _pi()
+ $N1 = $N1 / 2
+ $N0 = sin $N1
+ is($N0, 1.0, "sin(pi/2)", epsilon)
+.end
+
+.sub test_sin_i
+ .param num epsilon
+
+ $N0 = sin 0
+ is($N0, 0.0, "sin(0)", epsilon)
+
+ $N0 = sin 1
+ is($N0, 0.841471, "sin(1)", epsilon)
+.end
+
+.sub test_cos_n
+ .param num epsilon
+
+ $N0 = cos 0.0
+ is($N0, 1.0, "cos(0.0)", epsilon)
+
+ $N0 = cos 1.0
+ is($N0, 0.540302, "cos(1.0)", epsilon)
+
+ $N1 = _pi()
+ $N0 = cos $N1
+ is($N0, -1.0, "cos(pi)", epsilon)
+
+ $N1 = _pi()
+ $N1 = $N1 / 2
+ $N0 = cos $N1
+ is($N0, 0.0, "cos(pi/2)", epsilon)
+.end
+
+.sub test_cos_i
+ .param num epsilon
+
+ $N0 = cos 0
+ is($N0, 1.0, "cos(0)", epsilon)
+
+ $N0 = cos 1
+ is($N0, 0.540302, "cos(1)", epsilon)
+.end
+
+.sub test_tan_n
+ .param num epsilon
+
+ $N0 = tan 0.0
+ is($N0, 0.0, "tan(0.0)", epsilon)
+
+ $N0 = tan 1.0
+ is($N0, 1.557408, "tan(1.0)", epsilon)
+.end
+
+.sub test_tan_i
+ .param num epsilon
+
+ $N0 = tan 0
+ is($N0, 0.0, "tan(0)", epsilon)
+
+ $N0 = tan 1
+ is($N0, 1.557408, "tan(1)", epsilon)
+.end
+
+.sub test_sec_n
+ .param num epsilon
+
+ $N1 = 1.0
+ $N2 = sec $N1
+ is($N2, 1.850816, "sec(1.0)", epsilon)
+.end
+
+.sub test_sec_i
+ .param num epsilon
+
+ $I1 = 1
+ $N1 = sec $I1
+ is($N1, 1.850816, "sec(1)", epsilon)
+.end
+
+.sub test_atan_n
+ .param num epsilon
+
+ $N1 = 1.0
+ $N2 = atan $N1
+ is($N2, 0.785398, "atan(1.0)", epsilon)
+.end
+
+.sub test_atan_i
+ .param num epsilon
+
+ $I1 = 1
+ $N1 = atan $I1
+ is($N1, 0.785398, "atan(1)", epsilon)
+.end
+
+.sub test_asin_n
+ .param num epsilon
+ .local num pi2
+ pi2 = _pi()
+ pi2 /= 2
+
+ $N1 = 1.0
+ $N2 = asin $N1
+ is($N2, pi2, "asin(1.0)", epsilon)
+.end
+
+.sub test_asin_i
+ .param num epsilon
+ .local num pi2
+ pi2 = _pi()
+ pi2 /= 2
+
+ $I1 = 1
+ $N1 = asin $I1
+ is($N1, pi2, "asin(1)", epsilon)
+.end
+
+.sub test_acos_n
+ .param num epsilon
+
+ $N1 = 1.0
+ $N2 = acos $N1
+ is($N2, 0.0, "acos(1.0)", epsilon)
+.end
+
+.sub test_acos_i
+ .param num epsilon
+
+ $I1 = 1
+ $N1 = acos $I1
+ is($N1, 0.0, "acos(1)", epsilon)
+.end
+
+.sub test_asec_n
+ .param num epsilon
+
+ $N1 = 1.0
+ $N2 = asec $N1
+ is($N2, 0.0, "asec(1.0)", epsilon)
+.end
+
+.sub test_asec_i
+ .param num epsilon
+
+ $I1 = 1
+ $N1 = asec $I1
+ is($N1, 0.0, "asec(1)", epsilon)
+.end
+
+.sub test_cosh_n
+ .param num epsilon
+ .local num result
+
+ $N1 = 1.0
+ $N2 = cosh $N1
+ is($N2, 1.543081, "cosh(1.0)", epsilon)
+.end
+
+.sub test_cosh_i
+ .param num epsilon
+
+ $I1 = 1
+ $N1 = cosh $I1
+ is($N1, 1.543081, "cosh(1)", epsilon)
+.end
+
+.sub integer_overflow_with_pow
+ .include "iglobals.pasm"
+
+ # Check that we aren't 32-bit INTVALs without GMP
+ .local pmc interp # a handle to our interpreter object.
+ interp = getinterp
+ .local pmc config
+ config = interp[.IGLOBALS_CONFIG_HASH]
+ .local int intvalsize
+ intvalsize = config['intvalsize']
+ .local int gmp
+ gmp = config['gmp']
+
+ if intvalsize != 4 goto can_test
+ if gmp goto can_test
+ skip(40,'No integer overflow for 32-bit INTVALs without GMP installed')
+ goto end
+
+ can_test:
+
+ .local pmc i1, i2, r
+ i1 = new 'Integer'
+ i2 = new 'Integer'
+ i1 = 2
+ i2 = 1
+ $I1 = 1
+ next:
+ null r
+ r = pow i1, i2
+ $S0 = r
+
+ $I1 = $I1 * 2
+ is( $S0, $I1, 'integer_overflow_with_pow' )
+
+ inc i2
+# XXX: this must be extended to at least 64 bit range
+# when sure that the result is not floating point.
+# In the meantime, make sure it overflows nicely
+# on 32 bit.
+ unless i2 > 40 goto next
+
+ end:
+.end
+
+
+# Local Variables:
+# mode: pir
+# fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:
+
Modified: branches/ops_massacre/t/op/arithmetics.t
==============================================================================
--- branches/ops_massacre/t/op/arithmetics.t Thu May 20 05:43:45 2010 (r46812)
+++ branches/ops_massacre/t/op/arithmetics.t Thu May 20 07:12:16 2010 (r46813)
@@ -21,7 +21,7 @@
.include 'test_more.pir'
.include 'iglobals.pasm'
- plan(121)
+ plan(81)
take_the_negative_of_a_native_integer()
take_the_absolute_of_a_native_integer()
@@ -42,7 +42,6 @@
subtract_native_number_from_native_number()
multiply_native_number_with_native_number()
divide_native_number_by_native_number()
- integer_overflow_with_pow()
bnot_p_p_creates_destination()
# END_OF_TESTS
@@ -470,50 +469,6 @@
.end
-.sub integer_overflow_with_pow
- .include "iglobals.pasm"
-
- # Check that we aren't 32-bit INTVALs without GMP
- .local pmc interp # a handle to our interpreter object.
- interp = getinterp
- .local pmc config
- config = interp[.IGLOBALS_CONFIG_HASH]
- .local int intvalsize
- intvalsize = config['intvalsize']
- .local int gmp
- gmp = config['gmp']
-
- if intvalsize != 4 goto can_test
- if gmp goto can_test
- skip(40,'No integer overflow for 32-bit INTVALs without GMP installed')
- goto end
-
- can_test:
-
- .local pmc i1, i2, r
- i1 = new 'Integer'
- i2 = new 'Integer'
- i1 = 2
- i2 = 1
- $I1 = 1
- next:
- null r
- r = pow i1, i2
- $S0 = r
-
- $I1 = $I1 * 2
- is( $S0, $I1, 'integer_overflow_with_pow' )
-
- inc i2
-# XXX: this must be extended to at least 64 bit range
-# when sure that the result is not floating point.
-# In the meantime, make sure it overflows nicely
-# on 32 bit.
- unless i2 > 40 goto next
-
- end:
-.end
-
.sub 'bnot_p_p_creates_destination'
$P0 = box 3
$P1 = bnot $P0
Modified: branches/ops_massacre/t/op/arithmetics_pmc.t
==============================================================================
--- branches/ops_massacre/t/op/arithmetics_pmc.t Thu May 20 05:43:45 2010 (r46812)
+++ branches/ops_massacre/t/op/arithmetics_pmc.t Thu May 20 07:12:16 2010 (r46813)
@@ -16,6 +16,8 @@
=cut
+.loadlib 'trans_ops' # for pow
+
.sub main :main
.include 'test_more.pir'
.include "iglobals.pasm"
Modified: branches/ops_massacre/t/op/inf_nan.t
==============================================================================
--- branches/ops_massacre/t/op/inf_nan.t Thu May 20 05:43:45 2010 (r46812)
+++ branches/ops_massacre/t/op/inf_nan.t Thu May 20 07:12:16 2010 (r46813)
@@ -18,31 +18,11 @@
.sub main :main
.include 'test_more.pir'
- plan(105)
+ plan(38)
test_basic_arith()
- test_exp()
test_sqrt()
- test_sin()
- test_sinh()
- test_asin()
- test_cos()
- test_cosh()
- test_acos()
- test_tan()
- test_tanh()
- test_atan()
- test_cot()
- test_coth()
- test_acot()
- test_sec()
- test_sech()
- test_asec()
- test_ln()
- test_log10()
- test_log2()
test_neg()
- test_pow()
test_mix_nan_inf()
test_rounding_n()
test_rounding_i()
@@ -82,19 +62,6 @@
is($N3, 'Inf', '... abs -Inf')
.end
-
-.sub test_exp
- $N0 = 'Inf'
- $N1 = exp $N0
- is($N1, 'Inf', 'exp: exp Inf')
- $N0 = '-Inf'
- $N1 = exp $N0
- is($N1, 0, '... exp -Inf')
- $N0 = 'NaN'
- $N1 = exp $N0
- is($N1, 'NaN', '... exp NaN')
-.end
-
.sub test_sqrt
$N0 = 'Inf'
$N1 = $N0
@@ -110,260 +77,6 @@
is($N1, 'NaN', '... sqrt -1')
.end
-.sub test_sin
- $N0 = 'Inf'
- $N1 = sin $N0
- is($N1, 'NaN', 'sin: sin Inf')
- $N0 = '-Inf'
- $N1 = sin $N0
- is($N1, 'NaN', '... sin -Inf')
- $N0 = 'NaN'
- $N1 = sin $N0
- is($N1, 'NaN', '... sin NaN')
-.end
-
-.sub test_sinh
- $N0 = 'Inf'
- $N1 = sinh $N0
- is($N1, 'Inf', 'sinh: sinh Inf')
- $N0 = '-Inf'
- $N1 = sinh $N0
- is($N1, '-Inf', '... sinh -Inf')
- $N0 = 'NaN'
- $N1 = sinh $N0
- is($N1, 'NaN', '... sinh NaN')
-.end
-
-.sub test_asin
- $N0 = 'Inf'
- $N1 = asin $N0
- is($N1, 'NaN', 'asin: asin Inf')
- $N0 = '-Inf'
- $N1 = asin $N0
- is($N1, 'NaN', '... asin -Inf')
- $N0 = 'NaN'
- $N1 = asin $N0
- is($N1, 'NaN', '... asin NaN')
- $N0 = '-2'
- $N1 = asin $N0
- is($N1, 'NaN', '... asin -2')
- $N0 = '2'
- $N1 = asin $N0
- is($N1, 'NaN', '... asin 2')
-.end
-
-.sub test_cos
- $N0 = 'Inf'
- $N1 = cos $N0
- is($N1, 'NaN', 'cos: cos Inf')
- $N0 = '-Inf'
- $N1 = cos $N0
- is($N1, 'NaN', '... cos -Inf')
- $N0 = 'NaN'
- $N1 = cos $N0
- is($N1, 'NaN', '... cos NaN')
-.end
-
-.sub test_cosh
- $N0 = 'Inf'
- $N1 = cosh $N0
- is($N1, 'Inf', 'cosh: cosh Inf')
- $N0 = '-Inf'
- $N1 = cosh $N0
- is($N1, 'Inf', '... cosh -Inf')
- $N0 = 'NaN'
- $N1 = cosh $N0
- is($N1, 'NaN', '... cosh NaN')
-.end
-
-.sub test_acos
- $N0 = 'Inf'
- $N1 = acos $N0
- is($N1, 'NaN', 'acos: acos Inf')
- $N0 = '-Inf'
- $N1 = acos $N0
- is($N1, 'NaN', '... acos -Inf')
- $N0 = 'NaN'
- $N1 = acos $N0
- is($N1, 'NaN', '... acos NaN')
- $N0 = '-2'
- $N1 = acos $N0
- is($N1, 'NaN', '... acos -2')
- $N0 = '2'
- $N1 = acos $N0
- is($N1, 'NaN', '... acos 2')
-.end
-
-.sub test_tan
- $N0 = 'Inf'
- $N1 = tan $N0
- is($N1, 'NaN', 'tan: tan Inf')
- $N0 = '-Inf'
- $N1 = tan $N0
- is($N1, 'NaN', '... tan -Inf')
- $N0 = 'NaN'
- $N1 = tan $N0
- is($N1, 'NaN', '... tan NaN')
-.end
-
-.sub test_tanh
- $N0 = 'Inf'
- $N1 = tanh $N0
- is($N1, 1, 'tanh: tanh Inf')
- $N0 = '-Inf'
- $N1 = tanh $N0
- is($N1, -1, '... tanh -Inf')
- $N0 = 'NaN'
- $N1 = tanh $N0
- is($N1, 'NaN', '... tanh NaN')
-.end
-
-.sub test_atan
- $N0 = 'Inf'
- $N1 = atan $N0
- $P1 = new 'Float'
- $P1 = $N1
- is($P1, 1.5707963, 'atan: atan Inf',1e-6)
-
- $N0 = '-Inf'
- $N1 = atan $N0
- $P1 = new 'Float'
- $P1 = $N1
- is($P1, -1.5707963, '... atan -Inf',1e-6)
-
- $N0 = 'NaN'
- $N1 = atan $N0
- is($N1, 'NaN', '... atan NaN')
-.end
-
-.sub test_cot
- $N0 = 'Inf'
- #$N1 = cot $N0
- #is($N1, 'NaN', 'cot: cot Inf')
- todo(0, 'cot Inf', 'cot/coth/acot not implemented for real numbers')
- $N0 = '-Inf'
- #$N1 = cot $N0
- #is($N1, 'NaN', '... cot -Inf')
- todo(0, 'cot -Inf', 'cot/coth/acot not implemented for real numbers')
- $N0 = 'NaN'
- #$N1 = cot $N0
- #is($N1, 'NaN', '... cot NaN')
- todo(0, 'cot NaN', 'cot/coth/acot not implemented for real numbers')
-.end
-
-.sub test_coth
- $N0 = 'Inf'
- #$N1 = coth $N0
- #is($N1, 1, 'coth: coth Inf')
- todo(0, 'coth Inf', 'cot/coth/acot not implemented for real numbers')
- $N0 = '-Inf'
- #$N1 = coth $N0
- #is($N1, -1, '... coth -Inf')
- todo(0, 'coth -Inf', 'cot/coth/acot not implemented for real numbers')
- $N0 = 'NaN'
- #$N1 = coth $N0
- #is($N1, 'NaN', '... coth NaN')
- todo(0, 'coth NaN', 'cot/coth/acot not implemented for real numbers')
-.end
-
-.sub test_acot
- $N0 = 'Inf'
- #$N1 = acot $N0
- #is($N1, 'NaN', 'acot: acot Inf')
- todo(0, 'acot Inf', 'cot/coth/acot not implemented for real numbers')
- $N0 = '-Inf'
- #$N1 = acot $N0
- #is($N1, 'NaN', '... acot -Inf')
- todo(0, 'acot -Inf', 'cot/coth/acot not implemented for real numbers')
- $N0 = 'NaN'
- #$N1 = acot $N0
- #is($N1, 'NaN', '... acot NaN')
- todo(0, 'acot NaN', 'cot/coth/acot not implemented for real numbers')
- $N0 = '-2'
- #$N1 = acot $N0
- #is($N1, 'NaN', '... acot -2')
- todo(0, 'acot -2', 'cot/coth/acot not implemented for real numbers')
- $N0 = '2'
- #$N1 = acot $N0
- #is($N1, 'NaN', '... acot 2')
- todo(0, 'acot 2', 'cot/coth/acot not implemented for real numbers')
-.end
-
-.sub test_sec
- $N0 = 'Inf'
- $N1 = sec $N0
- is($N1, 'NaN', 'sec: sec Inf')
- $N0 = '-Inf'
- $N1 = sec $N0
- is($N1, 'NaN', '... sec -Inf')
- $N0 = 'NaN'
- $N1 = sec $N0
- is($N1, 'NaN', '... sec NaN')
-.end
-
-.sub test_sech
- $N0 = 'Inf'
- $N1 = sech $N0
- is($N1, 0, 'sech: sech Inf')
- $N0 = '-Inf'
- $N1 = sech $N0
- is($N1, 0, '... sech -Inf')
- $N0 = 'NaN'
- $N1 = sech $N0
- is($N1, 'NaN', '... sech NaN')
-.end
-
-.sub test_asec
- $N0 = 'Inf'
- $N1 = asec $N0
- $P1 = new 'Float'
- $P1 = $N1
- is($P1, 1.5707963, 'asec: asec Inf',1e-6)
- $N0 = '-Inf'
- $N1 = asec $N0
- $P1 = $N1
- is($P1, 1.5707963, '... asec -Inf',1e-6)
- $N0 = 'NaN'
- $N1 = asec $N0
- is($N1, 'NaN', 'asec NaN')
-.end
-
-.sub test_ln
- $N0 = 'Inf'
- $N1 = ln $N0
- is($N1, 'Inf', 'ln: ln Inf')
- $N0 = '-Inf'
- $N1 = ln $N0
- is($N1, 'NaN', '... ln Inf')
- $N0 = 'NaN'
- $N1 = ln $N0
- is($N1, 'NaN', '... ln NaN')
-.end
-
-.sub test_log10
- $N0 = 'Inf'
- $N1 = log10 $N0
- is($N1, 'Inf', 'log10: log10 Inf')
- $N0 = '-Inf'
- $N1 = log10 $N0
- is($N1, 'NaN', '... log10 -Inf')
- $N0 = 'NaN'
- $N1 = log10 $N0
- is($N1, 'NaN', '... log10 NaN')
-.end
-
-.sub test_log2
- $N0 = 'Inf'
- $N1 = log2 $N0
- is($N1, 'Inf', 'log2: log2 Inf')
- $N0 = '-Inf'
- $N1 = log2 $N0
- is($N1, 'NaN', '... log2 -Inf')
- $N0 = 'NaN'
- $N1 = log2 $N0
- is($N1, 'NaN', '... log2 -Inf')
-.end
-
.sub test_neg
$N0 = 'Inf'
$N1 = neg $N0
@@ -376,19 +89,6 @@
is($N1, 'NaN', '... neg NaN')
.end
-.sub test_pow
- $N0 = 'Inf'
- pow $N1, $N0, 2
- is($N1, 'Inf', 'pow: Inf ^ 2')
- pow $N1, 2, $N0
- is($N1, 'Inf', '...: 2 ^ Inf')
- $N0 = 'NaN'
- pow $N1, $N0, 2
- is($N1, 'NaN', '...: NaN ^ 2')
- pow $N1, 2, $N0
- is($N1, 'NaN', '...: 2 ^ NaN')
-.end
-
.sub test_mix_nan_inf
$N0 = 'NaN'
$N1 = 'Inf'
Modified: branches/ops_massacre/t/op/sprintf.t
==============================================================================
--- branches/ops_massacre/t/op/sprintf.t Thu May 20 05:43:45 2010 (r46812)
+++ branches/ops_massacre/t/op/sprintf.t Thu May 20 07:12:16 2010 (r46813)
@@ -154,7 +154,8 @@
data_hash = new 'Hash'
data_hash["''"] = ''
data_hash['2**32-1'] = 0xffffffff
- $N0 = pow 2, 38
+ $N0 = data_hash['2**32-1']
+ inc $N0
data_hash['2**38'] = $N0
data_hash["'string'"] = 'string'
Deleted: branches/ops_massacre/t/op/trans.t
==============================================================================
--- branches/ops_massacre/t/op/trans.t Thu May 20 07:12:16 2010 (r46812)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,244 +0,0 @@
-#!./parrot
-# Copyright (C) 2001-2010, Parrot Foundation.
-# $Id$
-
-=head1 NAME
-
-t/op/trans.t - Trancendental Mathematical Ops
-
-=head1 SYNOPSIS
-
- % prove t/op/trans.t
-
-=head1 DESCRIPTION
-
-Tests various transcendental operations
-
-=cut
-
-.sub main :main
- .include 'test_more.pir'
- .local num epsilon
- epsilon = _epsilon()
-
- plan(28)
-
- test_sin_n(epsilon)
- test_sin_i(epsilon)
- test_cos_n(epsilon)
- test_cos_i(epsilon)
- test_tan_n(epsilon)
- test_tan_i(epsilon)
- test_sec_n(epsilon)
- test_sec_i(epsilon)
- test_atan_n(epsilon)
- test_atan_i(epsilon)
- test_asin_n(epsilon)
- test_asin_i(epsilon)
- test_acos_n(epsilon)
- test_acos_i(epsilon)
- test_asec_n(epsilon)
- test_asec_i(epsilon)
- test_cosh_n(epsilon)
- test_cosh_i(epsilon)
-.end
-
-.sub _pi
- .return (3.1415926535897)
-.end
-
-.sub _e
- .return (2.7182818459045)
-.end
-
-.sub _epsilon
- .return (0.0001)
-.end
-
-.sub test_sin_n
- .param num epsilon
-
- $N0 = sin 0.0
- is($N0, 0.0, "sin(0.0)", epsilon)
-
- $N0 = sin 1.0
- is($N0, 0.841471, "sin(1.0)", epsilon)
-
- $N1 = _pi()
- $N0 = sin $N1
- is($N0, 0.0, "sin(pi)", epsilon)
-
- $N1 = _pi()
- $N1 = $N1 / 2
- $N0 = sin $N1
- is($N0, 1.0, "sin(pi/2)", epsilon)
-.end
-
-.sub test_sin_i
- .param num epsilon
-
- $N0 = sin 0
- is($N0, 0.0, "sin(0)", epsilon)
-
- $N0 = sin 1
- is($N0, 0.841471, "sin(1)", epsilon)
-.end
-
-.sub test_cos_n
- .param num epsilon
-
- $N0 = cos 0.0
- is($N0, 1.0, "cos(0.0)", epsilon)
-
- $N0 = cos 1.0
- is($N0, 0.540302, "cos(1.0)", epsilon)
-
- $N1 = _pi()
- $N0 = cos $N1
- is($N0, -1.0, "cos(pi)", epsilon)
-
- $N1 = _pi()
- $N1 = $N1 / 2
- $N0 = cos $N1
- is($N0, 0.0, "cos(pi/2)", epsilon)
-.end
-
-.sub test_cos_i
- .param num epsilon
-
- $N0 = cos 0
- is($N0, 1.0, "cos(0)", epsilon)
-
- $N0 = cos 1
- is($N0, 0.540302, "cos(1)", epsilon)
-.end
-
-.sub test_tan_n
- .param num epsilon
-
- $N0 = tan 0.0
- is($N0, 0.0, "tan(0.0)", epsilon)
-
- $N0 = tan 1.0
- is($N0, 1.557408, "tan(1.0)", epsilon)
-.end
-
-.sub test_tan_i
- .param num epsilon
-
- $N0 = tan 0
- is($N0, 0.0, "tan(0)", epsilon)
-
- $N0 = tan 1
- is($N0, 1.557408, "tan(1)", epsilon)
-.end
-
-.sub test_sec_n
- .param num epsilon
-
- $N1 = 1.0
- $N2 = sec $N1
- is($N2, 1.850816, "sec(1.0)", epsilon)
-.end
-
-.sub test_sec_i
- .param num epsilon
-
- $I1 = 1
- $N1 = sec $I1
- is($N1, 1.850816, "sec(1)", epsilon)
-.end
-
-.sub test_atan_n
- .param num epsilon
-
- $N1 = 1.0
- $N2 = atan $N1
- is($N2, 0.785398, "atan(1.0)", epsilon)
-.end
-
-.sub test_atan_i
- .param num epsilon
-
- $I1 = 1
- $N1 = atan $I1
- is($N1, 0.785398, "atan(1)", epsilon)
-.end
-
-.sub test_asin_n
- .param num epsilon
- .local num pi2
- pi2 = _pi()
- pi2 /= 2
-
- $N1 = 1.0
- $N2 = asin $N1
- is($N2, pi2, "asin(1.0)", epsilon)
-.end
-
-.sub test_asin_i
- .param num epsilon
- .local num pi2
- pi2 = _pi()
- pi2 /= 2
-
- $I1 = 1
- $N1 = asin $I1
- is($N1, pi2, "asin(1)", epsilon)
-.end
-
-.sub test_acos_n
- .param num epsilon
-
- $N1 = 1.0
- $N2 = acos $N1
- is($N2, 0.0, "acos(1.0)", epsilon)
-.end
-
-.sub test_acos_i
- .param num epsilon
-
- $I1 = 1
- $N1 = acos $I1
- is($N1, 0.0, "acos(1)", epsilon)
-.end
-
-.sub test_asec_n
- .param num epsilon
-
- $N1 = 1.0
- $N2 = asec $N1
- is($N2, 0.0, "asec(1.0)", epsilon)
-.end
-
-.sub test_asec_i
- .param num epsilon
-
- $I1 = 1
- $N1 = asec $I1
- is($N1, 0.0, "asec(1)", epsilon)
-.end
-
-.sub test_cosh_n
- .param num epsilon
- .local num result
-
- $N1 = 1.0
- $N2 = cosh $N1
- is($N2, 1.543081, "cosh(1.0)", epsilon)
-.end
-
-.sub test_cosh_i
- .param num epsilon
-
- $I1 = 1
- $N1 = cosh $I1
- is($N1, 1.543081, "cosh(1)", epsilon)
-.end
-
-# Local Variables:
-# mode: pir
-# fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4 ft=pir:
-
Deleted: branches/ops_massacre/t/op/trans_old.t
==============================================================================
--- branches/ops_massacre/t/op/trans_old.t Thu May 20 07:12:16 2010 (r46812)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,565 +0,0 @@
-#!perl
-# Copyright (C) 2001-2008, Parrot Foundation.
-# $Id$
-
-use strict;
-use warnings;
-use lib qw( . lib ../lib ../../lib );
-use Test::More;
-use Parrot::Test tests => 13;
-use Math::Trig qw( tan sec atan asin acos asec cosh sinh tanh sech );
-
-=head1 NAME
-
-t/op/trans.t - Transcendental Mathematical Ops
-
-=head1 SYNOPSIS
-
- % prove t/op/trans.t
-
-=head1 DESCRIPTION
-
-Tests the transcendental mathematical operations.
-
-=cut
-
-# This defines two macros:
-# fp_eq N, N, LABEL
-# fp_ne N, N, LABEL
-# which will conditionally branch
-# to LABEL if abs(n,n) < epsilon
-
-my $runcore = $ENV{TEST_PROG_ARGS} || '';
-my @bsdtodo = (
- $runcore =~ /--runcore=jit/ && $^O =~ m/bsd/i
- ? ( todo => 'broken under JIT TT #501' )
- : ()
-);
-
-pasm_output_is( <<"CODE", <<OUTPUT, "sinh", @bsdtodo );
- .include 'fp_equality.pasm'
- set N1, 1.0
- sinh N2, N1
- .fp_eq_pasm (N2, 1.175201, EQ1)
- print "not "
-EQ1: print "ok 1\\n"
-
- set I1, 1
- sinh N2, I1
- .fp_eq_pasm (N2, 1.175201, EQ2)
- print "not "
-EQ2: print "ok 2\\n"
-
- end
-CODE
-ok 1
-ok 2
-OUTPUT
-
-pasm_output_is( <<"CODE", <<OUTPUT, "tanh", @bsdtodo );
- .include 'fp_equality.pasm'
- set N1, 1.0
- tanh N2, N1
- .fp_eq_pasm (N2, 0.761594, EQ1)
- print "not "
-EQ1: print "ok 1\\n"
-
- set I1, 1
- tanh N2, I1
- .fp_eq_pasm (N2, 0.761594, EQ2)
- print "not "
-EQ2: print "ok 2\\n"
-
- end
-CODE
-ok 1
-ok 2
-OUTPUT
-
-pasm_output_is( <<"CODE", <<OUTPUT, "sech" );
- .include 'fp_equality.pasm'
- set N1, 1.0
- sech N2, N1
- .fp_eq_pasm (N2, 0.648054, EQ1)
- print "not "
-EQ1: print "ok 1\\n"
-
- set I1, 1
- sech N2, I1
- .fp_eq_pasm (N2, 0.648054, EQ2)
- print "not "
-EQ2: print "ok 2\\n"
-
- end
-CODE
-ok 1
-ok 2
-OUTPUT
-
-my @jittodo = (
- $runcore =~ /--runcore=jit/
- ? ( todo => 'broken under JIT TT #530' )
- : ()
-);
-pasm_output_is( <<"CODE", <<OUTPUT, 'atan2', @jittodo );
- .include 'fp_equality.pasm'
- set N0, 0.0
- set I0, 0
- set N1, 1.0
- set I1, 1
- set N2, 1.0
- set I2, 1
- set I3, -1
- set N3, -1.0
-
- atan N4, N1, N2
- .fp_eq_pasm (N4, 0.785398, EQ1)
- print "not "
-EQ1: print "ok 1\\n"
-
- atan N4, N1, I2
- .fp_eq_pasm (N4, 0.785398, EQ2)
- print "not "
-EQ2: print "ok 2\\n"
-
- atan N4, I1, N2
- .fp_eq_pasm (N4, 0.785398, EQ3)
- print "not "
-EQ3: print "ok 3\\n"
-
- atan N4, I1, I2
- .fp_eq_pasm (N4, 0.785398, EQ4)
- print "not "
-EQ4: print "ok 4\\n"
-
- atan N4, N3, 1.0
- .fp_eq_pasm (N4, -0.785398, EQ5)
- print "not "
-EQ5: print "ok 5\\n"
-
- atan N4, N1, 0
- .fp_eq_pasm (N4, 1.570796, EQ6)
- print "not "
-EQ6: print "ok 6\\n"
-
- atan N4, I3, 0.0
- .fp_eq_pasm (N4, -1.570796, EQ7)
- print "not "
-EQ7: print "ok 7\\n"
-
- atan N4, I3, -1
- .fp_eq_pasm (N4, -2.356194, EQ8)
- print "not "
-EQ8: print "ok 8\\n"
-
- atan N4, 1.0, N3
- .fp_eq_pasm (N4, 2.356194, EQ9)
- print "not "
-EQ9: print "ok 9\\n"
-
- atan N4, 1.0, I0
- .fp_eq_pasm (N4, 1.570796, EQ10)
- print "not "
-EQ10: print "ok 10\\n"
-
- atan N4, 1, N1
- .fp_eq_pasm (N4, 0.785398, EQ11)
- print "not "
-EQ11: print "ok 11\\n"
-
- atan N4, 1, I1
- .fp_eq_pasm (N4, 0.785398, EQ12)
- print "not "
-EQ12: print "ok 12\\n"
-
- atan N4, 0.0, 1.0
- .fp_eq_pasm (N4, 0.000000, EQ13)
- print "not "
-EQ13: print "ok 13\\n"
-
- atan N4, -1.0, 0
- .fp_eq_pasm (N4, -1.570796, EQ14)
- print "not "
-EQ14: print "ok 14\\n"
-
- atan N4, 1, -1.0
- .fp_eq_pasm (N4, 2.356194, EQ15)
- print "not "
-EQ15: print "ok 15\\n"
-
- atan N4, 0, 1
- .fp_eq_pasm (N4, 0.000000, EQ16)
- print "not "
-EQ16: print "ok 16\\n"
- end
-CODE
-ok 1
-ok 2
-ok 3
-ok 4
-ok 5
-ok 6
-ok 7
-ok 8
-ok 9
-ok 10
-ok 11
-ok 12
-ok 13
-ok 14
-ok 15
-ok 16
-OUTPUT
-
-pasm_output_is( <<"CODE", <<'OUTPUT', 'atan, part 2' );
- .include 'fp_equality.pasm'
- atan N4, -0.0, -0.0
- .fp_eq_pasm (N4, -3.1415926, EQ1)
- print "not "
-EQ1: print "ok 1\\n"
- end
-CODE
-ok 1
-OUTPUT
-
-pasm_output_is( <<"CODE", <<OUTPUT, "log2" );
- .include 'fp_equality.pasm'
- set N1, 10.0
- log2 N2, N1
- .fp_eq_pasm (N2, 3.321928, EQ1)
- print "not "
-EQ1: print "ok 1\\n"
-
- set I1, 10
- log2 N2, I1
- .fp_eq_pasm (N2, 3.321928, EQ2)
- print "not "
-EQ2: print "ok 2\\n"
-
- end
-CODE
-ok 1
-ok 2
-OUTPUT
-
-pasm_output_is( <<"CODE", <<OUTPUT, "log10" );
- .include 'fp_equality.pasm'
- set N1, 15.0
- log10 N2, N1
- .fp_eq_pasm (N2, 1.176091, EQ1)
- print "not "
-EQ1: print "ok 1\\n"
-
- set I1, 15
- log10 N2, I1
- .fp_eq_pasm (N2, 1.176091, EQ2)
- print "not "
-EQ2: print "ok 2\\n"
-
- end
-CODE
-ok 1
-ok 2
-OUTPUT
-
-pasm_output_is( <<"CODE", <<OUTPUT, "ln" );
- .include 'fp_equality.pasm'
- set N1, 10.0
- ln N2, N1
- .fp_eq_pasm (N2, 2.302585, EQ1)
- print "not "
-EQ1: print "ok 1\\n"
-
- set I1, 10
- ln N2, I1
- .fp_eq_pasm (N2, 2.302585, EQ2)
- print "not "
-EQ2: print "ok 2\\n"
- end
-CODE
-ok 1
-ok 2
-OUTPUT
-
-pasm_output_is( <<"CODE", <<OUTPUT, "exp" );
- .include 'fp_equality.pasm'
- set N1, 10.0
- exp N2, N1
- .fp_eq_pasm (N2, 22026.465795, EQ1)
- print "not "
-EQ1: print "ok 1\\n"
-
- set I1, 10
- exp N2, I1
- .fp_eq_pasm (N2, 22026.465795, EQ2)
- print "not "
-EQ2: print "ok 2\\n"
- end
-CODE
-ok 1
-ok 2
-OUTPUT
-
-pasm_output_is( <<"CODE", <<OUTPUT, "pow", @bsdtodo );
- .include 'fp_equality.pasm'
- set N1, 3.0
- set I1, 3
- set N2, 5.0
- set I2, 5
- pow N3, N1, N2
- .fp_eq_pasm (N3, 243.0, EQ1)
- print "not "
-EQ1: print "ok 1\\n"
-
- pow N3, N1, I2
- .fp_eq_pasm (N3, 243.0, EQ2)
- print "not "
-EQ2: print "ok 2\\n"
-
- pow N3, I1, N2
- .fp_eq_pasm (N3, 243.0, EQ3)
- print "not "
-EQ3: print "ok 3\\n"
-
- pow N3, I1, I2
- .fp_eq_pasm (N3, 243.0, EQ4)
- print "not "
-EQ4: print "ok 4\\n"
-
- set N0, 0.0
- set I0, 0
- set N1, 1.0
- set I1, 1
- set N2, 4.0
- set I2, 4
- pow N3, N2, 2.5
- .fp_eq_pasm (N3, 32.0, EQ5)
- print "not "
-EQ5: print "ok 5\\n"
-
- pow N3, N2, -2
- .fp_eq_pasm (N3, 0.0625, EQ6)
- print "not "
-EQ6: print "ok 6\\n"
-
- pow N3, I2, 0.5
- .fp_eq_pasm (N3, 2.0, EQ7)
- print "not "
-EQ7: print "ok 7\\n"
-
- pow N3, I2, 0
- .fp_eq_pasm (N3, 1.0, EQ8)
- print "not "
-EQ8: print "ok 8\\n"
-
- pow N3, 0.0, N2
- .fp_eq_pasm (N3, 0.0, EQ9)
- print "not "
-EQ9: print "ok 9\\n"
-
- pow N3, 2.5, 0.0
- .fp_eq_pasm (N3, 1.0, EQ10)
- print "not "
-EQ10: print "ok 10\\n"
-
- pow N3, 2.5, I2
- .fp_eq_pasm (N3, 39.0625, EQ11)
- print "not "
-EQ11: print "ok 11\\n"
-
- pow N3, 2.0, -4
- .fp_eq_pasm (N3, 0.0625, EQ12)
- print "not "
-EQ12: print "ok 12\\n"
-
- pow N3, 0, N2
- .fp_eq_pasm (N3, 0.0, EQ13)
- print "not "
-EQ13: print "ok 13\\n"
-
- pow N3, 4, -0.5
- .fp_eq_pasm (N3, 0.5, EQ14)
- print "not "
-EQ14: print "ok 14\\n"
-
- pow N3, 4, I2
- .fp_eq_pasm (N3, 256.0, EQ15)
- print "not "
-EQ15: print "ok 15\\n"
-
- pow N3, 4, -1
- .fp_eq_pasm (N3, 0.25, EQ16)
- print "not "
-EQ16: print "ok 16\\n"
- end
-CODE
-ok 1
-ok 2
-ok 3
-ok 4
-ok 5
-ok 6
-ok 7
-ok 8
-ok 9
-ok 10
-ok 11
-ok 12
-ok 13
-ok 14
-ok 15
-ok 16
-OUTPUT
-
-pasm_output_is( <<"CODE", <<OUTPUT, "sqrt" );
- .include 'fp_equality.pasm'
- set N1, 9.0
- sqrt N2, N1
- .fp_eq_pasm (N2, 3.0, EQ1)
- print "not "
-EQ1: print "ok 1\\n"
-
- set I1, 9
- sqrt N2, I1
- .fp_eq_pasm (N2, 3.0, EQ2)
- print "not "
-EQ2: print "ok 2\\n"
-
- end
-CODE
-ok 1
-ok 2
-OUTPUT
-
-pasm_output_is( <<'CODE', <<OUTPUT, "pow_n_n_ic" );
- set N0, 2.0
- pow N1, N0, 0
- print N1
- print "\n"
- pow N1, N0, 1
- print N1
- print "\n"
- pow N1, N0, 2
- print N1
- print "\n"
- pow N1, N0, 3
- print N1
- print "\n"
- pow N1, N0, 4
- print N1
- print "\n"
- pow N1, N0, 5
- print N1
- print "\n"
- pow N1, N0, 6
- print N1
- print "\n"
- pow N1, N0, 7
- print N1
- print "\n"
- pow N1, N0, -1
- print N1
- print "\n"
- pow N1, N0, -2
- print N1
- print "\n"
- pow N1, N0, -3
- print N1
- print "\n"
- pow N1, N0, -4
- print N1
- print "\n"
- pow N1, N0, -5
- end
-CODE
-1
-2
-4
-8
-16
-32
-64
-128
-0.5
-0.25
-0.125
-0.0625
-OUTPUT
-
-pasm_output_is( <<'CODE', <<OUTPUT, "pow_n_n_i" );
- set N0, 2.0
- set I0, 0
- pow N1, N0, I0
- print N1
- print "\n"
- inc I0
- pow N1, N0, I0
- print N1
- print "\n"
- inc I0
- pow N1, N0, I0
- print N1
- print "\n"
- inc I0
- pow N1, N0, I0
- print N1
- print "\n"
- inc I0
- pow N1, N0, I0
- print N1
- print "\n"
- inc I0
- pow N1, N0, I0
- print N1
- print "\n"
- inc I0
- pow N1, N0, I0
- print N1
- print "\n"
- set I0, -1
- pow N1, N0, I0
- print N1
- print "\n"
- dec I0
- pow N1, N0, I0
- print N1
- print "\n"
- dec I0
- pow N1, N0, I0
- print N1
- print "\n"
- dec I0
- pow N1, N0, I0
- print N1
- print "\n"
- dec I0
- pow N1, N0, I0
- print N1
- print "\n"
- dec I0
- pow N1, N0, I0
- print N1
- print "\n"
- end
-CODE
-1
-2
-4
-8
-16
-32
-64
-0.5
-0.25
-0.125
-0.0625
-0.03125
-0.015625
-OUTPUT
-
-# Local Variables:
-# mode: cperl
-# cperl-indent-level: 4
-# fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:
Modified: branches/ops_massacre/t/pmc/complex.t
==============================================================================
--- branches/ops_massacre/t/pmc/complex.t Thu May 20 05:43:45 2010 (r46812)
+++ branches/ops_massacre/t/pmc/complex.t Thu May 20 07:12:16 2010 (r46813)
@@ -16,6 +16,8 @@
=cut
+.loadlib 'trans_ops'
+
.sub main :main
.include 'test_more.pir'
.include 'fp_equality.pasm'
Modified: branches/ops_massacre/t/pmc/integer.t
==============================================================================
--- branches/ops_massacre/t/pmc/integer.t Thu May 20 05:43:45 2010 (r46812)
+++ branches/ops_massacre/t/pmc/integer.t Thu May 20 07:12:16 2010 (r46813)
@@ -19,7 +19,7 @@
.sub 'test' :main
.include 'test_more.pir'
- plan(62)
+ plan(61)
test_init()
test_basic_math()
test_truthiness_and_definedness()
@@ -321,8 +321,6 @@
is($P2,3)
mod $P2, $P0, $P1
is($P2,0)
- pow $P2, $P0, $P1
- is($P2,36)
.end
Modified: branches/ops_massacre/t/pmc/sub.t
==============================================================================
--- branches/ops_massacre/t/pmc/sub.t Thu May 20 05:43:45 2010 (r46812)
+++ branches/ops_massacre/t/pmc/sub.t Thu May 20 07:12:16 2010 (r46813)
@@ -991,6 +991,7 @@
unlink( $l1_pbc, $l2_pbc );
pir_output_is( <<'CODE', <<'OUTPUT', "immediate code as const" );
+.loadlib 'trans_ops' # for atan
.sub make_pi :immediate :anon
$N0 = atan 1.0, 1.0
$N0 *= 4
More information about the parrot-commits
mailing list