Mailing Lists: Apple Mailing Lists

Image of Mac OS face in stamp
 
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Apple gcc bug



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:
http://lists.apple.com/mailman/options/darwin-dev/email@hidden

This email sent to email@hidden
References: 
 >Apple gcc bug (From: Aaron Jackson <email@hidden>)
 >Re: Apple gcc bug (From: Matt Watson <email@hidden>)



Visit the Apple Store online or at retail locations.
1-800-MY-APPLE

Contact Apple | Terms of Use | Privacy Policy

Copyright © 2007 Apple Inc. All rights reserved.