# New Ticket Created by  Lars Balker Rasmussen 
# Please include the string:  [perl #24868]
# in the subject line of all future correspondence about this issue. 
# <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=24868 >


I have added floor and ceil ops (like I did for floor in september,
but noone noticed).
-- 
Lars Balker Rasmussen                                        Consult::Perl

Index: ops/math.ops
===================================================================
RCS file: /cvs/public/parrot/ops/math.ops,v
retrieving revision 1.11
diff -u -a -r1.11 math.ops
--- ops/math.ops	23 Oct 2003 17:41:55 -0000	1.11
+++ ops/math.ops	10 Jan 2004 21:59:25 -0000
@@ -413,6 +413,64 @@
 
 ########################################
 
+=item B<ceil>(inout NUM)
+
+Set $1 to the smallest integral value greater than or equal to $1.
+
+=item B<ceil>(out INT, in NUM)
+
+=item B<ceil>(out NUM, in NUM)
+
+Set $1 to the smallest integral value greater than or equal to $2.
+
+=cut
+
+inline op ceil(inout NUM) {
+  $1 = ceil( $1 );
+  goto NEXT();
+}
+
+inline op ceil(out INT, in NUM) {
+  $1 = (INTVAL)ceil($2);
+  goto NEXT();
+}
+
+inline op ceil(out NUM, in NUM) {
+  $1 = ceil($2);
+  goto NEXT();
+}
+
+########################################
+
+=item B<floor>(inout NUM)
+
+Set $1 to the largest integral value less than or equal to $1.
+
+=item B<floor>(out INT, in NUM)
+
+=item B<floor>(out NUM, in NUM)
+
+Set $1 to the largest integral value less than or equal to $2.
+
+=cut
+
+inline op floor(inout NUM) {
+  $1 = floor( $1 );
+  goto NEXT();
+}
+
+inline op floor(out INT, in NUM) {
+  $1 = (INTVAL)floor($2);
+  goto NEXT();
+}
+
+inline op floor(out NUM, in NUM) {
+  $1 = floor($2);
+  goto NEXT();
+}
+
+########################################
+
 =item B<inc>(inout INT)
 
 =item B<inc>(inout NUM)
Index: t/op/arithmetics.t
===================================================================
RCS file: /cvs/public/parrot/t/op/arithmetics.t,v
retrieving revision 1.7
diff -u -a -r1.7 arithmetics.t
--- t/op/arithmetics.t	11 Sep 2003 14:48:51 -0000	1.7
+++ t/op/arithmetics.t	10 Jan 2004 21:59:26 -0000
@@ -1,6 +1,6 @@
 #! perl -w
 
-use Parrot::Test tests => 18;
+use Parrot::Test tests => 20;
 use Test::More;
 
 my $fp_equality_macro = <<'ENDOFMACRO';
@@ -281,6 +281,142 @@
 0.000000
 123.456789
 123.456789
+OUTPUT
+
+output_is(<<'CODE', <<OUTPUT, "ceil of a native number");
+       set N0, 0
+       ceil N0
+       print N0
+       print "\n"
+       set N0, 123.45678901
+       ceil N0
+       print N0
+       print "\n"
+       set N0, -123.45678901
+       ceil N0
+       print N0
+       print "\n"
+       set N0, 0
+       set N1, 1
+       ceil N1, N0
+       print N1
+       print "\n"
+       set N0, 0.0
+       set N1, 1
+       ceil N1, N0
+       print N1
+       print "\n"
+       set N0, 123.45678901
+       set N1, 1
+       ceil N1, N0
+       print N1
+       print "\n"
+       set N0, -123.45678901
+       set N1, 1
+       ceil N1, N0
+       print N1
+       print "\n"
+       set N0, 0
+       set I1, 1
+       ceil I1, N0
+       print I1
+       print "\n"
+       set N0, 0.0
+       set I1, 1
+       ceil I1, N0
+       print I1
+       print "\n"
+       set N0, 123.45678901
+       set I1, 1
+       ceil I1, N0
+       print I1
+       print "\n"
+       set N0, -123.45678901
+       set I1, 1
+       ceil I1, N0
+       print I1
+       print "\n"
+       end
+CODE
+0.000000
+124.000000
+-123.000000
+0.000000
+0.000000
+124.000000
+-123.000000
+0
+0
+124
+-123
+OUTPUT
+
+output_is(<<'CODE', <<OUTPUT, "floor of a native number");
+       set N0, 0
+       floor N0
+       print N0
+       print "\n"
+       set N0, 123.45678901
+       floor N0
+       print N0
+       print "\n"
+       set N0, -123.45678901
+       floor N0
+       print N0
+       print "\n"
+       set N0, 0
+       set N1, 1
+       floor N1, N0
+       print N1
+       print "\n"
+       set N0, 0.0
+       set N1, 1
+       floor N1, N0
+       print N1
+       print "\n"
+       set N0, 123.45678901
+       set N1, 1
+       floor N1, N0
+       print N1
+       print "\n"
+       set N0, -123.45678901
+       set N1, 1
+       floor N1, N0
+       print N1
+       print "\n"
+       set N0, 0
+       set I1, 1
+       floor I1, N0
+       print I1
+       print "\n"
+       set N0, 0.0
+       set I1, 1
+       floor I1, N0
+       print I1
+       print "\n"
+       set N0, 123.45678901
+       set I1, 1
+       floor I1, N0
+       print I1
+       print "\n"
+       set N0, -123.45678901
+       set I1, 1
+       floor I1, N0
+       print I1
+       print "\n"
+       end
+CODE
+0.000000
+123.000000
+-124.000000
+0.000000
+0.000000
+123.000000
+-124.000000
+0
+0
+123
+-124
 OUTPUT
 
 #

Reply via email to