Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
* 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.
  • Loading branch information
Ulrich Drepper committed Mar 8, 2008
1 parent 443db17 commit 72f1012
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 19 deletions.
4 changes: 4 additions & 0 deletions ChangeLog
@@ -1,5 +1,9 @@
2008-03-07 Ulrich Drepper <drepper@redhat.com>

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

[BZ #5778]
* sysdeps/unix/sysv/linux/pathconf.h: Declare
__statfs_chown_restricted.
Expand Down
2 changes: 1 addition & 1 deletion stdlib/Makefile
Expand Up @@ -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
Expand Down
20 changes: 2 additions & 18 deletions 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.
Expand Down Expand Up @@ -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))
Expand Down
31 changes: 31 additions & 0 deletions 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
};

0 comments on commit 72f1012

Please sign in to comment.