summary refs log tree commit diff
path: root/stdlib
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2008-03-08 04:18:31 +0000
committerUlrich Drepper <drepper@redhat.com>2008-03-08 04:18:31 +0000
commit72f1012788c07837e841300024ab554b56aa6816 (patch)
tree85993ccdd192cdafde1f81746020071ffe1af0ad /stdlib
parent443db178899d14a9c54248d95675fee44d718e05 (diff)
downloadglibc-72f1012788c07837e841300024ab554b56aa6816.tar.gz
glibc-72f1012788c07837e841300024ab554b56aa6816.tar.xz
glibc-72f1012788c07837e841300024ab554b56aa6816.zip
* stdlib/Makefile (aux): Add tens_in_limb.
	* stdlib/strtod_l.c: Move _tens_in_limb definition to...
	* stdlib/tens_in_limb.c: ...here.  New file.
Diffstat (limited to 'stdlib')
-rw-r--r--stdlib/Makefile2
-rw-r--r--stdlib/strtod_l.c20
-rw-r--r--stdlib/tens_in_limb.c31
3 files changed, 34 insertions, 19 deletions
diff --git a/stdlib/Makefile b/stdlib/Makefile
index 736c562374..63917812d0 100644
--- a/stdlib/Makefile
+++ b/stdlib/Makefile
@@ -52,7 +52,7 @@ routines	:=							      \
 	rpmatch strfmon strfmon_l getsubopt xpg_basename fmtmsg		      \
 	strtoimax strtoumax wcstoimax wcstoumax				      \
 	getcontext setcontext makecontext swapcontext
-aux =	grouping groupingwc
+aux =	grouping groupingwc tens_in_limb
 
 # These routines will be omitted from the libc shared object.
 # Instead the static object files will be included in a special archive
diff --git a/stdlib/strtod_l.c b/stdlib/strtod_l.c
index 86b408e1fe..d1c2b62852 100644
--- a/stdlib/strtod_l.c
+++ b/stdlib/strtod_l.c
@@ -1,5 +1,5 @@
 /* Convert string representing a number to float value, using given locale.
-   Copyright (C) 1997,1998,2002,2004,2005,2006,2007
+   Copyright (C) 1997,1998,2002,2004,2005,2006,2007,2008
    Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@@ -148,23 +148,7 @@ extern FLOAT MPN2FLOAT (mp_srcptr mpn, int exponent, int negative);
 # error "mp_limb_t size " BITS_PER_MP_LIMB "not accounted for"
 #endif
 
-
-/* Local data structure.  */
-static const mp_limb_t _tens_in_limb[MAX_DIG_PER_LIMB + 1] =
-{    0,                   10,                   100,
-     1000,                10000,                100000L,
-     1000000L,            10000000L,            100000000L,
-     1000000000L
-#if BITS_PER_MP_LIMB > 32
-	        ,	  10000000000ULL,       100000000000ULL,
-     1000000000000ULL,    10000000000000ULL,    100000000000000ULL,
-     1000000000000000ULL, 10000000000000000ULL, 100000000000000000ULL,
-     1000000000000000000ULL, 10000000000000000000ULL
-#endif
-#if BITS_PER_MP_LIMB > 64
-  #error "Need to expand tens_in_limb table to" MAX_DIG_PER_LIMB
-#endif
-};
+extern const mp_limb_t _tens_in_limb[MAX_DIG_PER_LIMB + 1];
 
 #ifndef	howmany
 #define	howmany(x,y)		(((x)+((y)-1))/(y))
diff --git a/stdlib/tens_in_limb.c b/stdlib/tens_in_limb.c
new file mode 100644
index 0000000000..b6e35aa35a
--- /dev/null
+++ b/stdlib/tens_in_limb.c
@@ -0,0 +1,31 @@
+#include <gmp.h>
+
+
+/* Definitions according to limb size used.  */
+#if	BITS_PER_MP_LIMB == 32
+# define MAX_DIG_PER_LIMB	9
+# define MAX_FAC_PER_LIMB	1000000000UL
+#elif	BITS_PER_MP_LIMB == 64
+# define MAX_DIG_PER_LIMB	19
+# define MAX_FAC_PER_LIMB	10000000000000000000ULL
+#else
+# error "mp_limb_t size " BITS_PER_MP_LIMB "not accounted for"
+#endif
+
+
+/* Local data structure.  */
+const mp_limb_t _tens_in_limb[MAX_DIG_PER_LIMB + 1] =
+{    0,                   10,                   100,
+     1000,                10000,                100000L,
+     1000000L,            10000000L,            100000000L,
+     1000000000L
+#if BITS_PER_MP_LIMB > 32
+	        ,	  10000000000ULL,       100000000000ULL,
+     1000000000000ULL,    10000000000000ULL,    100000000000000ULL,
+     1000000000000000ULL, 10000000000000000ULL, 100000000000000000ULL,
+     1000000000000000000ULL, 10000000000000000000ULL
+#endif
+#if BITS_PER_MP_LIMB > 64
+  #error "Need to expand tens_in_limb table to" MAX_DIG_PER_LIMB
+#endif
+};