[#9569] Re: [ruby-ext:01030] Re: gnome-ruby package — Hiroshi IGARASHI <igarashi@...>
いがらしです。
5 messages
2000/04/14
[#9581] SIGFPE isn't raised on FreeBSD 4.0 — gotoken@... (GOTO Kentaro)
ごとけんです
18 messages
2000/04/18
[#9582] Re: SIGFPE isn't raised on FreeBSD 4.0
— ARIMA Yasuhiro <fit0298@...>
2000/04/18
有馬です。
[#9583] Re: SIGFPE isn't raised on FreeBSD 4.0
— EGUCHI Osamu <eguchi@...>
2000/04/18
えぐち@エスアンドイー です。
[#9587] Re: SIGFPE isn't raised on FreeBSD 4.0
— nobu.nakada@...
2000/04/18
なかだです。
[#9588] Re: SIGFPE isn't raised on FreeBSD 4.0
— matz@... (Yukihiro Matsumoto)
2000/04/18
まつもと ゆきひろです
[#9589] Re: SIGFPE isn't raised on FreeBSD 4.0
— nobu.nakada@...
2000/04/18
なかだです。
[#9590] Re: SIGFPE isn't raised on FreeBSD 4.0
— matz@... (Yukihiro Matsumoto)
2000/04/18
まつもと ゆきひろです
[#9591] Re: SIGFPE isn't raised on FreeBSD 4.0
— nobu.nakada@...
2000/04/18
なかだです。
[#9592] Re: SIGFPE isn't raised on FreeBSD 4.0
— matz@... (Yukihiro Matsumoto)
2000/04/18
まつもと ゆきひろです
[#9599] module_eval — Tadayoshi Funaba <tadf@...>
ふなばです。
7 messages
2000/04/20
[ruby-dev:9587] Re: SIGFPE isn't raised on FreeBSD 4.0
From:
nobu.nakada@...
Date:
2000-04-18 06:20:42 UTC
List:
ruby-dev #9587
なかだです。
At Tue, 18 Apr 2000 14:10:13 +0900,
EGUCHI Osamu <eguchi@shizuokanet.ne.jp> wrote:
> > #if __FreeBSD_version < 400012
> > # include <floatingpoint.h>
> > #endif
> >
> > #if __FreeBSD_version < 400012
> > /* allow divide by zero -- Inf */
> > fpsetmask(fpgetmask() & ~(FP_X_DZ|FP_X_INV|FP_X_OFL));
> > #endif
> >
> > 上記の数値は fpsetmask 対処のタイミングとしては正確でないと思いますが、
> > これから 4.x 系を使いはじめる方にも、これまで通り 3.x 系を使う方にも
> > 問題ない指定だと考えます。いかがでしょうか?
>
> FreeBSD 以外のプラットホームのために、、
>
> #if defined __FreeBSD_version && __FreeBSD_version < 400012
>
> である必要がありますね。
>
> あと有馬さん自身言及されていますが、 400012 とは
> タイミングがずれるのが難点ですね。
>
> configure で対応すべきでしょうか?
[ruby-list:21974] もこれと関係するとしたら、プラットホーム依存のマク
ロがぞろぞろ並んでしまいそうなので、やっぱ configure じゃないですか。
Linux gcc 2.95.1、Cygwin gcc 2.95.2、VC++ 4.0 ではうまくいったという
かエラーにならないので、div 0 がエラーになる環境でこれでいいものかどう
か分かりませんが。
AC_CACHE_CHECK(whether division by 0 is allowed, rb_cv_div0_allowed,
[AC_TRY_RUN([
double divide(x, y)
double x, y;
{
return x / y;
}
int main()
{
divide(1.0, 0.0);
return 0;
}
],
rb_cv_div0_allowed=yes,
rb_cv_div0_allowed=no,
rb_cv_div0_allowed=yes)])
if test "$rb_cv_div0_allowed" = yes; then
AC_DEFINE(DIV0_ALLOWED)
fi
--- numeric.c Tue Mar 7 23:19:35 2000
+++ numeric.c Tue Apr 18 15:19:32 2000
@@ -14,5 +14,5 @@
#include <math.h>
#include <stdio.h>
-#ifdef __FreeBSD__
+#ifndef DIV0_ALLOWED
#include <floatingpoint.h>
#endif
@@ -1452,5 +1452,5 @@ void
Init_Numeric()
{
-#ifdef __FreeBSD__
+#ifndef DIV0_ALLOWED
/* allow divide by zero -- Inf */
fpsetmask(fpgetmask() & ~(FP_X_DZ|FP_X_INV|FP_X_OFL));
--
そうだ 強気に ちょっと インチキに☆彡
中田 "Bugるくらいがちょうどいいかも;-)" 伸悦