小林です。

----- Original Message -----
送信者 : Masahiro TANAKA <masa / koala.astro.isas.ac.jp>
件名 : [ruby-math:00132] Re: % & divmod() & remainder()


> Cの fmod と remainder とは違うんですね、しくしく。
ええっ!!
でも、numeric.c の flo_remainder(x, y) は基本的に fmod(x,y)
なのですが?

因みに fmod() をヘルプから抜粋すると

 double fmod( double x, double y );
  戻り値
   fmod は浮動小数点数の剰余 (x / y) を返します。
   y が 0.0 の場合はクワイエット型非数 (quiet NaN) を返します。
  解説
   fmod 関数は x = i * y + f となる x / y の浮動小数点型の剰余
    f を計算します。ここで i は整数です。f は x と同じ符号であり、
   その絶対値は y の絶対値より小さい値です。

で、remainder はどんな動作をするのでしょう?
# ますます混乱してきた....

> 私のように Scheme を知らない人には自明ではないので、
>
>   a%b ≡ a - (a.to_f/b).floor * b
>
> のように挙動の定義があるとありがたいです。
>
ああっ、なるほど、式で表すとこうなりますね!!
# でもイマだに意味が....

> > で、最後に divmod ですが、以下のいずれが良いと思いますか。
>
> modは a%b、divは (a-a%b)/b というのが
> わかりやすいと思います。
>
これなら、div*b+mod=a が成立しますね。 (^^)
ただ、ここで % を使うのが一般的なことなのでしょうか?
(違和感を持つのは数学に疎い私だけ??)

小林 茂雄
E-Mail: shigeo / tinyforest.gr.jp
WWW: http://www.tinyforest.gr.jp