From: WATANABE Hirofumi Date: 2003-03-28T12:53:19+09:00 Subject: [ruby-dev:19926] Exceptions in Math わたなべです。 Akio Takenaka writes: > 具体的には、 > $ruby -e 'p Math.sqrt(-1)' > -e:1:in `sqrt': square root for negative number (ArgumentError) > from -e:1 > > に対し > $ruby -e 'p Math.log(-1)' > NaN > > $ruby -e 'p Math.log(0)' > -Infinity > > となるのですが……。 > 初心者として、あまり哲学的なことを言える立場ではないと思いますが、 > 定義域を外れた引数は、やはりArgumentErrorを出す方が自然かと思います。 1.8では例外になります。 % ruby -ve 'p Math.sqrt(-1)' ruby 1.8.0 (2003-03-27) [i386-linux] -e:1:in `sqrt': Numerical argument out of domain - "sqrt" (Errno::EDOM) from -e:1 % ruby -ve 'p Math.log(-1)' ruby 1.8.0 (2003-03-27) [i386-linux] -e:1:in `log': Numerical argument out of domain - "log" (Errno::EDOM) from -e:1 % ruby -ve 'p Math.log(0)' ruby 1.8.0 (2003-03-27) [i386-linux] -e:1:in `log': Numerical result out of range - "log" (Errno::ERANGE) from -e:1 -- わたなべひろふみ