えぐち@エスアンドイー です。

>>> In message [ruby-dev:6302] Re: Precision in Mathematica (Re: Bigfloat) 
    On Fri, 12 Mar 1999 20:44:03 +0900, keiju / rational.com (石塚圭樹 ) said:

keiju> けいじゅ@日本ラショナルソフトウェアです.
keiju> 
keiju> In [ruby-dev :6238 ] the message: "[ruby-dev:6238] Re: Precision in
keiju> Mathematica (Re: Bigfloat) ", on Mar/12 01:35(JST) EGUCHI Osamu
keiju> writes:
keiju> 
keiju> >えぐち@エスアンドイー です。
...
keiju> >『1.0/0.0 => NaN ではないのか?!』と言う議論が
keiju> >始まると、内心勝ち目がない様な気がしてました ^^;;;;;;
keiju> 
keiju> 気分的にはそうですが, 原さんともうその話しはしないと誓ったので(^^;;;
keiju> 
keiju> # 誰も誓ってないって? 

了解。

keiju> >IEEE754 ですね、結局これと異なる解釈をする事は可能ですが、
keiju> >H/W の FPU やライブラリの支援が得られなくなる、のが難点ですね。
keiju> 
keiju> 確かにそういう話しもありますね.

効率貧乏症なので、すぐこういう発想をしてしまいます ^^;;

keiju> >keiju> >それにしても、 1.0%0.0 => 1.0 は思い当たるものがないです。
keiju> >keiju> >ところでOSは何を御使用でしょうか?
keiju> >keiju> dim% uname -a
keiju> >keiju> Linux dim 2.0.30 #1 Mon Nov 10 14:08:33 JST 1997 i586 unknown
keiju> >keiju> >ruby -v の結果を教えて下さい。
keiju> >keiju> dim% ruby -v
keiju> >keiju> ruby 1.3.1(99/02/25) [i586-linux]
keiju> >keiju> 
keiju> >keiju> です.
keiju> >
keiju> >OS 自体は再現環境がありませんが、 pentium の様ですし、
keiju> >多分 gcc でしょうから、思い当たるものがありません。 @_@
keiju> 
keiju> そうそうです.
keiju> 
keiju> >keiju> デバッガで見てみたところ. 
keiju> 
keiju> >keiju> って感じです. value, resultは以下の行です. 
keiju> >keiju> 
keiju> >keiju>     result = fmod(RFLOAT(x)->value, value);
keiju> >
keiju> >IEEE754 は、この場合 remainder() を使う事を指定しています。
keiju> >このことが関連しているのでしょうか?
keiju> >
keiju> >それにしても、 1.0%0.0 => 1.0 は、どう解釈してもおかしい ???
keiju> 
keiju> なにをしたら原因が分かりますでしょうか?

#include <math.h>
main()
{
  printf("|%f|\n", fmod(1.0,0.0));
}

はいくつですか?
|1.0|
ですか?

fmod() は sunos には libc に、
freebsd では libm にありました。
どこにありますか?

linux って glibc なんですよね、、
バージョンはいくつですか?
glibc-2.1 は egcs でないと、うまくコンパイルできない様です。
これで現在 prep から消えています。

keiju> >keiju> # 0.0って9.1245819032751532e-313なんですね.... 
keiju> >keiju> # floatに対する信頼性がさらになくなるなあ...
keiju> >
keiju> >実際は、この値に相当するビットパターンをライブラリ等は
keiju> >特別扱いしてるわけですが、デバガで見えてしまうと、
keiju> >なにか恥ずかしいですね ^^;;;;
keiju> 
keiju> すると, 0.0は実際に9.1245819032751532e-313なんですか... そうか... 仮数
keiju> 部0にしていても, 省略された再上位の1があるから完全に0はないんですね...

指数はゲタ履き表現で、0.0 の指数のビットパターンの0で、
仮数も0かつ符合ビットも0なら 0.0 、符合ビットが 1 ならば、-0.0 です。

IEEE754 では 0.0 も -0.0 も独立のクラス(754用語の)なので、
値であるとともに、特異な状態でもある様です。

  0.0 == -0.0  ==> true

とか、、なにか「光は粒子であり波動である」みたいですね ^^);;;

	えぐち