[#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

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

[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るくらいがちょうどいいかも;-)" 伸悦

In This Thread