diff options
author | Danny Smith <dannysmith@users.sourceforge.net> | 2006-09-01 03:48:56 +0400 |
---|---|---|
committer | Danny Smith <dannysmith@users.sourceforge.net> | 2006-09-01 03:48:56 +0400 |
commit | e635b309569280551f915a854fe987cb1756b0f1 (patch) | |
tree | be10e9489e576e2c03af02165bf627163ef1aef4 /winsup/mingw/mingwex/gdtoa/gmisc.c | |
parent | 55283468e62dd074fe9b1b0428b319d908e0e5d2 (diff) |
Import David Gay's gdtoa library.
* mingwex/gdtoa: New directory.
* mingwex/gdtoa/(arithchk.c, dmisc.c, dtoa.c, g__fmt.c, g_dfmt.c,
g_ffmt.c, g_xfmt.c, gd_arith.h, gd_qnan.h, gdtoa.c, gdtoa.h,
gdtoaimp.h, gethex.c, gmisc.c, hd_init.c, hexnan.c, misc.c, qnan.c,
README, smisc.c, strtodg.c, strtodnrp.c, strtof.c, strtopx.c, sum.c,
ulp.c): New files.
* mingwex/(strtof.c, strtold.c, ldtoa.c): Remove files.
* mingwex/math/(cephes-emath.c, cephes-emath.h): Remove files.
* mingwex/mb_wc_common.h (get_cp_from_locale); Rename to get_codepage().
* mingwex/(btowc.c, wctob.c, mbrtowc.c, wcrtomb.c): Adjust call to get_codepage().
* mingwex/wcstold.c: Avoid using strtold internals.
* mingwex/wcstof.c: Rewrite.
* mingwex/Makefile.in (GDTOA_DISTFILES): Add to distribution.
(GDTOA_OBJS): Add to library.
(DISTFILES): Remove strtof.c strtold.c ldtoa.c cephes-emath.c cephes-emath.h.
(STDLIB_OBJS): Remove.
(STDLIB_STUB_OBJS): Remove strtof.o wcstof,o.
(Q8_OBJS): Add wcstof.o wcstold.o.
* include/stdlib.h (strtof): Remove inline definition.
(wcstof): Likewise.
* include/wchar.h (wcstof): Remove inline definition.
Diffstat (limited to 'winsup/mingw/mingwex/gdtoa/gmisc.c')
-rwxr-xr-x | winsup/mingw/mingwex/gdtoa/gmisc.c | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/winsup/mingw/mingwex/gdtoa/gmisc.c b/winsup/mingw/mingwex/gdtoa/gmisc.c new file mode 100755 index 000000000..8270ef944 --- /dev/null +++ b/winsup/mingw/mingwex/gdtoa/gmisc.c @@ -0,0 +1,86 @@ +/**************************************************************** + +The author of this software is David M. Gay. + +Copyright (C) 1998 by Lucent Technologies +All Rights Reserved + +Permission to use, copy, modify, and distribute this software and +its documentation for any purpose and without fee is hereby +granted, provided that the above copyright notice appear in all +copies and that both that the copyright notice and this +permission notice and warranty disclaimer appear in supporting +documentation, and that the name of Lucent or any of its entities +not be used in advertising or publicity pertaining to +distribution of the software without specific, written prior +permission. + +LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. +IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY +SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER +IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF +THIS SOFTWARE. + +****************************************************************/ + +/* Please send bug reports to David M. Gay (dmg at acm dot org, + * with " at " changed at "@" and " dot " changed to "."). */ + +#include "gdtoaimp.h" + + void +#ifdef KR_headers +rshift(b, k) Bigint *b; int k; +#else +rshift(Bigint *b, int k) +#endif +{ + ULong *x, *x1, *xe, y; + int n; + + x = x1 = b->x; + n = k >> kshift; + if (n < b->wds) { + xe = x + b->wds; + x += n; + if (k &= kmask) { + n = ULbits - k; + y = *x++ >> k; + while(x < xe) { + *x1++ = (y | (*x << n)) & ALL_ON; + y = *x++ >> k; + } + if ((*x1 = y) !=0) + x1++; + } + else + while(x < xe) + *x1++ = *x++; + } + if ((b->wds = x1 - b->x) == 0) + b->x[0] = 0; + } + + int +#ifdef KR_headers +trailz(b) Bigint *b; +#else +trailz(Bigint *b) +#endif +{ + ULong L, *x, *xe; + int n = 0; + + x = b->x; + xe = x + b->wds; + for(n = 0; x < xe && !*x; x++) + n += ULbits; + if (x < xe) { + L = *x; + n += lo0bits(&L); + } + return n; + } |