diff options
author | tadf <tadf@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-07-03 10:50:17 +0000 |
---|---|---|
committer | tadf <tadf@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-07-03 10:50:17 +0000 |
commit | b61ab11f4942c3fcf0458cf60f8a1064baf3a94c (patch) | |
tree | d9edab75ef7b49441c09b489a21096f6e5051677 /complex.c | |
parent | 61203382872a9f6dd9b2589c88e8d571856332dd (diff) | |
download | ruby-b61ab11f4942c3fcf0458cf60f8a1064baf3a94c.tar.gz |
* complex.c: undef-ed shome methods. [ruby-core:24110]
* complex.c (Numeric#arg): NaN for NaN. [ruby-core:24116]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23946 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'complex.c')
-rw-r--r-- | complex.c | 29 |
1 files changed, 26 insertions, 3 deletions
@@ -1690,9 +1690,9 @@ numeric_abs2(VALUE self) /* * call-seq: - * num.arg -> float - * num.angle -> float - * num.phase -> float + * num.arg -> 0 or float + * num.angle -> 0 or float + * num.phase -> 0 or float * * Returns 0 if the value is positive, pi otherwise. */ @@ -1742,6 +1742,22 @@ numeric_conj(VALUE self) } /* + * call-seq: + * flo.arg -> 0 or float + * flo.angle -> 0 or float + * flo.phase -> 0 or float + * + * Returns 0 if the value is positive, pi otherwise. + */ +static VALUE +float_arg(VALUE self) +{ + if (isnan(RFLOAT_VALUE(self))) + return self; + return rb_call_super(0, 0); +} + +/* * A complex number can be represented as a paired real number with * imaginary unit; a+bi. Where a is real part, b is imaginary part * and i is imaginary unit. Real a equals complex a+0i @@ -1824,16 +1840,19 @@ Init_Complex(void) rb_define_global_function("Complex", nucomp_f_complex, -1); + rb_undef_method(rb_cComplex, "%"); rb_undef_method(rb_cComplex, "<"); rb_undef_method(rb_cComplex, "<="); rb_undef_method(rb_cComplex, "<=>"); rb_undef_method(rb_cComplex, ">"); rb_undef_method(rb_cComplex, ">="); rb_undef_method(rb_cComplex, "between?"); + rb_undef_method(rb_cComplex, "div"); rb_undef_method(rb_cComplex, "divmod"); rb_undef_method(rb_cComplex, "floor"); rb_undef_method(rb_cComplex, "ceil"); rb_undef_method(rb_cComplex, "modulo"); + rb_undef_method(rb_cComplex, "remainder"); rb_undef_method(rb_cComplex, "round"); rb_undef_method(rb_cComplex, "step"); rb_undef_method(rb_cComplex, "truncate"); @@ -1921,6 +1940,10 @@ Init_Complex(void) 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); + rb_define_method(rb_cFloat, "phase", float_arg, 0); + rb_define_const(rb_cComplex, "I", f_complex_new_bang2(rb_cComplex, ZERO, ONE)); } |