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 */