Re: Apple gcc bug
Re: Apple gcc bug
- Subject: Re: Apple gcc bug
- From: Aaron Jackson <email@hidden>
- Date: Thu, 17 Mar 2005 17:25:10 -0500
On Mar 17, 2005, at 4:55 PM, Matt Watson wrote:
This is not a bug. Per the ISO/IEC 9899:1999 C Standard (ยง6.5.5):
5 The result of the / operator is the quotient from the division of
the first operand by the
second; the result of the % operator is the remainder. In both
operations, if the value of
the second operand is zero, the behavior is undefined.
Division by zero results in undefined behavior and the compiler is
free to do whatever it likes, including crashing the program, or
setting the result to zero and continuing.
Sorry for jumping to the wrong conclusion. The problem is that I am
doing some numerical calculations (solving nonlinear equations with a
nonlinear constraint) and the algorithm I am using sometimes wanders
off into nowhere (I am still debugging things). I haven't done any c
programming in quite a while, and got used to the crashing behavior
when I first learned and thought that was how things operated.
Since this is undefined, I would like for the program to throw a
SIGFPE, as it does on other platforms, for both integer and floating
point division by zero. On FreeBSD and OpenBSD, there is a function
fpsetmask that I could use to trap invalid operations and division by
zero:
fpsetmask(FP_X_INV | FP_X_DZ);
signal(SIGFPE, sig_handler);
Unfortunately, the fpsetmask function doesn't seem to exist on my mac,
or at least ieeefp.h doesn't. Is there an equivalent function I can
use on my mac? Thanks.
Aaron
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Darwin-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden