mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
parent
ef6ab776d5
commit
daec5f9edc
Notes:
git
2021-01-02 11:39:33 +09:00
Merged-By: k0kubun <takashikkbn@gmail.com>
6 changed files with 78 additions and 59 deletions
|
@ -14,7 +14,7 @@ array.rb
|
|||
ast.rb
|
||||
dir.rb
|
||||
gc.rb
|
||||
integer.rb
|
||||
numeric.rb
|
||||
io.rb
|
||||
kernel.rb
|
||||
pack.rb
|
||||
|
|
14
benchmark/float_methods.yml
Normal file
14
benchmark/float_methods.yml
Normal file
|
@ -0,0 +1,14 @@
|
|||
prelude: |
|
||||
flo = 4.2
|
||||
benchmark:
|
||||
to_f: |
|
||||
flo.to_f
|
||||
abs: |
|
||||
flo.abs
|
||||
magnitude: |
|
||||
flo.magnitude
|
||||
-@: |
|
||||
-flo
|
||||
zero?: |
|
||||
flo.zero?
|
||||
loop_count: 20000000
|
|
@ -1020,7 +1020,7 @@ BUILTIN_RB_SRCS = \
|
|||
$(srcdir)/ast.rb \
|
||||
$(srcdir)/dir.rb \
|
||||
$(srcdir)/gc.rb \
|
||||
$(srcdir)/integer.rb \
|
||||
$(srcdir)/numeric.rb \
|
||||
$(srcdir)/io.rb \
|
||||
$(srcdir)/pack.rb \
|
||||
$(srcdir)/trace_point.rb \
|
||||
|
@ -8224,7 +8224,6 @@ miniinit.$(OBJEXT): {$(VPATH)}encoding.h
|
|||
miniinit.$(OBJEXT): {$(VPATH)}gc.rb
|
||||
miniinit.$(OBJEXT): {$(VPATH)}gem_prelude.rb
|
||||
miniinit.$(OBJEXT): {$(VPATH)}id.h
|
||||
miniinit.$(OBJEXT): {$(VPATH)}integer.rb
|
||||
miniinit.$(OBJEXT): {$(VPATH)}intern.h
|
||||
miniinit.$(OBJEXT): {$(VPATH)}internal.h
|
||||
miniinit.$(OBJEXT): {$(VPATH)}internal/anyargs.h
|
||||
|
@ -8376,6 +8375,7 @@ miniinit.$(OBJEXT): {$(VPATH)}miniinit.c
|
|||
miniinit.$(OBJEXT): {$(VPATH)}miniprelude.c
|
||||
miniinit.$(OBJEXT): {$(VPATH)}missing.h
|
||||
miniinit.$(OBJEXT): {$(VPATH)}node.h
|
||||
miniinit.$(OBJEXT): {$(VPATH)}numeric.rb
|
||||
miniinit.$(OBJEXT): {$(VPATH)}onigmo.h
|
||||
miniinit.$(OBJEXT): {$(VPATH)}oniguruma.h
|
||||
miniinit.$(OBJEXT): {$(VPATH)}pack.rb
|
||||
|
@ -9062,8 +9062,6 @@ numeric.$(OBJEXT): {$(VPATH)}defines.h
|
|||
numeric.$(OBJEXT): {$(VPATH)}encoding.h
|
||||
numeric.$(OBJEXT): {$(VPATH)}id.h
|
||||
numeric.$(OBJEXT): {$(VPATH)}id_table.h
|
||||
numeric.$(OBJEXT): {$(VPATH)}integer.rb
|
||||
numeric.$(OBJEXT): {$(VPATH)}integer.rbinc
|
||||
numeric.$(OBJEXT): {$(VPATH)}intern.h
|
||||
numeric.$(OBJEXT): {$(VPATH)}internal.h
|
||||
numeric.$(OBJEXT): {$(VPATH)}internal/anyargs.h
|
||||
|
@ -9208,6 +9206,8 @@ numeric.$(OBJEXT): {$(VPATH)}internal/warning_push.h
|
|||
numeric.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
|
||||
numeric.$(OBJEXT): {$(VPATH)}missing.h
|
||||
numeric.$(OBJEXT): {$(VPATH)}numeric.c
|
||||
numeric.$(OBJEXT): {$(VPATH)}numeric.rb
|
||||
numeric.$(OBJEXT): {$(VPATH)}numeric.rbinc
|
||||
numeric.$(OBJEXT): {$(VPATH)}onigmo.h
|
||||
numeric.$(OBJEXT): {$(VPATH)}oniguruma.h
|
||||
numeric.$(OBJEXT): {$(VPATH)}ruby_assert.h
|
||||
|
|
2
inits.c
2
inits.c
|
@ -87,7 +87,7 @@ rb_call_builtin_inits(void)
|
|||
#define BUILTIN(n) CALL(builtin_##n)
|
||||
BUILTIN(gc);
|
||||
BUILTIN(ractor);
|
||||
BUILTIN(integer);
|
||||
BUILTIN(numeric);
|
||||
BUILTIN(io);
|
||||
BUILTIN(dir);
|
||||
BUILTIN(ast);
|
||||
|
|
54
numeric.c
54
numeric.c
|
@ -1030,13 +1030,6 @@ flo_coerce(VALUE x, VALUE y)
|
|||
return rb_assoc_new(rb_Float(y), x);
|
||||
}
|
||||
|
||||
/*
|
||||
* call-seq:
|
||||
* -float -> float
|
||||
*
|
||||
* Returns +float+, negated.
|
||||
*/
|
||||
|
||||
VALUE
|
||||
rb_float_uminus(VALUE flt)
|
||||
{
|
||||
|
@ -1701,33 +1694,6 @@ rb_float_eql(VALUE x, VALUE y)
|
|||
|
||||
#define flo_eql rb_float_eql
|
||||
|
||||
/*
|
||||
* call-seq:
|
||||
* float.to_f -> self
|
||||
*
|
||||
* Since +float+ is already a Float, returns +self+.
|
||||
*/
|
||||
|
||||
static VALUE
|
||||
flo_to_f(VALUE num)
|
||||
{
|
||||
return num;
|
||||
}
|
||||
|
||||
/*
|
||||
* call-seq:
|
||||
* float.abs -> float
|
||||
* float.magnitude -> float
|
||||
*
|
||||
* Returns the absolute value of +float+.
|
||||
*
|
||||
* (-34.56).abs #=> 34.56
|
||||
* -34.56.abs #=> 34.56
|
||||
* 34.56.abs #=> 34.56
|
||||
*
|
||||
* Float#magnitude is an alias for Float#abs.
|
||||
*/
|
||||
|
||||
VALUE
|
||||
rb_float_abs(VALUE flt)
|
||||
{
|
||||
|
@ -1735,19 +1701,6 @@ rb_float_abs(VALUE flt)
|
|||
return DBL2NUM(val);
|
||||
}
|
||||
|
||||
/*
|
||||
* call-seq:
|
||||
* float.zero? -> true or false
|
||||
*
|
||||
* Returns +true+ if +float+ is 0.0.
|
||||
*/
|
||||
|
||||
static VALUE
|
||||
flo_zero_p(VALUE num)
|
||||
{
|
||||
return flo_iszero(num) ? Qtrue : Qfalse;
|
||||
}
|
||||
|
||||
/*
|
||||
* call-seq:
|
||||
* float.nan? -> true or false
|
||||
|
@ -5677,7 +5630,6 @@ Init_Numeric(void)
|
|||
rb_define_method(rb_cFloat, "to_s", flo_to_s, 0);
|
||||
rb_define_alias(rb_cFloat, "inspect", "to_s");
|
||||
rb_define_method(rb_cFloat, "coerce", flo_coerce, 1);
|
||||
rb_define_method(rb_cFloat, "-@", rb_float_uminus, 0);
|
||||
rb_define_method(rb_cFloat, "+", rb_float_plus, 1);
|
||||
rb_define_method(rb_cFloat, "-", rb_float_minus, 1);
|
||||
rb_define_method(rb_cFloat, "*", rb_float_mul, 1);
|
||||
|
@ -5697,10 +5649,6 @@ Init_Numeric(void)
|
|||
rb_define_method(rb_cFloat, "<=", flo_le, 1);
|
||||
rb_define_method(rb_cFloat, "eql?", flo_eql, 1);
|
||||
rb_define_method(rb_cFloat, "hash", flo_hash, 0);
|
||||
rb_define_method(rb_cFloat, "to_f", flo_to_f, 0);
|
||||
rb_define_method(rb_cFloat, "abs", rb_float_abs, 0);
|
||||
rb_define_method(rb_cFloat, "magnitude", rb_float_abs, 0);
|
||||
rb_define_method(rb_cFloat, "zero?", flo_zero_p, 0);
|
||||
|
||||
rb_define_method(rb_cFloat, "to_i", flo_to_i, 0);
|
||||
rb_define_method(rb_cFloat, "to_int", flo_to_i, 0);
|
||||
|
@ -5732,4 +5680,4 @@ rb_float_new(double d)
|
|||
return rb_float_new_inline(d);
|
||||
}
|
||||
|
||||
#include "integer.rbinc"
|
||||
#include "numeric.rbinc"
|
||||
|
|
|
@ -148,3 +148,60 @@ class Integer
|
|||
Primitive.cexpr! 'rb_int_zero_p(self)'
|
||||
end
|
||||
end
|
||||
|
||||
class Float
|
||||
#
|
||||
# call-seq:
|
||||
# float.to_f -> self
|
||||
#
|
||||
# Since +float+ is already a Float, returns +self+.
|
||||
#
|
||||
def to_f
|
||||
return self
|
||||
end
|
||||
|
||||
#
|
||||
# call-seq:
|
||||
# float.abs -> float
|
||||
# float.magnitude -> float
|
||||
#
|
||||
# Returns the absolute value of +float+.
|
||||
#
|
||||
# (-34.56).abs #=> 34.56
|
||||
# -34.56.abs #=> 34.56
|
||||
# 34.56.abs #=> 34.56
|
||||
#
|
||||
# Float#magnitude is an alias for Float#abs.
|
||||
#
|
||||
def abs
|
||||
Primitive.attr! 'inline'
|
||||
Primitive.cexpr! 'rb_float_abs(self)'
|
||||
end
|
||||
|
||||
def magnitude
|
||||
Primitive.attr! 'inline'
|
||||
Primitive.cexpr! 'rb_float_abs(self)'
|
||||
end
|
||||
|
||||
#
|
||||
# call-seq:
|
||||
# -float -> float
|
||||
#
|
||||
# Returns +float+, negated.
|
||||
#
|
||||
def -@
|
||||
Primitive.attr! 'inline'
|
||||
Primitive.cexpr! 'rb_float_uminus(self)'
|
||||
end
|
||||
|
||||
#
|
||||
# call-seq:
|
||||
# float.zero? -> true or false
|
||||
#
|
||||
# Returns +true+ if +float+ is 0.0.
|
||||
#
|
||||
def zero?
|
||||
Primitive.attr! 'inline'
|
||||
Primitive.cexpr! 'flo_iszero(self) ? Qtrue : Qfalse'
|
||||
end
|
||||
end
|
Loading…
Reference in a new issue