summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--newlib/libm/math/e_scalb.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/newlib/libm/math/e_scalb.c b/newlib/libm/math/e_scalb.c
index 0bb924b43..4d8bb8b71 100644
--- a/newlib/libm/math/e_scalb.c
+++ b/newlib/libm/math/e_scalb.c
@@ -46,8 +46,13 @@
else return x/(-fn);
}
if (rint(fn)!=fn) return (fn-fn)/(fn-fn);
+#if INT_MAX == 32767
+ if ( fn > 65000.0) return scalbln(x, 65000);
+ if (-fn > 65000.0) return scalbln(x,-65000);
+#else
if ( fn > 65000.0) return scalbn(x, 65000);
if (-fn > 65000.0) return scalbn(x,-65000);
+#endif
return scalbn(x,(int)fn);
#endif
}