This is the mail archive of the
glibc-cvs@sourceware.org
mailing list for the glibc project.
GNU C Library master sources branch, master, updated. glibc-2.10-304-g5001998
- From: drepper at sourceware dot org
- To: glibc-cvs at sourceware dot org
- Date: 25 Aug 2009 22:43:02 -0000
- Subject: GNU C Library master sources branch, master, updated. glibc-2.10-304-g5001998
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".
The branch, master has been updated
via 5001998a12222792ccb0a3f230ab9d0b8b8bbca5 (commit)
from 7423a3456a83c0449b4a545779fc15e75b315a2c (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=5001998a12222792ccb0a3f230ab9d0b8b8bbca5
commit 5001998a12222792ccb0a3f230ab9d0b8b8bbca5
Author: Ulrich Drepper <drepper@redhat.com>
Date: Tue Aug 25 15:42:41 2009 -0700
Add 64-bit optimized scalbln.
diff --git a/ChangeLog b/ChangeLog
index e7ce260..171e0c2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
2009-08-25 Ulrich Drepper <drepper@redhat.com>
+ * sysdeps/ieee754/dbl-64/wordsize-64/s_scalbln.c: New file.
+
* sysdeps/x86_64/fpu/s_signbit.S: New file.
* sysdeps/x86_64/fpu/s_signbitf.S: New file.
diff --git a/sysdeps/ieee754/dbl-64/wordsize-64/s_scalbln.c b/sysdeps/ieee754/dbl-64/wordsize-64/s_scalbln.c
new file mode 100644
index 0000000..25b283f
--- /dev/null
+++ b/sysdeps/ieee754/dbl-64/wordsize-64/s_scalbln.c
@@ -0,0 +1,68 @@
+/* @(#)s_scalbn.c 5.1 93/09/24 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/*
+ * scalbn (double x, int n)
+ * scalbn(x,n) returns x* 2**n computed by exponent
+ * manipulation rather than by actually performing an
+ * exponentiation or a multiplication.
+ */
+
+#include "math.h"
+#include "math_private.h"
+
+#ifdef __STDC__
+static const double
+#else
+static double
+#endif
+two54 = 1.80143985094819840000e+16, /* 0x43500000, 0x00000000 */
+twom54 = 5.55111512312578270212e-17, /* 0x3C900000, 0x00000000 */
+huge = 1.0e+300,
+tiny = 1.0e-300;
+
+#ifdef __STDC__
+ double __scalbln (double x, long int n)
+#else
+ double __scalbln (x,n)
+ double x; long int n;
+#endif
+{
+ int64_t ix;
+ int64_t k;
+ EXTRACT_WORDS64(ix,x);
+ k = (ix >> 52) & 0x7ff; /* extract exponent */
+ if (k==0) { /* 0 or subnormal x */
+ if ((ix & UINT64_C(0xfffffffffffff))==0) return x; /* +-0 */
+ x *= two54;
+ EXTRACT_WORDS64(ix,x);
+ k = ((ix >> 52) & 0x7ff) - 54;
+ }
+ if (k==0x7ff) return x+x; /* NaN or Inf */
+ k = k+n;
+ if (n> 50000 || k > 0x7fe)
+ return huge*__copysign(huge,x); /* overflow */
+ if (n< -50000) return tiny*__copysign(tiny,x); /*underflow*/
+ if (k > 0) /* normal result */
+ {INSERT_WORDS64(x,(ix&UINT64_C(0x800fffffffffffff))|(k<<52));
+ return x;}
+ if (k <= -54)
+ return tiny*__copysign(tiny,x); /*underflow*/
+ k += 54; /* subnormal result */
+ INSERT_WORDS64(x,(ix&INT64_C(0x800fffffffffffff))|(k<<52));
+ return x*twom54;
+}
+weak_alias (__scalbln, scalbln)
+#ifdef NO_LONG_DOUBLE
+strong_alias (__scalbln, __scalblnl)
+weak_alias (__scalbln, scalblnl)
+#endif
-----------------------------------------------------------------------
Summary of changes:
ChangeLog | 2 +
.../ieee754/dbl-64/{ => wordsize-64}/s_scalbln.c | 40 +++++++++----------
2 files changed, 21 insertions(+), 21 deletions(-)
copy sysdeps/ieee754/dbl-64/{ => wordsize-64}/s_scalbln.c (61%)
hooks/post-receive
--
GNU C Library master sources