summaryrefslogtreecommitdiffstats
path: root/lib/libm/src
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libm/src')
-rw-r--r--lib/libm/src/s_scalbln.c42
1 files changed, 42 insertions, 0 deletions
diff --git a/lib/libm/src/s_scalbln.c b/lib/libm/src/s_scalbln.c
new file mode 100644
index 00000000000..28edf3115a4
--- /dev/null
+++ b/lib/libm/src/s_scalbln.c
@@ -0,0 +1,42 @@
+/* $OpenBSD: s_scalbln.c,v 1.1 2009/07/25 11:38:10 martynas Exp $ */
+
+/*
+ * Written by Martynas Venckus. Public domain
+ */
+
+#include <limits.h>
+#include <math.h>
+
+double
+scalbln(double x, long n)
+{
+ if (n < INT_MIN)
+ return scalbn(x, INT_MIN);
+ else if (n > INT_MAX)
+ return scalbn(x, INT_MAX);
+ else
+ return scalbn(x, (int)n);
+}
+
+float
+scalblnf(float x, long n)
+{
+ if (n < INT_MIN)
+ return scalbnf(x, INT_MIN);
+ else if (n > INT_MAX)
+ return scalbnf(x, INT_MAX);
+ else
+ return scalbnf(x, (int)n);
+}
+
+long double
+scalblnl(long double x, long n)
+{
+ if (n < INT_MIN)
+ return scalbnl(x, INT_MIN);
+ else if (n > INT_MAX)
+ return scalbnl(x, INT_MAX);
+ else
+ return scalbnl(x, (int)n);
+}
+