diff options
author | S.H <[email protected]> | 2022-10-28 01:13:16 +0900 |
---|---|---|
committer | <[email protected]> | 2022-10-27 09:13:16 -0700 |
commit | c6f439a6a8df582416e756d7511aa4d9c72071a9 () | |
tree | 1c9d36b4ace554f42160800e8343a88a180b85fd | |
parent | 7cf7e6c33226093c9c4e3078f7ced3b9b9c99b05 (diff) |
Improve performance some `Integer` and `Float` methods [Feature #19085] (#6638)
* Improve some Integer and Float methods * Using alias and Remove unnecessary code * Remove commentout code
Notes: Merged-By: k0kubun <[email protected]>
-rw-r--r-- | benchmark/numeric_methods.yml | 16 | ||||
-rw-r--r-- | complex.c | 43 | ||||
-rw-r--r-- | numeric.rb | 74 | ||||
-rw-r--r-- | rational.c | 27 |
4 files changed, 81 insertions, 79 deletions
@@ -10,4 +10,20 @@ benchmark: int.finite? infinite?: | int.infinite? loop_count: 20000000 @@ -2161,31 +2161,6 @@ nucomp_s_convert(int argc, VALUE *argv, VALUE klass) /* * call-seq: - * num.real -> self - * - * Returns self. - */ -static VALUE -numeric_real(VALUE self) -{ - return self; -} - -/* - * call-seq: - * num.imag -> 0 - * num.imaginary -> 0 - * - * Returns zero. - */ -static VALUE -numeric_imag(VALUE self) -{ - return INT2FIX(0); -} - -/* - * call-seq: * num.abs2 -> real * * Returns square of self. @@ -2257,19 +2232,6 @@ numeric_polar(VALUE self) /* * call-seq: - * num.conj -> self - * num.conjugate -> self - * - * Returns self. - */ -static VALUE -numeric_conj(VALUE self) -{ - return self; -} - -/* - * call-seq: * flo.arg -> 0 or float * flo.angle -> 0 or float * flo.phase -> 0 or float @@ -2433,9 +2395,6 @@ Init_Complex(void) rb_define_private_method(CLASS_OF(rb_cComplex), "convert", nucomp_s_convert, -1); - rb_define_method(rb_cNumeric, "real", numeric_real, 0); - rb_define_method(rb_cNumeric, "imaginary", numeric_imag, 0); - rb_define_method(rb_cNumeric, "imag", numeric_imag, 0); rb_define_method(rb_cNumeric, "abs2", numeric_abs2, 0); rb_define_method(rb_cNumeric, "arg", numeric_arg, 0); rb_define_method(rb_cNumeric, "angle", numeric_arg, 0); @@ -2443,8 +2402,6 @@ Init_Complex(void) rb_define_method(rb_cNumeric, "rectangular", numeric_rect, 0); rb_define_method(rb_cNumeric, "rect", numeric_rect, 0); rb_define_method(rb_cNumeric, "polar", numeric_polar, 0); - rb_define_method(rb_cNumeric, "conjugate", numeric_conj, 0); - rb_define_method(rb_cNumeric, "conj", numeric_conj, 0); rb_define_method(rb_cFloat, "arg", float_arg, 0); rb_define_method(rb_cFloat, "angle", float_arg, 0); @@ -6,7 +6,17 @@ class Numeric # Returns +true+ if +num+ is a real number (i.e. not Complex). # def real? - return true end # @@ -19,7 +29,7 @@ class Numeric # 1.integer? #=> true # def integer? - return false end # @@ -29,7 +39,7 @@ class Numeric # Returns +true+ if +num+ is a finite number, otherwise returns +false+. # def finite? - return true end # @@ -40,8 +50,34 @@ class Numeric # finite, <code>-Infinity</code>, or <code>+Infinity</code>. # def infinite? - return nil end end class Integer @@ -146,7 +182,7 @@ class Integer # # Since +int+ is already an Integer, this always returns +true+. def integer? - return true end alias magnitude abs @@ -178,7 +214,7 @@ class Integer # # For example, <code>?a.ord</code> returns 97 both in 1.8 and 1.9. def ord - return self end # @@ -208,7 +244,7 @@ class Integer # # #to_int is an alias for #to_i. def to_i - return self end # call-seq: @@ -216,7 +252,7 @@ class Integer # # Since +int+ is already an Integer, returns +self+. def to_int - return self end # call-seq: @@ -244,6 +280,26 @@ class Integer def ceildiv(other) -div(-other) end end # call-seq: @@ -276,7 +332,7 @@ class Float # Since +float+ is already a Float, returns +self+. # def to_f - return self end # @@ -2061,30 +2061,6 @@ rb_rational_canonicalize(VALUE x) /* * call-seq: - * int.numerator -> self - * - * Returns self. - */ -static VALUE -integer_numerator(VALUE self) -{ - return self; -} - -/* - * call-seq: - * int.denominator -> 1 - * - * Returns 1. - */ -static VALUE -integer_denominator(VALUE self) -{ - return INT2FIX(1); -} - -/* - * call-seq: * flo.numerator -> integer * * Returns the numerator. The result is machine dependent. @@ -2832,9 +2808,6 @@ Init_Rational(void) rb_define_method(rb_cNumeric, "denominator", numeric_denominator, 0); rb_define_method(rb_cNumeric, "quo", rb_numeric_quo, 1); - rb_define_method(rb_cInteger, "numerator", integer_numerator, 0); - rb_define_method(rb_cInteger, "denominator", integer_denominator, 0); - rb_define_method(rb_cFloat, "numerator", rb_float_numerator, 0); rb_define_method(rb_cFloat, "denominator", rb_float_denominator, 0); |