From: Shigeo Kobayashi Date: 2000-01-26T18:51:37+09:00 Subject: [ruby-dev:9025] % 小林です。 [ruby-math:00111] に動作報告をしたのですが 検討する以前に、 numeric.c の flo_modulo() の明らかなバグ(fix_modulo()との比較で)だと 思いますので報告します。 ご検討お願い致します。 (patch でなくてすみません)。 static VALUE flo_modulo(x, y, modulo) VALUE x, y; int modulo; { double value, result; switch (TYPE(y)) { case T_FIXNUM: value = (double)FIX2LONG(y); break; case T_BIGNUM: value = rb_big2dbl(y); break; case T_FLOAT: value = RFLOAT(y)->value; break; default: return rb_num_coerce_bin(x, y); } #ifdef HAVE_FMOD result = fmod(RFLOAT(x)->value, value); #else { double value1 = RFLOAT(x)->value; double value2; modf(value1/value, &value2); result = value1 - value2 * value; } #endif if (modulo && result != 0.0 && (value*RFLOAT(x)->value)<0.0) { /* This line changed by S.K */ result += value; } return rb_float_new(result); } 小林 茂雄 E-Mail: shigeo@tinyforest.gr.jp Home Page: http://www.tinyforest.gr.jp