Browse Source

Revert "Update to the latest s_scalbln.c from msun."

This reverts commit a2f4e102f21c4104e22bb7c43536d02c39f461ff.
Viral B. Shah 10 years ago
parent
commit
8247b5af78
1 changed files with 34 additions and 9 deletions
  1. 34 9
      src/s_scalbln.c

+ 34 - 9
src/s_scalbln.c

@@ -24,30 +24,55 @@
  * SUCH DAMAGE.
  */
 
-#include <sys/cdefs.h>
+#include "cdefs-compat.h"
+//__FBSDID("$FreeBSD: src/lib/msun/src/s_scalbln.c,v 1.2 2005/03/07 04:57:50 das Exp $");
 
+#include <limits.h>
 #include <openlibm_math.h>
 
-#define	NMAX	65536
-#define	NMIN	-65536
+#include "math_private.h"
 
 DLLEXPORT double
-scalbln(double x, long n)
+scalbln (double x, long n)
 {
+	int in;
 
-	return (scalbn(x, (n > NMAX) ? NMAX : (n < NMIN) ? NMIN : (int)n));
+	in = (int)n;
+	if (in != n) {
+		if (n > 0)
+			in = INT_MAX;
+		else
+			in = INT_MIN;
+	}
+	return (scalbn(x, in));
 }
 
 DLLEXPORT float
-scalblnf(float x, long n)
+scalblnf (float x, long n)
 {
+	int in;
 
-	return (scalbnf(x, (n > NMAX) ? NMAX : (n < NMIN) ? NMIN : (int)n));
+	in = (int)n;
+	if (in != n) {
+		if (n > 0)
+			in = INT_MAX;
+		else
+			in = INT_MIN;
+	}
+	return (scalbnf(x, in));
 }
 
 DLLEXPORT long double
-scalblnl(long double x, long n)
+scalblnl (long double x, long n)
 {
+	int in;
 
-	return (scalbnl(x, (n > NMAX) ? NMAX : (n < NMIN) ? NMIN : (int)n));
+	in = (int)n;
+	if (in != n) {
+		if (n > 0)
+			in = INT_MAX;
+		else
+			in = INT_MIN;
+	}
+	return (scalbnl(x, (int)n));
 }