site_archiver@lists.apple.com Delivered-To: darwin-dev@lists.apple.com On Mar 17, 2005, at 4:55 PM, Matt Watson wrote: fpsetmask(FP_X_INV | FP_X_DZ); signal(SIGFPE, sig_handler); Aaron _______________________________________________ Do not post admin requests to the list. They will be ignored. Darwin-dev mailing list (Darwin-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/darwin-dev/site_archiver%40lists.appl... 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: 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. This email sent to site_archiver@lists.apple.com