summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--benchmark/float_neg_posi.yml8
-rw-r--r--numeric.c30
-rw-r--r--numeric.rb22
3 files changed, 30 insertions, 30 deletions
diff --git a/benchmark/float_neg_posi.yml b/benchmark/float_neg_posi.yml
new file mode 100644
index 00000000000..172db1bf6da
--- /dev/null
+++ b/benchmark/float_neg_posi.yml
@@ -0,0 +1,8 @@
+prelude: |
+ flo = 4.2
+benchmark:
+ negative?: |
+ flo.negative?
+ positive?: |
+ flo.positive?
+loop_count: 20000000
diff --git a/numeric.c b/numeric.c
index 97fc2392111..bcc0ab7c619 100644
--- a/numeric.c
+++ b/numeric.c
@@ -2386,34 +2386,6 @@ flo_truncate(int argc, VALUE *argv, VALUE num)
/*
* call-seq:
- * float.positive? -> true or false
- *
- * Returns +true+ if +float+ is greater than 0.
- */
-
-static VALUE
-flo_positive_p(VALUE num)
-{
- double f = RFLOAT_VALUE(num);
- return f > 0.0 ? Qtrue : Qfalse;
-}
-
-/*
- * call-seq:
- * float.negative? -> true or false
- *
- * Returns +true+ if +float+ is less than 0.
- */
-
-static VALUE
-flo_negative_p(VALUE num)
-{
- double f = RFLOAT_VALUE(num);
- return f < 0.0 ? Qtrue : Qfalse;
-}
-
-/*
- * call-seq:
* num.floor([ndigits]) -> integer or float
*
* Returns the largest number less than or equal to +num+ with
@@ -5654,8 +5626,6 @@ Init_Numeric(void)
rb_define_method(rb_cFloat, "finite?", rb_flo_is_finite_p, 0);
rb_define_method(rb_cFloat, "next_float", flo_next_float, 0);
rb_define_method(rb_cFloat, "prev_float", flo_prev_float, 0);
- rb_define_method(rb_cFloat, "positive?", flo_positive_p, 0);
- rb_define_method(rb_cFloat, "negative?", flo_negative_p, 0);
}
#undef rb_float_value
diff --git a/numeric.rb b/numeric.rb
index fbddaa9f6d6..0746a838203 100644
--- a/numeric.rb
+++ b/numeric.rb
@@ -204,4 +204,26 @@ class Float
Primitive.attr! 'inline'
Primitive.cexpr! 'FLOAT_ZERO_P(self) ? Qtrue : Qfalse'
end
+
+ #
+ # call-seq:
+ # float.positive? -> true or false
+ #
+ # Returns +true+ if +float+ is greater than 0.
+ #
+ def positive?
+ Primitive.attr! 'inline'
+ Primitive.cexpr! 'RFLOAT_VALUE(self) > 0.0 ? Qtrue : Qfalse'
+ end
+
+ #
+ # call-seq:
+ # float.negative? -> true or false
+ #
+ # Returns +true+ if +float+ is less than 0.
+ #
+ def negative?
+ Primitive.attr! 'inline'
+ Primitive.cexpr! 'RFLOAT_VALUE(self) < 0.0 ? Qtrue : Qfalse'
+ end
end