+#if defined(HAVE_FEENABLEEXCEPT)
+static void
+initFPE ()
+{
+ if (fpeAbort) {
+ int except = fegetexcept();
+ feenableexcept(except | FE_DIVBYZERO | FE_INVALID);
+ } else {
+ signal(SIGFPE, handleFPE);
+ }
+}
+
+static void handleFPE(int)
+{
+ feclearexcept(FE_ALL_EXCEPT);
+ signal(SIGFPE, handleFPE);
+}
+#elif defined(__linux__) && defined(__i386__)