Module Name: src
Committed By: matt
Date: Mon Jan 28 06:34:09 UTC 2013
Modified Files:
src/lib/libm/src: s_scalbn.c s_scalbnf.c s_scalbnl.c
Log Message:
Deal with _LP64 properly.
To generate a diff of this commit:
cvs rdiff -u -r1.15 -r1.16 src/lib/libm/src/s_scalbn.c
cvs rdiff -u -r1.9 -r1.10 src/lib/libm/src/s_scalbnf.c
cvs rdiff -u -r1.1 -r1.2 src/lib/libm/src/s_scalbnl.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/lib/libm/src/s_scalbn.c
diff -u src/lib/libm/src/s_scalbn.c:1.15 src/lib/libm/src/s_scalbn.c:1.16
--- src/lib/libm/src/s_scalbn.c:1.15 Tue Jul 26 16:10:16 2011
+++ src/lib/libm/src/s_scalbn.c Mon Jan 28 06:34:09 2013
@@ -12,7 +12,7 @@
#include <sys/cdefs.h>
#if defined(LIBM_SCCS) && !defined(lint)
-__RCSID("$NetBSD: s_scalbn.c,v 1.15 2011/07/26 16:10:16 joerg Exp $");
+__RCSID("$NetBSD: s_scalbn.c,v 1.16 2013/01/28 06:34:09 matt Exp $");
#endif
/*
@@ -26,24 +26,39 @@ __RCSID("$NetBSD: s_scalbn.c,v 1.15 2011
#include "math.h"
#include "math_private.h"
+#ifndef _LP64
+__strong_alias(_scalbn, _scalbln)
+#endif
+
#ifndef __HAVE_LONG_DOUBLE
__strong_alias(_scalbnl, _scalbn)
+__strong_alias(_scalblnl, _scalbln)
__weak_alias(scalbnl, _scalbnl)
+__weak_alias(scalblnl, _scalblnl)
#endif
#ifdef __weak_alias
__weak_alias(scalbn, _scalbn)
+__weak_alias(scalbln, _scalbln)
#endif
static const double
-two54 = 1.80143985094819840000e+16, /* 0x43500000, 0x00000000 */
-twom54 = 5.55111512312578270212e-17, /* 0x3C900000, 0x00000000 */
+two54 = 0x1.0p54, /* 0x43500000, 0x00000000 */
+twom54 = 0x1.0p-54, /* 0x3C900000, 0x00000000 */
huge = 1.0e+300,
tiny = 1.0e-300;
+#ifdef _LP64
double
scalbn(double x, int n)
{
+ return scalbln(x, n);
+}
+#endif
+
+double
+scalbln(double x, long n)
+{
int32_t k,hx,lx;
EXTRACT_WORDS(hx,lx,x);
k = ((uint32_t)hx&0x7ff00000)>>20; /* extract exponent */
Index: src/lib/libm/src/s_scalbnf.c
diff -u src/lib/libm/src/s_scalbnf.c:1.9 src/lib/libm/src/s_scalbnf.c:1.10
--- src/lib/libm/src/s_scalbnf.c:1.9 Fri Apr 23 19:17:07 2010
+++ src/lib/libm/src/s_scalbnf.c Mon Jan 28 06:34:09 2013
@@ -15,26 +15,36 @@
#include <sys/cdefs.h>
#if defined(LIBM_SCCS) && !defined(lint)
-__RCSID("$NetBSD: s_scalbnf.c,v 1.9 2010/04/23 19:17:07 drochner Exp $");
+__RCSID("$NetBSD: s_scalbnf.c,v 1.10 2013/01/28 06:34:09 matt Exp $");
#endif
#include "namespace.h"
#include "math.h"
#include "math_private.h"
-#ifdef __weak_alias
-__weak_alias(scalbnf, _scalbnf)
+#ifndef _LP64
+__strong_alias(_scalbnf, _scalblnf)
#endif
+__weak_alias(scalbnf, _scalbnf)
+__weak_alias(scalblnf, _scalblnf)
static const float
-two25 = 3.355443200e+07, /* 0x4c000000 */
-twom25 = 2.9802322388e-08, /* 0x33000000 */
+two25 = 0x1.0p25, /* 0x4c000000 */
+twom25 = 0x1.0p-25, /* 0x33000000 */
huge = 1.0e+30,
tiny = 1.0e-30;
+#ifdef _LP64
float
scalbnf(float x, int n)
{
+ return scalblnf(x, n);
+}
+#endif
+
+float
+scalblnf(float x, long n)
+{
int32_t k,ix;
GET_FLOAT_WORD(ix,x);
k = (ix&0x7f800000)>>23; /* extract exponent */
Index: src/lib/libm/src/s_scalbnl.c
diff -u src/lib/libm/src/s_scalbnl.c:1.1 src/lib/libm/src/s_scalbnl.c:1.2
--- src/lib/libm/src/s_scalbnl.c:1.1 Tue Jul 26 16:10:16 2011
+++ src/lib/libm/src/s_scalbnl.c Mon Jan 28 06:34:09 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: s_scalbnl.c,v 1.1 2011/07/26 16:10:16 joerg Exp $ */
+/* $NetBSD: s_scalbnl.c,v 1.2 2013/01/28 06:34:09 matt Exp $ */
/*-
* Copyright (c) 2011 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__RCSID("$NetBSD: s_scalbnl.c,v 1.1 2011/07/26 16:10:16 joerg Exp $");
+__RCSID("$NetBSD: s_scalbnl.c,v 1.2 2013/01/28 06:34:09 matt Exp $");
#include "namespace.h"
@@ -40,10 +40,13 @@ __RCSID("$NetBSD: s_scalbnl.c,v 1.1 2011
#ifdef __HAVE_LONG_DOUBLE
-#ifdef __weak_alias
-__weak_alias(scalbnl, _scalbnl)
+#ifndef _LP64
+__strong_alias(_scalbnl, _scalblnl)
#endif
+__weak_alias(scalbnl, _scalbnl)
+__weak_alias(scalblnl, _scalblnl)
+
#if LDBL_MANT_DIG == 64
#define FROM_UNDERFLOW 0x1p65L
#define TO_UNDERFLOW 0x1p-65L
@@ -54,9 +57,17 @@ __weak_alias(scalbnl, _scalbnl)
#error Unsupported long double format
#endif
+#ifdef _LP64
long double
scalbnl(long double x, int n)
{
+ return scalblnl(x, n)
+}
+#endif
+
+long double
+scalblnl(long double x, long n)
+{
union ieee_ext_u u;
/* Trivial cases first */