summaryrefslogtreecommitdiffstats
path: root/complex.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-03-19 05:53:11 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-03-19 05:53:11 +0000
commite54769998b707f6173e0338c819e4ea40698b405 (patch)
treefb03b6384660380e52497ba9d4d4fca2b3712f48 /complex.c
parentde8009a9d1ca5c1bee9af8f4a904c75b32049bb9 (diff)
downloadruby-e54769998b707f6173e0338c819e4ea40698b405.tar.gz
ruby-e54769998b707f6173e0338c819e4ea40698b405.tar.xz
ruby-e54769998b707f6173e0338c819e4ea40698b405.zip
* complex.c (nucomp_to_s, nucomp_inspect): get rid of making
unnecessary intermediate objects. * complex.c (make_patterns, string_to_c): do not treat successive underscores as a part of numeric like as literals. [ruby-dev:34085] * rational.c (make_patterns, string_to_r): ditto. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@15800 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'complex.c')
-rw-r--r--complex.c47
1 files changed, 24 insertions, 23 deletions
diff --git a/complex.c b/complex.c
index e69cf29cc..6365b9072 100644
--- a/complex.c
+++ b/complex.c
@@ -202,6 +202,7 @@ nucomp_s_canonicalize_internal(VALUE klass, VALUE real, VALUE image)
}
}
+#if 0
static VALUE
nucomp_s_canonicalize(int argc, VALUE *argv, VALUE klass)
{
@@ -235,6 +236,7 @@ nucomp_s_canonicalize(int argc, VALUE *argv, VALUE klass)
return nucomp_s_canonicalize_internal(klass, real, image);
}
+#endif
static VALUE
nucomp_s_new(int argc, VALUE *argv, VALUE klass)
@@ -459,6 +461,7 @@ m_atan2_bang(VALUE y, VALUE x)
return DOUBLE2NUM(atan2(RFLOAT_VALUE(y), RFLOAT_VALUE(x)));
}
+#if 0
static VALUE
m_hypot(VALUE x, VALUE y)
{
@@ -466,6 +469,7 @@ m_hypot(VALUE x, VALUE y)
return DOUBLE2NUM(hypot(RFLOAT_VALUE(x), RFLOAT_VALUE(y)));
}
#endif
+#endif
static VALUE
nucomp_s_polar(VALUE klass, VALUE abs, VALUE arg)
@@ -626,6 +630,7 @@ nucomp_rdiv(VALUE self, VALUE other)
f_to_r(dat->image)), other);
}
+#if 0
static VALUE
nucomp_fdiv(VALUE self, VALUE other)
{
@@ -635,6 +640,7 @@ nucomp_fdiv(VALUE self, VALUE other)
f_to_f(dat->real),
f_to_f(dat->image)), other);
}
+#endif
static VALUE
nucomp_expt(VALUE self, VALUE other)
@@ -788,6 +794,7 @@ nucomp_conjugate(VALUE self)
return f_complex_new2(CLASS_OF(self), dat->real, f_negate(dat->image));
}
+#if 0
static VALUE
nucomp_real_p(VALUE self)
{
@@ -812,6 +819,7 @@ nucomp_inexact_p(VALUE self)
{
return f_boolcast(!nucomp_exact_p(self));
}
+#endif
inline static long
i_gcd(long x, long y)
@@ -978,17 +986,17 @@ nucomp_to_s(VALUE self)
s = rb_str_new2("");
else {
s = f_to_s(dat->real);
- rb_str_concat(s, rb_str_new2(!impos ? "-" : "+"));
+ rb_str_cat2(s, (!impos ? "-" : "+"));
}
if (k_rational_p(dat->image) &&
!f_one_p(f_denominator(dat->image))) {
- rb_str_concat(s, rb_str_new2("("));
+ rb_str_cat2(s, "(");
rb_str_concat(s, f_to_s(rezero ? dat->image : f_abs(dat->image)));
- rb_str_concat(s, rb_str_new2(")i"));
+ rb_str_cat2(s, ")i");
} else {
rb_str_concat(s, f_to_s(rezero ? dat->image : f_abs(dat->image)));
- rb_str_concat(s, rb_str_new2("i"));
+ rb_str_cat2(s, "i");
}
return s;
@@ -1003,9 +1011,9 @@ nucomp_inspect(VALUE self)
s = rb_str_new2("Complex(");
rb_str_concat(s, f_inspect(dat->real));
- rb_str_concat(s, rb_str_new2(", "));
+ rb_str_cat2(s, ", ");
rb_str_concat(s, f_inspect(dat->image));
- rb_str_concat(s, rb_str_new2(")"));
+ rb_str_cat2(s, ")");
return s;
}
@@ -1109,7 +1117,7 @@ numeric_to_c(VALUE self)
}
static VALUE comp_pat1, comp_pat2, a_slash, a_dot_and_an_e,
- image_garbages_pat, null_string, underscores_pat, an_underscore;
+ image_garbages_pat, null_string;
#define DIGITS "(?:\\d(?:_\\d|\\d)*)"
#define NUMERATOR "(?:" DIGITS "?\\.)?" DIGITS "(?:[eE][-+]?" DIGITS ")?"
@@ -1122,15 +1130,15 @@ static VALUE comp_pat1, comp_pat2, a_slash, a_dot_and_an_e,
static void
make_patterns(void)
{
- static char *comp_pat1_source = PATTERN1;
- static char *comp_pat2_source = PATTERN2;
- static char *image_garbages_pat_source = "[+\\(\\)iIjJ]";
- static char *underscores_pat_source = "_+";
+ static const char comp_pat1_source[] = PATTERN1;
+ static const char comp_pat2_source[] = PATTERN2;
+ static const char image_garbages_pat_source[] = "[+\\(\\)iIjJ]";
+#define REG_NEW(s) rb_reg_new(s, sizeof(s) - 1, 0)
- comp_pat1 = rb_reg_new(comp_pat1_source, strlen(comp_pat1_source), 0);
+ comp_pat1 = REG_NEW(comp_pat1_source);
rb_global_variable(&comp_pat1);
- comp_pat2 = rb_reg_new(comp_pat2_source, strlen(comp_pat2_source), 0);
+ comp_pat2 = REG_NEW(comp_pat2_source);
rb_global_variable(&comp_pat2);
a_slash = rb_str_new2("/");
@@ -1139,19 +1147,13 @@ make_patterns(void)
a_dot_and_an_e = rb_str_new2(".eE");
rb_global_variable(&a_dot_and_an_e);
- image_garbages_pat = rb_reg_new(image_garbages_pat_source,
- strlen(image_garbages_pat_source), 0);
+ image_garbages_pat = REG_NEW(image_garbages_pat_source);
rb_global_variable(&image_garbages_pat);
null_string = rb_str_new2("");
rb_global_variable(&null_string);
- underscores_pat = rb_reg_new(underscores_pat_source,
- strlen(underscores_pat_source), 0);
- rb_global_variable(&underscores_pat);
-
- an_underscore = rb_str_new2("_");
- rb_global_variable(&an_underscore);
+#undef REG_NEW
}
#define id_strip rb_intern("strip")
@@ -1246,8 +1248,7 @@ string_to_c_strict(VALUE self)
static VALUE
string_to_c(VALUE self)
{
- VALUE s = f_gsub(self, underscores_pat, an_underscore);
- VALUE a = string_to_c_internal(s);
+ VALUE a = string_to_c_internal(self);
if (!NIL_P(RARRAY_PTR(a)[0]))
return RARRAY_PTR(a)[0];
return rb_complex_new1(INT2FIX(0));