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
|
ast.rb
|
||||||
dir.rb
|
dir.rb
|
||||||
gc.rb
|
gc.rb
|
||||||
integer.rb
|
numeric.rb
|
||||||
io.rb
|
io.rb
|
||||||
kernel.rb
|
kernel.rb
|
||||||
pack.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)/ast.rb \
|
||||||
$(srcdir)/dir.rb \
|
$(srcdir)/dir.rb \
|
||||||
$(srcdir)/gc.rb \
|
$(srcdir)/gc.rb \
|
||||||
$(srcdir)/integer.rb \
|
$(srcdir)/numeric.rb \
|
||||||
$(srcdir)/io.rb \
|
$(srcdir)/io.rb \
|
||||||
$(srcdir)/pack.rb \
|
$(srcdir)/pack.rb \
|
||||||
$(srcdir)/trace_point.rb \
|
$(srcdir)/trace_point.rb \
|
||||||
|
@ -8224,7 +8224,6 @@ miniinit.$(OBJEXT): {$(VPATH)}encoding.h
|
||||||
miniinit.$(OBJEXT): {$(VPATH)}gc.rb
|
miniinit.$(OBJEXT): {$(VPATH)}gc.rb
|
||||||
miniinit.$(OBJEXT): {$(VPATH)}gem_prelude.rb
|
miniinit.$(OBJEXT): {$(VPATH)}gem_prelude.rb
|
||||||
miniinit.$(OBJEXT): {$(VPATH)}id.h
|
miniinit.$(OBJEXT): {$(VPATH)}id.h
|
||||||
miniinit.$(OBJEXT): {$(VPATH)}integer.rb
|
|
||||||
miniinit.$(OBJEXT): {$(VPATH)}intern.h
|
miniinit.$(OBJEXT): {$(VPATH)}intern.h
|
||||||
miniinit.$(OBJEXT): {$(VPATH)}internal.h
|
miniinit.$(OBJEXT): {$(VPATH)}internal.h
|
||||||
miniinit.$(OBJEXT): {$(VPATH)}internal/anyargs.h
|
miniinit.$(OBJEXT): {$(VPATH)}internal/anyargs.h
|
||||||
|
@ -8376,6 +8375,7 @@ miniinit.$(OBJEXT): {$(VPATH)}miniinit.c
|
||||||
miniinit.$(OBJEXT): {$(VPATH)}miniprelude.c
|
miniinit.$(OBJEXT): {$(VPATH)}miniprelude.c
|
||||||
miniinit.$(OBJEXT): {$(VPATH)}missing.h
|
miniinit.$(OBJEXT): {$(VPATH)}missing.h
|
||||||
miniinit.$(OBJEXT): {$(VPATH)}node.h
|
miniinit.$(OBJEXT): {$(VPATH)}node.h
|
||||||
|
miniinit.$(OBJEXT): {$(VPATH)}numeric.rb
|
||||||
miniinit.$(OBJEXT): {$(VPATH)}onigmo.h
|
miniinit.$(OBJEXT): {$(VPATH)}onigmo.h
|
||||||
miniinit.$(OBJEXT): {$(VPATH)}oniguruma.h
|
miniinit.$(OBJEXT): {$(VPATH)}oniguruma.h
|
||||||
miniinit.$(OBJEXT): {$(VPATH)}pack.rb
|
miniinit.$(OBJEXT): {$(VPATH)}pack.rb
|
||||||
|
@ -9062,8 +9062,6 @@ numeric.$(OBJEXT): {$(VPATH)}defines.h
|
||||||
numeric.$(OBJEXT): {$(VPATH)}encoding.h
|
numeric.$(OBJEXT): {$(VPATH)}encoding.h
|
||||||
numeric.$(OBJEXT): {$(VPATH)}id.h
|
numeric.$(OBJEXT): {$(VPATH)}id.h
|
||||||
numeric.$(OBJEXT): {$(VPATH)}id_table.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)}intern.h
|
||||||
numeric.$(OBJEXT): {$(VPATH)}internal.h
|
numeric.$(OBJEXT): {$(VPATH)}internal.h
|
||||||
numeric.$(OBJEXT): {$(VPATH)}internal/anyargs.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)}internal/xmalloc.h
|
||||||
numeric.$(OBJEXT): {$(VPATH)}missing.h
|
numeric.$(OBJEXT): {$(VPATH)}missing.h
|
||||||
numeric.$(OBJEXT): {$(VPATH)}numeric.c
|
numeric.$(OBJEXT): {$(VPATH)}numeric.c
|
||||||
|
numeric.$(OBJEXT): {$(VPATH)}numeric.rb
|
||||||
|
numeric.$(OBJEXT): {$(VPATH)}numeric.rbinc
|
||||||
numeric.$(OBJEXT): {$(VPATH)}onigmo.h
|
numeric.$(OBJEXT): {$(VPATH)}onigmo.h
|
||||||
numeric.$(OBJEXT): {$(VPATH)}oniguruma.h
|
numeric.$(OBJEXT): {$(VPATH)}oniguruma.h
|
||||||
numeric.$(OBJEXT): {$(VPATH)}ruby_assert.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)
|
#define BUILTIN(n) CALL(builtin_##n)
|
||||||
BUILTIN(gc);
|
BUILTIN(gc);
|
||||||
BUILTIN(ractor);
|
BUILTIN(ractor);
|
||||||
BUILTIN(integer);
|
BUILTIN(numeric);
|
||||||
BUILTIN(io);
|
BUILTIN(io);
|
||||||
BUILTIN(dir);
|
BUILTIN(dir);
|
||||||
BUILTIN(ast);
|
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);
|
return rb_assoc_new(rb_Float(y), x);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* call-seq:
|
|
||||||
* -float -> float
|
|
||||||
*
|
|
||||||
* Returns +float+, negated.
|
|
||||||
*/
|
|
||||||
|
|
||||||
VALUE
|
VALUE
|
||||||
rb_float_uminus(VALUE flt)
|
rb_float_uminus(VALUE flt)
|
||||||
{
|
{
|
||||||
|
@ -1701,33 +1694,6 @@ rb_float_eql(VALUE x, VALUE y)
|
||||||
|
|
||||||
#define flo_eql rb_float_eql
|
#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
|
VALUE
|
||||||
rb_float_abs(VALUE flt)
|
rb_float_abs(VALUE flt)
|
||||||
{
|
{
|
||||||
|
@ -1735,19 +1701,6 @@ rb_float_abs(VALUE flt)
|
||||||
return DBL2NUM(val);
|
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:
|
* call-seq:
|
||||||
* float.nan? -> true or false
|
* 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_method(rb_cFloat, "to_s", flo_to_s, 0);
|
||||||
rb_define_alias(rb_cFloat, "inspect", "to_s");
|
rb_define_alias(rb_cFloat, "inspect", "to_s");
|
||||||
rb_define_method(rb_cFloat, "coerce", flo_coerce, 1);
|
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_plus, 1);
|
||||||
rb_define_method(rb_cFloat, "-", rb_float_minus, 1);
|
rb_define_method(rb_cFloat, "-", rb_float_minus, 1);
|
||||||
rb_define_method(rb_cFloat, "*", rb_float_mul, 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, "<=", flo_le, 1);
|
||||||
rb_define_method(rb_cFloat, "eql?", flo_eql, 1);
|
rb_define_method(rb_cFloat, "eql?", flo_eql, 1);
|
||||||
rb_define_method(rb_cFloat, "hash", flo_hash, 0);
|
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_i", flo_to_i, 0);
|
||||||
rb_define_method(rb_cFloat, "to_int", 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);
|
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)'
|
Primitive.cexpr! 'rb_int_zero_p(self)'
|
||||||
end
|
end
|
||||||
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