summaryrefslogtreecommitdiff
path: root/complex.c
diff options
context:
space:
mode:
authortadf <tadf@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-08-16 23:17:14 +0000
committertadf <tadf@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-08-16 23:17:14 +0000
commitdf21038777f9b8339429f4427bf6d25f690b7eb5 (patch)
tree398f33c502add3a33d4b93645c0a90f6a13a03e7 /complex.c
parent01971cad759a43c0d4358f2fb28c7d2811673de4 (diff)
* complex.c (nucomp_rationalize) added. [experimental]
* rational.c ({nurat,nilclass,integer,float}_rationalize) ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24565 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'complex.c')
-rw-r--r--complex.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/complex.c b/complex.c
index d32ecfd3ca..19d0c3c183 100644
--- a/complex.c
+++ b/complex.c
@@ -1379,6 +1379,20 @@ nucomp_to_r(VALUE self)
/*
* call-seq:
+ * cmp.rationalize([eps]) -> rational
+ *
+ * Returns the value as a rational if possible. An optional argument
+ * eps is always ignored.
+ */
+static VALUE
+nucomp_rationalize(int argc, VALUE *argv, VALUE self)
+{
+ rb_scan_args(argc, argv, "01", NULL);
+ return nucomp_to_r(self);
+}
+
+/*
+ * call-seq:
* nil.to_c -> (0+0i)
*
* Returns zero as a complex.
@@ -1967,6 +1981,7 @@ Init_Complex(void)
rb_define_method(rb_cComplex, "to_i", nucomp_to_i, 0);
rb_define_method(rb_cComplex, "to_f", nucomp_to_f, 0);
rb_define_method(rb_cComplex, "to_r", nucomp_to_r, 0);
+ rb_define_method(rb_cComplex, "rationalize", nucomp_rationalize, -1);
rb_define_method(rb_cNilClass, "to_c", nilclass_to_c, 0);
rb_define_method(rb_cNumeric, "to_c", numeric_to_c, 0);