[svn:parrot] r46781 - in trunk: src/dynoplibs src/ops t/dynoplibs t/op

plobsing at svn.parrot.org plobsing at svn.parrot.org
Wed May 19 07:44:39 UTC 2010


Author: plobsing
Date: Wed May 19 07:44:39 2010
New Revision: 46781
URL: https://trac.parrot.org/parrot/changeset/46781

Log:
move lcm, gcd, and fact opcodes to dynopslibs/obscure

these may not be obscure as algorithms, but as opcodes they certainly are

Modified:
   trunk/src/dynoplibs/obscure.ops
   trunk/src/ops/math.ops
   trunk/src/ops/ops.num
   trunk/t/dynoplibs/obscure.t
   trunk/t/op/arithmetics.t
   trunk/t/op/integer.t
   trunk/t/op/number.t

Modified: trunk/src/dynoplibs/obscure.ops
==============================================================================
--- trunk/src/dynoplibs/obscure.ops	Wed May 19 05:04:24 2010	(r46780)
+++ trunk/src/dynoplibs/obscure.ops	Wed May 19 07:44:39 2010	(r46781)
@@ -94,6 +94,109 @@
     $1 = 1.0 - cos($2);
 }
 
+########################################
+
+=item B<gcd>(out INT, in INT, in INT)
+
+Greatest Common divisor of $2 and $3.
+
+=cut
+
+inline op gcd(out INT, in INT, in INT) :advanced_math {
+    INTVAL p = 0;
+    INTVAL a = $2 < 0 ? -$2 : $2;
+    INTVAL b = $3 < 0 ? -$3 : $3;
+
+    if (a==0) { $1=b; goto NEXT(); }
+    if (b==0) { $1=a; goto NEXT(); }
+
+    while (!((a | b) & 1)) {
+        a>>=1;
+        b>>=1;
+        p++;
+    }
+
+    while (a>0) {
+        if (!(a & 1)) a>>=1;
+        else if (!(b & 1)) b>>=1;
+        else if (a<b)      b = (b-a)>>1;
+        else               a = (a-b)>>1;
+    }
+
+    $1 = b<<p;
+}
+
+
+########################################
+
+=item B<lcm>(out INT, in INT, in INT)
+
+Least Common Multiple of $2 and $3
+
+=cut
+
+inline op lcm(out INT, in INT, in INT) :advanced_math {
+    INTVAL gcd = 0;
+    INTVAL p = 0;
+    INTVAL a = $2 < 0 ? -$2 : $2;
+    INTVAL b = $3 < 0 ? -$3 : $3;
+    INTVAL saved_var1 = a, saved_var2 = b;
+
+    if (a==0 || b==0) { $1=0; goto NEXT(); }
+
+    while (!((a | b) & 1)) {
+        a>>=1;
+        b>>=1;
+        p++;
+    }
+
+    while (a>0) {
+        if (!(a & 1)) a>>=1;
+        else if (!(b & 1)) b>>=1;
+        else if (a<b)      b = (b-a)>>1;
+        else               a = (a-b)>>1;
+    }
+
+    gcd = b<<p;
+    saved_var1 /= gcd;
+    $1 = saved_var1*saved_var2;
+}
+
+########################################
+
+=item B<fact>(out INT, in INT)
+
+=item B<fact>(out NUM, in INT)
+
+Factorial, n!. Calculates the product of 1 to N.
+
+=cut
+
+inline op fact(out INT, in INT) :advanced_math {
+    /* Coercing a negative to a UINT can get pretty ugly
+     * in this situation. */
+    INTVAL i = $2;
+    UINTVAL q = 1;
+    while (i>0) {
+        q = q*i;
+        i--;
+    }
+    $1 = q;
+}
+
+inline op fact(out NUM, in INT) :advanced_math {
+    /* Coercing a negative to a UINT can get pretty ugly
+     * in this situation. */
+    INTVAL i = $2;
+    FLOATVAL q = 1;
+    while (i>0) {
+        q = q*i;
+        i--;
+    }
+    $1 = q;
+}
+
+
 
 =back
 

Modified: trunk/src/ops/math.ops
==============================================================================
--- trunk/src/ops/math.ops	Wed May 19 05:04:24 2010	(r46780)
+++ trunk/src/ops/math.ops	Wed May 19 07:44:39 2010	(r46781)
@@ -1169,122 +1169,6 @@
 
 ###############################################################################
 
-=head2 Other mathematical operations
-
-Implementations of various mathematical operations
-
-=over 4
-
-=cut
-
-########################################
-
-=item B<gcd>(out INT, in INT, in INT)
-
-Greatest Common divisor of $2 and $3.
-
-=cut
-
-inline op gcd(out INT, in INT, in INT) :advanced_math {
-    INTVAL p = 0;
-    INTVAL a = $2 < 0 ? -$2 : $2;
-    INTVAL b = $3 < 0 ? -$3 : $3;
-
-    if (a==0) { $1=b; goto NEXT(); }
-    if (b==0) { $1=a; goto NEXT(); }
-
-    while (!((a | b) & 1)) {
-        a>>=1;
-        b>>=1;
-        p++;
-    }
-
-    while (a>0) {
-        if (!(a & 1)) a>>=1;
-        else if (!(b & 1)) b>>=1;
-        else if (a<b)      b = (b-a)>>1;
-        else               a = (a-b)>>1;
-    }
-
-    $1 = b<<p;
-}
-
-
-########################################
-
-=item B<lcm>(out INT, in INT, in INT)
-
-Least Common Multiple of $2 and $3
-
-=cut
-
-inline op lcm(out INT, in INT, in INT) :advanced_math {
-    INTVAL gcd = 0;
-    INTVAL p = 0;
-    INTVAL a = $2 < 0 ? -$2 : $2;
-    INTVAL b = $3 < 0 ? -$3 : $3;
-    INTVAL saved_var1 = a, saved_var2 = b;
-
-    if (a==0 || b==0) { $1=0; goto NEXT(); }
-
-    while (!((a | b) & 1)) {
-        a>>=1;
-        b>>=1;
-        p++;
-    }
-
-    while (a>0) {
-        if (!(a & 1)) a>>=1;
-        else if (!(b & 1)) b>>=1;
-        else if (a<b)      b = (b-a)>>1;
-        else               a = (a-b)>>1;
-    }
-
-    gcd = b<<p;
-    saved_var1 /= gcd;
-    $1 = saved_var1*saved_var2;
-}
-
-########################################
-
-=item B<fact>(out INT, in INT)
-
-=item B<fact>(out NUM, in INT)
-
-Factorial, n!. Calculates the product of 1 to N.
-
-=cut
-
-inline op fact(out INT, in INT) :advanced_math {
-    /* Coercing a negative to a UINT can get pretty ugly
-     * in this situation. */
-    INTVAL i = $2;
-    UINTVAL q = 1;
-    while (i>0) {
-        q = q*i;
-        i--;
-    }
-    $1 = q;
-}
-
-inline op fact(out NUM, in INT) :advanced_math {
-    /* Coercing a negative to a UINT can get pretty ugly
-     * in this situation. */
-    INTVAL i = $2;
-    FLOATVAL q = 1;
-    while (i>0) {
-        q = q*i;
-        i--;
-    }
-    $1 = q;
-}
-
-=back
-
-=cut
-
-###############################################################################
-
 =head1 COPYRIGHT
 
 Copyright (C) 2001-2009, Parrot Foundation.

Modified: trunk/src/ops/ops.num
==============================================================================
--- trunk/src/ops/ops.num	Wed May 19 05:04:24 2010	(r46780)
+++ trunk/src/ops/ops.num	Wed May 19 07:44:39 2010	(r46781)
@@ -709,546 +709,538 @@
 sinh_n_n                        685
 tan_n_n                         686
 tanh_n_n                        687
-gcd_i_i_i                       688
-gcd_i_ic_i                      689
-gcd_i_i_ic                      690
-lcm_i_i_i                       691
-lcm_i_ic_i                      692
-lcm_i_i_ic                      693
-fact_i_i                        694
-fact_n_i                        695
-callmethodcc_p_s                696
-callmethodcc_p_sc               697
-callmethodcc_p_p                698
-callmethod_p_s_p                699
-callmethod_p_sc_p               700
-callmethod_p_p_p                701
-tailcallmethod_p_s              702
-tailcallmethod_p_sc             703
-tailcallmethod_p_p              704
-addmethod_p_s_p                 705
-addmethod_p_sc_p                706
-can_i_p_s                       707
-can_i_p_sc                      708
-does_i_p_s                      709
-does_i_p_sc                     710
-does_i_p_p                      711
-does_i_p_pc                     712
-isa_i_p_s                       713
-isa_i_p_sc                      714
-isa_i_p_p                       715
-isa_i_p_pc                      716
-newclass_p_s                    717
-newclass_p_sc                   718
-newclass_p_p                    719
-newclass_p_pc                   720
-subclass_p_p                    721
-subclass_p_pc                   722
-subclass_p_p_s                  723
-subclass_p_pc_s                 724
-subclass_p_p_sc                 725
-subclass_p_pc_sc                726
-subclass_p_p_p                  727
-subclass_p_pc_p                 728
-subclass_p_p_pc                 729
-subclass_p_pc_pc                730
-subclass_p_s                    731
-subclass_p_sc                   732
-subclass_p_s_s                  733
-subclass_p_sc_s                 734
-subclass_p_s_sc                 735
-subclass_p_sc_sc                736
-subclass_p_s_p                  737
-subclass_p_sc_p                 738
-subclass_p_s_pc                 739
-subclass_p_sc_pc                740
-get_class_p_s                   741
-get_class_p_sc                  742
-get_class_p_p                   743
-get_class_p_pc                  744
-class_p_p                       745
-addparent_p_p                   746
-removeparent_p_p                747
-addrole_p_p                     748
-addattribute_p_s                749
-addattribute_p_sc               750
-removeattribute_p_s             751
-removeattribute_p_sc            752
-getattribute_p_p_s              753
-getattribute_p_p_sc             754
-getattribute_p_p_p_s            755
-getattribute_p_p_pc_s           756
-getattribute_p_p_p_sc           757
-getattribute_p_p_pc_sc          758
-setattribute_p_s_p              759
-setattribute_p_sc_p             760
-setattribute_p_p_s_p            761
-setattribute_p_pc_s_p           762
-setattribute_p_p_sc_p           763
-setattribute_p_pc_sc_p          764
-inspect_p_p                     765
-inspect_p_pc                    766
-inspect_p_p_s                   767
-inspect_p_pc_s                  768
-inspect_p_p_sc                  769
-inspect_p_pc_sc                 770
-new_p_s                         771
-new_p_sc                        772
-new_p_s_p                       773
-new_p_sc_p                      774
-new_p_s_pc                      775
-new_p_sc_pc                     776
-new_p_p                         777
-new_p_pc                        778
-new_p_p_p                       779
-new_p_pc_p                      780
-new_p_p_pc                      781
-new_p_pc_pc                     782
-root_new_p_p                    783
-root_new_p_pc                   784
-root_new_p_p_p                  785
-root_new_p_pc_p                 786
-root_new_p_p_pc                 787
-root_new_p_pc_pc                788
-typeof_s_p                      789
-typeof_p_p                      790
-get_repr_s_p                    791
-find_method_p_p_s               792
-find_method_p_p_sc              793
-defined_i_p                     794
-defined_i_p_ki                  795
-defined_i_p_kic                 796
-defined_i_p_k                   797
-defined_i_p_kc                  798
-exists_i_p_ki                   799
-exists_i_p_kic                  800
-exists_i_p_k                    801
-exists_i_p_kc                   802
-delete_p_k                      803
-delete_p_kc                     804
-delete_p_ki                     805
-delete_p_kic                    806
-elements_i_p                    807
-push_p_i                        808
-push_p_ic                       809
-push_p_n                        810
-push_p_nc                       811
-push_p_s                        812
-push_p_sc                       813
-push_p_p                        814
-pop_i_p                         815
-pop_n_p                         816
-pop_s_p                         817
-pop_p_p                         818
-unshift_p_i                     819
-unshift_p_ic                    820
-unshift_p_n                     821
-unshift_p_nc                    822
-unshift_p_s                     823
-unshift_p_sc                    824
-unshift_p_p                     825
-shift_i_p                       826
-shift_n_p                       827
-shift_s_p                       828
-shift_p_p                       829
-splice_p_p_i_i                  830
-splice_p_p_ic_i                 831
-splice_p_p_i_ic                 832
-splice_p_p_ic_ic                833
-setprop_p_s_p                   834
-setprop_p_sc_p                  835
-getprop_p_s_p                   836
-getprop_p_sc_p                  837
-delprop_p_s                     838
-delprop_p_sc                    839
-prophash_p_p                    840
-freeze_s_p                      841
-thaw_p_s                        842
-thaw_p_sc                       843
-add_multi_s_s_p                 844
-add_multi_sc_s_p                845
-add_multi_s_sc_p                846
-add_multi_sc_sc_p               847
-find_multi_p_s_s                848
-find_multi_p_sc_s               849
-find_multi_p_s_sc               850
-find_multi_p_sc_sc              851
-register_p                      852
-unregister_p                    853
-box_p_i                         854
-box_p_ic                        855
-box_p_n                         856
-box_p_nc                        857
-box_p_s                         858
-box_p_sc                        859
-iter_p_p                        860
-morph_p_p                       861
-morph_p_pc                      862
-clone_s_s                       863
-clone_s_sc                      864
-exchange_i_i                    865
-exchange_p_p                    866
-exchange_n_n                    867
-exchange_s_s                    868
-set_i_i                         869
-set_i_ic                        870
-set_i_n                         871
-set_i_nc                        872
-set_i_s                         873
-set_i_sc                        874
-set_n_n                         875
-set_n_nc                        876
-set_n_i                         877
-set_n_ic                        878
-set_n_s                         879
-set_n_sc                        880
-set_n_p                         881
-set_s_p                         882
-set_s_s                         883
-set_s_sc                        884
-set_s_i                         885
-set_s_ic                        886
-set_s_n                         887
-set_s_nc                        888
-set_p_pc                        889
-set_p_p                         890
-set_p_i                         891
-set_p_ic                        892
-set_p_n                         893
-set_p_nc                        894
-set_p_s                         895
-set_p_sc                        896
-set_i_p                         897
-assign_p_p                      898
-assign_p_i                      899
-assign_p_ic                     900
-assign_p_n                      901
-assign_p_nc                     902
-assign_p_s                      903
-assign_p_sc                     904
-assign_s_s                      905
-assign_s_sc                     906
-setref_p_p                      907
-deref_p_p                       908
-setp_ind_i_p                    909
-setp_ind_ic_p                   910
-setn_ind_i_n                    911
-setn_ind_ic_n                   912
-setn_ind_i_nc                   913
-setn_ind_ic_nc                  914
-sets_ind_i_s                    915
-sets_ind_ic_s                   916
-sets_ind_i_sc                   917
-sets_ind_ic_sc                  918
-seti_ind_i_i                    919
-seti_ind_ic_i                   920
-seti_ind_i_ic                   921
-seti_ind_ic_ic                  922
-set_p_ki_i                      923
-set_p_kic_i                     924
-set_p_ki_ic                     925
-set_p_kic_ic                    926
-set_p_ki_n                      927
-set_p_kic_n                     928
-set_p_ki_nc                     929
-set_p_kic_nc                    930
-set_p_ki_s                      931
-set_p_kic_s                     932
-set_p_ki_sc                     933
-set_p_kic_sc                    934
-set_p_ki_p                      935
-set_p_kic_p                     936
-set_i_p_ki                      937
-set_i_p_kic                     938
-set_n_p_ki                      939
-set_n_p_kic                     940
-set_s_p_ki                      941
-set_s_p_kic                     942
-set_p_p_ki                      943
-set_p_p_kic                     944
-set_p_k_i                       945
-set_p_kc_i                      946
-set_p_k_ic                      947
-set_p_kc_ic                     948
-set_p_k_n                       949
-set_p_kc_n                      950
-set_p_k_nc                      951
-set_p_kc_nc                     952
-set_p_k_s                       953
-set_p_kc_s                      954
-set_p_k_sc                      955
-set_p_kc_sc                     956
-set_p_k_p                       957
-set_p_kc_p                      958
-set_i_p_k                       959
-set_i_p_kc                      960
-set_n_p_k                       961
-set_n_p_kc                      962
-set_s_p_k                       963
-set_s_p_kc                      964
-set_p_p_k                       965
-set_p_p_kc                      966
-clone_p_p                       967
-clone_p_p_p                     968
-clone_p_p_pc                    969
-copy_p_p                        970
-null_s                          971
-null_i                          972
-null_p                          973
-null_n                          974
-cleari                          975
-clearn                          976
-clears                          977
-clearp                          978
-ord_i_s                         979
-ord_i_sc                        980
-ord_i_s_i                       981
-ord_i_sc_i                      982
-ord_i_s_ic                      983
-ord_i_sc_ic                     984
-chr_s_i                         985
-chr_s_ic                        986
-chopn_s_s_i                     987
-chopn_s_sc_i                    988
-chopn_s_s_ic                    989
-chopn_s_sc_ic                   990
-concat_s_s                      991
-concat_s_sc                     992
-concat_p_p                      993
-concat_p_s                      994
-concat_p_sc                     995
-concat_s_s_s                    996
-concat_s_sc_s                   997
-concat_s_s_sc                   998
-concat_p_p_s                    999
-concat_p_p_sc                  1000
-concat_p_p_p                   1001
-repeat_s_s_i                   1002
-repeat_s_sc_i                  1003
-repeat_s_s_ic                  1004
-repeat_s_sc_ic                 1005
-repeat_p_p_i                   1006
-repeat_p_p_ic                  1007
-repeat_p_p_p                   1008
-repeat_p_i                     1009
-repeat_p_ic                    1010
-repeat_p_p                     1011
-length_i_s                     1012
-length_i_sc                    1013
-bytelength_i_s                 1014
-bytelength_i_sc                1015
-pin_s                          1016
-unpin_s                        1017
-substr_s_s_i                   1018
-substr_s_sc_i                  1019
-substr_s_s_ic                  1020
-substr_s_sc_ic                 1021
-substr_s_s_i_i                 1022
-substr_s_sc_i_i                1023
-substr_s_s_ic_i                1024
-substr_s_sc_ic_i               1025
-substr_s_s_i_ic                1026
-substr_s_sc_i_ic               1027
-substr_s_s_ic_ic               1028
-substr_s_sc_ic_ic              1029
-substr_s_p_i_i                 1030
-substr_s_p_ic_i                1031
-substr_s_p_i_ic                1032
-substr_s_p_ic_ic               1033
-replace_s_s_i_i_s              1034
-replace_s_sc_i_i_s             1035
-replace_s_s_ic_i_s             1036
-replace_s_sc_ic_i_s            1037
-replace_s_s_i_ic_s             1038
-replace_s_sc_i_ic_s            1039
-replace_s_s_ic_ic_s            1040
-replace_s_sc_ic_ic_s           1041
-replace_s_s_i_i_sc             1042
-replace_s_sc_i_i_sc            1043
-replace_s_s_ic_i_sc            1044
-replace_s_sc_ic_i_sc           1045
-replace_s_s_i_ic_sc            1046
-replace_s_sc_i_ic_sc           1047
-replace_s_s_ic_ic_sc           1048
-replace_s_sc_ic_ic_sc          1049
-index_i_s_s                    1050
-index_i_sc_s                   1051
-index_i_s_sc                   1052
-index_i_sc_sc                  1053
-index_i_s_s_i                  1054
-index_i_sc_s_i                 1055
-index_i_s_sc_i                 1056
-index_i_sc_sc_i                1057
-index_i_s_s_ic                 1058
-index_i_sc_s_ic                1059
-index_i_s_sc_ic                1060
-index_i_sc_sc_ic               1061
-sprintf_s_s_p                  1062
-sprintf_s_sc_p                 1063
-sprintf_p_p_p                  1064
-new_s                          1065
-new_s_i                        1066
-new_s_ic                       1067
-stringinfo_i_s_i               1068
-stringinfo_i_sc_i              1069
-stringinfo_i_s_ic              1070
-stringinfo_i_sc_ic             1071
-upcase_s_s                     1072
-upcase_s_sc                    1073
-downcase_s_s                   1074
-downcase_s_sc                  1075
-titlecase_s_s                  1076
-titlecase_s_sc                 1077
-join_s_s_p                     1078
-join_s_sc_p                    1079
-split_p_s_s                    1080
-split_p_sc_s                   1081
-split_p_s_sc                   1082
-split_p_sc_sc                  1083
-charset_i_s                    1084
-charset_i_sc                   1085
-charsetname_s_i                1086
-charsetname_s_ic               1087
-find_charset_i_s               1088
-find_charset_i_sc              1089
-trans_charset_s_s_i            1090
-trans_charset_s_sc_i           1091
-trans_charset_s_s_ic           1092
-trans_charset_s_sc_ic          1093
-encoding_i_s                   1094
-encoding_i_sc                  1095
-encodingname_s_i               1096
-encodingname_s_ic              1097
-find_encoding_i_s              1098
-find_encoding_i_sc             1099
-trans_encoding_s_s_i           1100
-trans_encoding_s_sc_i          1101
-trans_encoding_s_s_ic          1102
-trans_encoding_s_sc_ic         1103
-is_cclass_i_i_s_i              1104
-is_cclass_i_ic_s_i             1105
-is_cclass_i_i_sc_i             1106
-is_cclass_i_ic_sc_i            1107
-is_cclass_i_i_s_ic             1108
-is_cclass_i_ic_s_ic            1109
-is_cclass_i_i_sc_ic            1110
-is_cclass_i_ic_sc_ic           1111
-find_cclass_i_i_s_i_i          1112
-find_cclass_i_ic_s_i_i         1113
-find_cclass_i_i_sc_i_i         1114
-find_cclass_i_ic_sc_i_i        1115
-find_cclass_i_i_s_ic_i         1116
-find_cclass_i_ic_s_ic_i        1117
-find_cclass_i_i_sc_ic_i        1118
-find_cclass_i_ic_sc_ic_i       1119
-find_cclass_i_i_s_i_ic         1120
-find_cclass_i_ic_s_i_ic        1121
-find_cclass_i_i_sc_i_ic        1122
-find_cclass_i_ic_sc_i_ic       1123
-find_cclass_i_i_s_ic_ic        1124
-find_cclass_i_ic_s_ic_ic       1125
-find_cclass_i_i_sc_ic_ic       1126
-find_cclass_i_ic_sc_ic_ic      1127
-find_not_cclass_i_i_s_i_i      1128
-find_not_cclass_i_ic_s_i_i     1129
-find_not_cclass_i_i_sc_i_i     1130
-find_not_cclass_i_ic_sc_i_i    1131
-find_not_cclass_i_i_s_ic_i     1132
-find_not_cclass_i_ic_s_ic_i    1133
-find_not_cclass_i_i_sc_ic_i    1134
-find_not_cclass_i_ic_sc_ic_i   1135
-find_not_cclass_i_i_s_i_ic     1136
-find_not_cclass_i_ic_s_i_ic    1137
-find_not_cclass_i_i_sc_i_ic    1138
-find_not_cclass_i_ic_sc_i_ic   1139
-find_not_cclass_i_i_s_ic_ic    1140
-find_not_cclass_i_ic_s_ic_ic   1141
-find_not_cclass_i_i_sc_ic_ic   1142
-find_not_cclass_i_ic_sc_ic_ic  1143
-escape_s_s                     1144
-compose_s_s                    1145
-compose_s_sc                   1146
-spawnw_i_s                     1147
-spawnw_i_sc                    1148
-spawnw_i_p                     1149
-err_i                          1150
-err_s                          1151
-err_s_i                        1152
-err_s_ic                       1153
-time_i                         1154
-time_n                         1155
-gmtime_s_i                     1156
-gmtime_s_ic                    1157
-localtime_s_i                  1158
-localtime_s_ic                 1159
-decodetime_p_i                 1160
-decodetime_p_ic                1161
-decodelocaltime_p_i            1162
-decodelocaltime_p_ic           1163
-sysinfo_s_i                    1164
-sysinfo_s_ic                   1165
-sysinfo_i_i                    1166
-sysinfo_i_ic                   1167
-sleep_i                        1168
-sleep_ic                       1169
-sleep_n                        1170
-sleep_nc                       1171
-store_lex_s_p                  1172
-store_lex_sc_p                 1173
-store_dynamic_lex_s_p          1174
-store_dynamic_lex_sc_p         1175
-find_lex_p_s                   1176
-find_lex_p_sc                  1177
-find_dynamic_lex_p_s           1178
-find_dynamic_lex_p_sc          1179
-find_caller_lex_p_s            1180
-find_caller_lex_p_sc           1181
-get_namespace_p                1182
-get_namespace_p_p              1183
-get_namespace_p_pc             1184
-get_hll_namespace_p            1185
-get_hll_namespace_p_p          1186
-get_hll_namespace_p_pc         1187
-get_root_namespace_p           1188
-get_root_namespace_p_p         1189
-get_root_namespace_p_pc        1190
-get_global_p_s                 1191
-get_global_p_sc                1192
-get_global_p_p_s               1193
-get_global_p_pc_s              1194
-get_global_p_p_sc              1195
-get_global_p_pc_sc             1196
-get_hll_global_p_s             1197
-get_hll_global_p_sc            1198
-get_hll_global_p_p_s           1199
-get_hll_global_p_pc_s          1200
-get_hll_global_p_p_sc          1201
-get_hll_global_p_pc_sc         1202
-get_root_global_p_s            1203
-get_root_global_p_sc           1204
-get_root_global_p_p_s          1205
-get_root_global_p_pc_s         1206
-get_root_global_p_p_sc         1207
-get_root_global_p_pc_sc        1208
-set_global_s_p                 1209
-set_global_sc_p                1210
-set_global_p_s_p               1211
-set_global_pc_s_p              1212
-set_global_p_sc_p              1213
-set_global_pc_sc_p             1214
-set_hll_global_s_p             1215
-set_hll_global_sc_p            1216
-set_hll_global_p_s_p           1217
-set_hll_global_pc_s_p          1218
-set_hll_global_p_sc_p          1219
-set_hll_global_pc_sc_p         1220
-set_root_global_s_p            1221
-set_root_global_sc_p           1222
-set_root_global_p_s_p          1223
-set_root_global_pc_s_p         1224
-set_root_global_p_sc_p         1225
-set_root_global_pc_sc_p        1226
-find_name_p_s                  1227
-find_name_p_sc                 1228
-find_sub_not_null_p_s          1229
-find_sub_not_null_p_sc         1230
+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
+exchange_i_i                    857
+exchange_p_p                    858
+exchange_n_n                    859
+exchange_s_s                    860
+set_i_i                         861
+set_i_ic                        862
+set_i_n                         863
+set_i_nc                        864
+set_i_s                         865
+set_i_sc                        866
+set_n_n                         867
+set_n_nc                        868
+set_n_i                         869
+set_n_ic                        870
+set_n_s                         871
+set_n_sc                        872
+set_n_p                         873
+set_s_p                         874
+set_s_s                         875
+set_s_sc                        876
+set_s_i                         877
+set_s_ic                        878
+set_s_n                         879
+set_s_nc                        880
+set_p_pc                        881
+set_p_p                         882
+set_p_i                         883
+set_p_ic                        884
+set_p_n                         885
+set_p_nc                        886
+set_p_s                         887
+set_p_sc                        888
+set_i_p                         889
+assign_p_p                      890
+assign_p_i                      891
+assign_p_ic                     892
+assign_p_n                      893
+assign_p_nc                     894
+assign_p_s                      895
+assign_p_sc                     896
+assign_s_s                      897
+assign_s_sc                     898
+setref_p_p                      899
+deref_p_p                       900
+setp_ind_i_p                    901
+setp_ind_ic_p                   902
+setn_ind_i_n                    903
+setn_ind_ic_n                   904
+setn_ind_i_nc                   905
+setn_ind_ic_nc                  906
+sets_ind_i_s                    907
+sets_ind_ic_s                   908
+sets_ind_i_sc                   909
+sets_ind_ic_sc                  910
+seti_ind_i_i                    911
+seti_ind_ic_i                   912
+seti_ind_i_ic                   913
+seti_ind_ic_ic                  914
+set_p_ki_i                      915
+set_p_kic_i                     916
+set_p_ki_ic                     917
+set_p_kic_ic                    918
+set_p_ki_n                      919
+set_p_kic_n                     920
+set_p_ki_nc                     921
+set_p_kic_nc                    922
+set_p_ki_s                      923
+set_p_kic_s                     924
+set_p_ki_sc                     925
+set_p_kic_sc                    926
+set_p_ki_p                      927
+set_p_kic_p                     928
+set_i_p_ki                      929
+set_i_p_kic                     930
+set_n_p_ki                      931
+set_n_p_kic                     932
+set_s_p_ki                      933
+set_s_p_kic                     934
+set_p_p_ki                      935
+set_p_p_kic                     936
+set_p_k_i                       937
+set_p_kc_i                      938
+set_p_k_ic                      939
+set_p_kc_ic                     940
+set_p_k_n                       941
+set_p_kc_n                      942
+set_p_k_nc                      943
+set_p_kc_nc                     944
+set_p_k_s                       945
+set_p_kc_s                      946
+set_p_k_sc                      947
+set_p_kc_sc                     948
+set_p_k_p                       949
+set_p_kc_p                      950
+set_i_p_k                       951
+set_i_p_kc                      952
+set_n_p_k                       953
+set_n_p_kc                      954
+set_s_p_k                       955
+set_s_p_kc                      956
+set_p_p_k                       957
+set_p_p_kc                      958
+clone_p_p                       959
+clone_p_p_p                     960
+clone_p_p_pc                    961
+copy_p_p                        962
+null_s                          963
+null_i                          964
+null_p                          965
+null_n                          966
+cleari                          967
+clearn                          968
+clears                          969
+clearp                          970
+ord_i_s                         971
+ord_i_sc                        972
+ord_i_s_i                       973
+ord_i_sc_i                      974
+ord_i_s_ic                      975
+ord_i_sc_ic                     976
+chr_s_i                         977
+chr_s_ic                        978
+chopn_s_s_i                     979
+chopn_s_sc_i                    980
+chopn_s_s_ic                    981
+chopn_s_sc_ic                   982
+concat_s_s                      983
+concat_s_sc                     984
+concat_p_p                      985
+concat_p_s                      986
+concat_p_sc                     987
+concat_s_s_s                    988
+concat_s_sc_s                   989
+concat_s_s_sc                   990
+concat_p_p_s                    991
+concat_p_p_sc                   992
+concat_p_p_p                    993
+repeat_s_s_i                    994
+repeat_s_sc_i                   995
+repeat_s_s_ic                   996
+repeat_s_sc_ic                  997
+repeat_p_p_i                    998
+repeat_p_p_ic                   999
+repeat_p_p_p                   1000
+repeat_p_i                     1001
+repeat_p_ic                    1002
+repeat_p_p                     1003
+length_i_s                     1004
+length_i_sc                    1005
+bytelength_i_s                 1006
+bytelength_i_sc                1007
+pin_s                          1008
+unpin_s                        1009
+substr_s_s_i                   1010
+substr_s_sc_i                  1011
+substr_s_s_ic                  1012
+substr_s_sc_ic                 1013
+substr_s_s_i_i                 1014
+substr_s_sc_i_i                1015
+substr_s_s_ic_i                1016
+substr_s_sc_ic_i               1017
+substr_s_s_i_ic                1018
+substr_s_sc_i_ic               1019
+substr_s_s_ic_ic               1020
+substr_s_sc_ic_ic              1021
+substr_s_p_i_i                 1022
+substr_s_p_ic_i                1023
+substr_s_p_i_ic                1024
+substr_s_p_ic_ic               1025
+replace_s_s_i_i_s              1026
+replace_s_sc_i_i_s             1027
+replace_s_s_ic_i_s             1028
+replace_s_sc_ic_i_s            1029
+replace_s_s_i_ic_s             1030
+replace_s_sc_i_ic_s            1031
+replace_s_s_ic_ic_s            1032
+replace_s_sc_ic_ic_s           1033
+replace_s_s_i_i_sc             1034
+replace_s_sc_i_i_sc            1035
+replace_s_s_ic_i_sc            1036
+replace_s_sc_ic_i_sc           1037
+replace_s_s_i_ic_sc            1038
+replace_s_sc_i_ic_sc           1039
+replace_s_s_ic_ic_sc           1040
+replace_s_sc_ic_ic_sc          1041
+index_i_s_s                    1042
+index_i_sc_s                   1043
+index_i_s_sc                   1044
+index_i_sc_sc                  1045
+index_i_s_s_i                  1046
+index_i_sc_s_i                 1047
+index_i_s_sc_i                 1048
+index_i_sc_sc_i                1049
+index_i_s_s_ic                 1050
+index_i_sc_s_ic                1051
+index_i_s_sc_ic                1052
+index_i_sc_sc_ic               1053
+sprintf_s_s_p                  1054
+sprintf_s_sc_p                 1055
+sprintf_p_p_p                  1056
+new_s                          1057
+new_s_i                        1058
+new_s_ic                       1059
+stringinfo_i_s_i               1060
+stringinfo_i_sc_i              1061
+stringinfo_i_s_ic              1062
+stringinfo_i_sc_ic             1063
+upcase_s_s                     1064
+upcase_s_sc                    1065
+downcase_s_s                   1066
+downcase_s_sc                  1067
+titlecase_s_s                  1068
+titlecase_s_sc                 1069
+join_s_s_p                     1070
+join_s_sc_p                    1071
+split_p_s_s                    1072
+split_p_sc_s                   1073
+split_p_s_sc                   1074
+split_p_sc_sc                  1075
+charset_i_s                    1076
+charset_i_sc                   1077
+charsetname_s_i                1078
+charsetname_s_ic               1079
+find_charset_i_s               1080
+find_charset_i_sc              1081
+trans_charset_s_s_i            1082
+trans_charset_s_sc_i           1083
+trans_charset_s_s_ic           1084
+trans_charset_s_sc_ic          1085
+encoding_i_s                   1086
+encoding_i_sc                  1087
+encodingname_s_i               1088
+encodingname_s_ic              1089
+find_encoding_i_s              1090
+find_encoding_i_sc             1091
+trans_encoding_s_s_i           1092
+trans_encoding_s_sc_i          1093
+trans_encoding_s_s_ic          1094
+trans_encoding_s_sc_ic         1095
+is_cclass_i_i_s_i              1096
+is_cclass_i_ic_s_i             1097
+is_cclass_i_i_sc_i             1098
+is_cclass_i_ic_sc_i            1099
+is_cclass_i_i_s_ic             1100
+is_cclass_i_ic_s_ic            1101
+is_cclass_i_i_sc_ic            1102
+is_cclass_i_ic_sc_ic           1103
+find_cclass_i_i_s_i_i          1104
+find_cclass_i_ic_s_i_i         1105
+find_cclass_i_i_sc_i_i         1106
+find_cclass_i_ic_sc_i_i        1107
+find_cclass_i_i_s_ic_i         1108
+find_cclass_i_ic_s_ic_i        1109
+find_cclass_i_i_sc_ic_i        1110
+find_cclass_i_ic_sc_ic_i       1111
+find_cclass_i_i_s_i_ic         1112
+find_cclass_i_ic_s_i_ic        1113
+find_cclass_i_i_sc_i_ic        1114
+find_cclass_i_ic_sc_i_ic       1115
+find_cclass_i_i_s_ic_ic        1116
+find_cclass_i_ic_s_ic_ic       1117
+find_cclass_i_i_sc_ic_ic       1118
+find_cclass_i_ic_sc_ic_ic      1119
+find_not_cclass_i_i_s_i_i      1120
+find_not_cclass_i_ic_s_i_i     1121
+find_not_cclass_i_i_sc_i_i     1122
+find_not_cclass_i_ic_sc_i_i    1123
+find_not_cclass_i_i_s_ic_i     1124
+find_not_cclass_i_ic_s_ic_i    1125
+find_not_cclass_i_i_sc_ic_i    1126
+find_not_cclass_i_ic_sc_ic_i   1127
+find_not_cclass_i_i_s_i_ic     1128
+find_not_cclass_i_ic_s_i_ic    1129
+find_not_cclass_i_i_sc_i_ic    1130
+find_not_cclass_i_ic_sc_i_ic   1131
+find_not_cclass_i_i_s_ic_ic    1132
+find_not_cclass_i_ic_s_ic_ic   1133
+find_not_cclass_i_i_sc_ic_ic   1134
+find_not_cclass_i_ic_sc_ic_ic  1135
+escape_s_s                     1136
+compose_s_s                    1137
+compose_s_sc                   1138
+spawnw_i_s                     1139
+spawnw_i_sc                    1140
+spawnw_i_p                     1141
+err_i                          1142
+err_s                          1143
+err_s_i                        1144
+err_s_ic                       1145
+time_i                         1146
+time_n                         1147
+gmtime_s_i                     1148
+gmtime_s_ic                    1149
+localtime_s_i                  1150
+localtime_s_ic                 1151
+decodetime_p_i                 1152
+decodetime_p_ic                1153
+decodelocaltime_p_i            1154
+decodelocaltime_p_ic           1155
+sysinfo_s_i                    1156
+sysinfo_s_ic                   1157
+sysinfo_i_i                    1158
+sysinfo_i_ic                   1159
+sleep_i                        1160
+sleep_ic                       1161
+sleep_n                        1162
+sleep_nc                       1163
+store_lex_s_p                  1164
+store_lex_sc_p                 1165
+store_dynamic_lex_s_p          1166
+store_dynamic_lex_sc_p         1167
+find_lex_p_s                   1168
+find_lex_p_sc                  1169
+find_dynamic_lex_p_s           1170
+find_dynamic_lex_p_sc          1171
+find_caller_lex_p_s            1172
+find_caller_lex_p_sc           1173
+get_namespace_p                1174
+get_namespace_p_p              1175
+get_namespace_p_pc             1176
+get_hll_namespace_p            1177
+get_hll_namespace_p_p          1178
+get_hll_namespace_p_pc         1179
+get_root_namespace_p           1180
+get_root_namespace_p_p         1181
+get_root_namespace_p_pc        1182
+get_global_p_s                 1183
+get_global_p_sc                1184
+get_global_p_p_s               1185
+get_global_p_pc_s              1186
+get_global_p_p_sc              1187
+get_global_p_pc_sc             1188
+get_hll_global_p_s             1189
+get_hll_global_p_sc            1190
+get_hll_global_p_p_s           1191
+get_hll_global_p_pc_s          1192
+get_hll_global_p_p_sc          1193
+get_hll_global_p_pc_sc         1194
+get_root_global_p_s            1195
+get_root_global_p_sc           1196
+get_root_global_p_p_s          1197
+get_root_global_p_pc_s         1198
+get_root_global_p_p_sc         1199
+get_root_global_p_pc_sc        1200
+set_global_s_p                 1201
+set_global_sc_p                1202
+set_global_p_s_p               1203
+set_global_pc_s_p              1204
+set_global_p_sc_p              1205
+set_global_pc_sc_p             1206
+set_hll_global_s_p             1207
+set_hll_global_sc_p            1208
+set_hll_global_p_s_p           1209
+set_hll_global_pc_s_p          1210
+set_hll_global_p_sc_p          1211
+set_hll_global_pc_sc_p         1212
+set_root_global_s_p            1213
+set_root_global_sc_p           1214
+set_root_global_p_s_p          1215
+set_root_global_pc_s_p         1216
+set_root_global_p_sc_p         1217
+set_root_global_pc_sc_p        1218
+find_name_p_s                  1219
+find_name_p_sc                 1220
+find_sub_not_null_p_s          1221
+find_sub_not_null_p_sc         1222

Modified: trunk/t/dynoplibs/obscure.t
==============================================================================
--- trunk/t/dynoplibs/obscure.t	Wed May 19 05:04:24 2010	(r46780)
+++ trunk/t/dynoplibs/obscure.t	Wed May 19 07:44:39 2010	(r46781)
@@ -20,13 +20,19 @@
 .sub main :main
     .include 'fp_equality.pasm'
     .include 'test_more.pir'
-    plan(17)
+    plan(42)
     ok(1,"load obscure_ops")
 
     test_covers()
     test_vers()
     test_hav()
     test_exsec()
+
+    lcm_test()
+    gcd_test()
+    test_fact()
+    test_fact_n_i()
+    test_fact_n_ic()
 .end
 
 .sub test_covers
@@ -97,6 +103,111 @@
     .fp_eq_ok(x, 0.414213562373095, 'exsec of pi/4')
 .end
 
+.sub lcm_test
+    set $I0, 10
+    set $I1, 10
+    lcm $I2, $I1, $I0
+    is( $I2, 10, 'lcm_test' )
+
+    set $I1, 17
+    lcm $I2, $I1, $I0
+    is( $I2, 170, 'lcm_test' )
+
+    set $I0, 17
+    set $I1, 10
+    lcm $I2, $I1, $I0
+    is( $I2, 170, 'lcm_test' )
+
+    set $I0, 10
+    set $I1, 0
+    lcm $I2, $I1, $I0
+    is( $I2, 0, 'lcm_test' )
+
+    set $I0, 0
+    set $I1, 10
+    lcm $I2, $I1, $I0
+    is( $I2, 0, 'lcm_test' )
+.end
+
+.sub gcd_test
+    set $I0, 70
+    set $I1, 42
+    gcd $I2, $I1, $I0
+    is( $I2, 14, 'gcd_test' )
+
+    set $I0, 66
+    gcd $I2, $I1, $I0
+    is( $I2, 6, 'gcd_test' )
+
+    set $I0, 70
+    set $I1, 1
+    gcd $I2, $I1, $I0
+    is( $I2, 1, 'gcd_test' )
+
+    set $I0, 70
+    set $I1, 3
+    gcd $I2, $I1, $I0
+    is( $I2, 1, 'gcd_test' )
+.end
+
+.sub 'test_fact'
+    $I0 = 3
+    $I1 = 11
+    $I2 = 0
+    $I3 = -563
+
+    $I5 = fact $I0
+    is($I5, 6, 'fact_i_i - first')
+
+    $I6 = fact $I1
+    is($I6, 39916800, 'fact_i_i - second')
+
+    $I7 = fact $I2
+    is($I7, 1, 'fact_i_i on zero')
+
+    $I8 = fact $I3
+    is($I8, 1, 'fact_i_i on a negative integer')
+
+    # Now run the same tests, with constants instead
+    $I5 = fact 3
+    is($I5, 6, 'fact_i_ic - first')
+
+    $I6 = fact 11
+    is($I6, 39916800, 'fact_i_ic - second')
+
+    $I7 = fact 0
+    is($I7, 1, 'fact_i_ic on zero')
+
+    $I8 = fact -563
+    is($I8, 1, 'fact_i_ic on a negative integer')
+.end
+
+.sub test_fact_n_i
+    set $I0, 3
+    set $I1, 11
+    set $I2, 0
+    set $I3, -563
+    fact $N5, $I0
+    is( $N5, "6", 'fact_n_i' )
+    fact $N6, $I1
+    is( $N6, "39916800", 'fact_n_i' )
+    fact $N7, $I2
+    is( $N7, "1", 'fact_n_i' )
+    fact $N8, $I3
+    is( $N8, "1", 'fact_n_i' )
+.end
+
+.sub test_fact_n_ic
+    fact $N5, 3
+    is( $N5, "6", 'fact_n_ic' )
+    fact $N6, 11
+    is( $N6, "39916800", 'fact_n_ic' )
+    fact $N7, 0
+    is( $N7, "1", 'fact_n_ic' )
+    fact $N8, -563
+    is( $N8, "1", 'fact_n_ic' )
+.end
+
 
 # Local Variables:
 #   mode: pir

Modified: trunk/t/op/arithmetics.t
==============================================================================
--- trunk/t/op/arithmetics.t	Wed May 19 05:04:24 2010	(r46780)
+++ trunk/t/op/arithmetics.t	Wed May 19 07:44:39 2010	(r46781)
@@ -21,7 +21,7 @@
     .include 'test_more.pir'
     .include 'iglobals.pasm'
 
-    plan(130)
+    plan(121)
 
     take_the_negative_of_a_native_integer()
     take_the_absolute_of_a_native_integer()
@@ -42,8 +42,6 @@
     subtract_native_number_from_native_number()
     multiply_native_number_with_native_number()
     divide_native_number_by_native_number()
-    lcm_test()
-    gcd_test()
     integer_overflow_with_pow()
     bnot_p_p_creates_destination()
     # END_OF_TESTS
@@ -472,53 +470,6 @@
 
 .end
 
-.sub lcm_test
-    set $I0, 10
-    set $I1, 10
-    lcm $I2, $I1, $I0
-    is( $I2, 10, 'lcm_test' )
-
-    set $I1, 17
-    lcm $I2, $I1, $I0
-    is( $I2, 170, 'lcm_test' )
-
-    set $I0, 17
-    set $I1, 10
-    lcm $I2, $I1, $I0
-    is( $I2, 170, 'lcm_test' )
-
-    set $I0, 10
-    set $I1, 0
-    lcm $I2, $I1, $I0
-    is( $I2, 0, 'lcm_test' )
-
-    set $I0, 0
-    set $I1, 10
-    lcm $I2, $I1, $I0
-    is( $I2, 0, 'lcm_test' )
-.end
-
-.sub gcd_test
-    set $I0, 70
-    set $I1, 42
-    gcd $I2, $I1, $I0
-    is( $I2, 14, 'gcd_test' )
-
-    set $I0, 66
-    gcd $I2, $I1, $I0
-    is( $I2, 6, 'gcd_test' )
-
-    set $I0, 70
-    set $I1, 1
-    gcd $I2, $I1, $I0
-    is( $I2, 1, 'gcd_test' )
-
-    set $I0, 70
-    set $I1, 3
-    gcd $I2, $I1, $I0
-    is( $I2, 1, 'gcd_test' )
-.end
-
 .sub integer_overflow_with_pow
     .include "iglobals.pasm"
 

Modified: trunk/t/op/integer.t
==============================================================================
--- trunk/t/op/integer.t	Wed May 19 05:04:24 2010	(r46780)
+++ trunk/t/op/integer.t	Wed May 19 07:44:39 2010	(r46781)
@@ -16,7 +16,7 @@
 
 =cut
 
-.const int TESTS = 202
+.const int TESTS = 194
 
 .sub 'test' :main
     .include 'test_more.pir'
@@ -49,7 +49,6 @@
     test_set_n()
     test_cleari()
     test_neg()
-    test_fact()
     test_mul_i_i()
     test_exchange()
     test_null()
@@ -837,38 +836,6 @@
     is($I0, 12, 'mul_i_i')
 .end
 
-.sub 'test_fact'
-    $I0 = 3
-    $I1 = 11
-    $I2 = 0
-    $I3 = -563
-
-    $I5 = fact $I0
-    is($I5, 6, 'fact_i_i - first')
-
-    $I6 = fact $I1
-    is($I6, 39916800, 'fact_i_i - second')
-
-    $I7 = fact $I2
-    is($I7, 1, 'fact_i_i on zero')
-
-    $I8 = fact $I3
-    is($I8, 1, 'fact_i_i on a negative integer')
-
-    # Now run the same tests, with constants instead
-    $I5 = fact 3
-    is($I5, 6, 'fact_i_ic - first')
-
-    $I6 = fact 11
-    is($I6, 39916800, 'fact_i_ic - second')
-
-    $I7 = fact 0
-    is($I7, 1, 'fact_i_ic on zero')
-
-    $I8 = fact -563
-    is($I8, 1, 'fact_i_ic on a negative integer')
-.end
-
 .sub 'test_exchange'
     $I10 = 10
     $I20 = 20

Modified: trunk/t/op/number.t
==============================================================================
--- trunk/t/op/number.t	Wed May 19 05:04:24 2010	(r46780)
+++ trunk/t/op/number.t	Wed May 19 07:44:39 2010	(r46781)
@@ -19,7 +19,7 @@
 .sub main :main
     .include 'test_more.pir'
 
-    plan(173)
+    plan(165)
     test_set_n_nc()
     test_set_n()
     test_add_n_n_n()
@@ -51,8 +51,6 @@
     test_neg_n()
     test_neg_0_dot_0()
     test_mul_n_n()
-    test_fact_n_i()
-    test_fact_n_ic()
     test_exchange()
     test_op_n_nc_nc()
     test_lt_nc_nc_ic()
@@ -706,32 +704,6 @@
     is( $N0, "12", 'mul_n_n' )
 .end
 
-.sub test_fact_n_i
-    set $I0, 3
-    set $I1, 11
-    set $I2, 0
-    set $I3, -563
-    fact $N5, $I0
-    is( $N5, "6", 'fact_n_i' )
-    fact $N6, $I1
-    is( $N6, "39916800", 'fact_n_i' )
-    fact $N7, $I2
-    is( $N7, "1", 'fact_n_i' )
-    fact $N8, $I3
-    is( $N8, "1", 'fact_n_i' )
-.end
-
-.sub test_fact_n_ic
-    fact $N5, 3
-    is( $N5, "6", 'fact_n_ic' )
-    fact $N6, 11
-    is( $N6, "39916800", 'fact_n_ic' )
-    fact $N7, 0
-    is( $N7, "1", 'fact_n_ic' )
-    fact $N8, -563
-    is( $N8, "1", 'fact_n_ic' )
-.end
-
 .sub test_exchange
     set $N1, 1.234560
     set $N2, 9.876540


More information about the parrot-commits mailing list