From owner-FreeBSD-users-jp@jp.freebsd.org  Sat Jun  8 14:51:11 1996
Received: by mail.jp.freebsd.org (8.7.3+2.6Wbeta5/8.7.3) id XAA17011
	Fri, 7 Jun 1996 23:07:34 +0900 (JST)
Received: by mail.jp.freebsd.org (8.7.3+2.6Wbeta5/8.7.3) with SMTP id XAA16991
	for <FreeBSD-users-jp@jp.freebsd.org>; Fri, 7 Jun 1996 23:02:44 +0900 (JST)
Received: from sranhc.sra.co.jp by sraigw.sra.co.jp (8.6.13/3.4W-sraigw)
	id XAA14463; Fri, 7 Jun 1996 23:01:33 +0900
Received: from sran230.sra.co.jp (soda@sran230 [133.137.20.19]) by sranhc.sra.co.jp (8.6.13/3.4W-srambox) with ESMTP id XAA22747 for <FreeBSD-users-jp@jp.freebsd.org>; Fri, 7 Jun 1996 23:00:44 +0900
Received: (from soda@localhost) by sran230.sra.co.jp (8.6.12+2.4W3/3.4W-SRA-ch) id XAA12234 for FreeBSD-users-jp@jp.freebsd.org; Fri, 7 Jun 1996 23:00:57 +0900
Date: Fri, 7 Jun 1996 23:00:57 +0900
From: Noriyuki Soda <soda@sra.co.jp>
Message-Id: <199606071400.XAA12234@sran230.sra.co.jp>
To: FreeBSD-users-jp@jp.freebsd.org
Reply-To: FreeBSD-users-jp@jp.freebsd.org
X-Distribute: distribute [version 2.1 (Alpha) patchlevel=19]
X-Sequence: FreeBSD-users-jp 2150
Subject: [FreeBSD-users-jp 2150] Re: divide 0
Errors-To: owner-FreeBSD-users-jp@jp.freebsd.org
Sender: owner-FreeBSD-users-jp@jp.freebsd.org

>   libc $B$N(B signal $B=hM}$K(B Inf $B$N=hM}$r$A$c$s$HDI2C$9$k$N$,$^$C$H$&(B
> $B$JJ}K!$J$N$G$9$,!"$3$NJU$N<BAu$K$D$$$F$ON.@P$KCN<1$,$J$$$N$G$9$,!"(B
> $B$I$3$+$G$d$C$F$k$R$H$,$$$J$$$N$+$J!#CN$C$F$k?M$$$k!)(B

$B0J2<$N$h$&$K$9$l$P!"(BFreeBSD $B$G$b(B Sun $B$HF1$8$/(B "Inf" $B$H$$$&I=<($K$J$j$^$9!#(B

------------------------------------------------------------------------
#include <stdio.h>
#include <machine/ieeefp.h>

#define	fnstcw(addr)		__asm("fnstcw %0" : "=m" (*addr))
#define	fldcw(addr)		__asm("fldcw %0" : : "m" (*addr))

main()
{
	float f, xincr=0.0;
#ifndef DIV_ZERO_COREDUMP
	int control;

	fnstcw(&control);
	control |= FP_X_DZ;
	fldcw(&control);
#endif

	f = 4.0/xincr;  

	printf("%f\n",f);
}
------------------------------------------------------------------------

$B$?$V$s!"(BNetBSD $B$+$i(B
	/usr/src/include/ieeefp.h
$B$H(B
	/usr/src/lib/libc/arch/i386/gen/fp*.c
$B$rEp$s$G$-$F0J2<$N$h$&$K$9$k$N$,!"$^$C$H$&$J$d$jJ}$@$H;W$$$^$9$,(B...
$B$3$&$9$k$H!"(Bi386 $B0J30$N%"!<%-%F%/%A%c$r4^$`!"3F<o(B OS $B$K%]!<%?%V%k$K(B
$B$J$j$^$9!#(B
# $BD>@\(B fldcw $BL?Na$rH/9T$9$k>l9g$H!"(B<ieeefp.h> $B$GDj5A$5$l$?%$%s%?!<%U%'!<%9(B
# $B$rMxMQ$9$k>l9g$H$G$O!"(BFP_X_DZ $B$N%S%C%H$N0UL#$,5U$K$J$k$N$GCm0U$7$F$/$@$5$$!#(B

------------------------------------------------------------------------
#include <stdio.h>
#include <ieeefp.h>


main()
{
	float f, xincr=0.0;

	fpsetmask(fpgetmask() & ~FP_X_DZ);
	f = 4.0/xincr;  

	printf("%f\n",f);
}
------------------------------------------------------------------------

# NetBSD $B$N>l9g!">e$N$h$&$J=hM}$r$7$J$/$F$b!"%G%U%)!<%k%H$G(B Sun $B$HF1$8(B
# $B?6$k$^$$$r$7$^$9!#(BDivision by zero $B$G(B FreeBSD $B$HF1MM$K(B core dump 
# $B$5$;$k$K$O!"(B
#	fpsetmask(fpgetmask() | FP_X_DZ);
# $B$H$9$kI,MW$,$"$j$^$9!#(B

## $B@N!"(Bfj.lang.fortran $B$G!"(BLinux $B$NJ}$,(B FPU $B$N1i;;@:EYA4$F$r;H$($k$N$G(B
## $BJXMx$@$H$$$&5DO@$,$"$j$^$7$?$,!"(Bfldcw $B$r;H$($P!"%+!<%M%k$rJQ99$7$J(B
## $B$/$F$b%f!<%6!<%l%Y%k$G1i;;@:EY$N@_Dj$,$G$-$^$9!#(B
## $B%=!<%9$rFI$`8B$j$G$O!"(BLinux $B$O2?$b9M$($:$K!"(Bfninit $BL?Na$N%G%U%)!<%k%H(B
## $BCM$r(B FPU $B$N%3%s%H%m!<%k!&%l%8%9%?$K@_Dj$7$F$$$k$N$KBP$7!"(BFreeBSD $B$G$O(B
## $B=ON8$NKv!"$o$6$H(B FPU $B$N1i;;@:EYA4$F$r;H$o$J$$$h$&$K$7$F$$$k$h$&$K;W$((B
## $B$^$9!#(B(fj $B$G$N5DO@$G$"$C$?$h$&$K!"$3$&$7$J$$$H=i?4<T$K$H$C$F$OIT;W5D$J(B
## $B1i;;7k2L$,F@$i$l$k$+$i$G$9!#(B) $B$h$/8@$o$l$k5DO@$H$O0c$C$F!"$3$NE@$G$O!"(B
## FreeBSD $B$d(B NetBSD $B$NJ}$,!"=i?4<T$KM%$7$$(B/$B0BA4B&$K?6$C$?CM$rA*Br$7$F$$(B
## $B$k$H8@$($k$G$7$g$&!#(B
--
soda@sra.co.jp$B!!!!(BSoftware Research Associates, Inc.$B!!A>EDE/G7(B (Soda Noriyuki)
