Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJon Beniston <jon@beniston.com>2018-09-01 00:42:29 +0300
committerCorinna Vinschen <corinna@vinschen.de>2018-09-03 10:41:23 +0300
commitfcc1e7039f92509ccca895432844dc26a2366671 (patch)
tree3adb2ea3349513508e3e1ca6da7655ddddf1ea0b
parent3017f23f1cfdf31dbebdeaa32e45aca15c0b77b6 (diff)
e_scalb.c: Call scalbln instead of scalbn on 16-bit targets to ensure constant fits in an int.
-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
}