diff options
Diffstat (limited to 'gcc-4.4.3/libdecnumber/bid/decimal64.c')
-rw-r--r-- | gcc-4.4.3/libdecnumber/bid/decimal64.c | 145 |
1 files changed, 0 insertions, 145 deletions
diff --git a/gcc-4.4.3/libdecnumber/bid/decimal64.c b/gcc-4.4.3/libdecnumber/bid/decimal64.c deleted file mode 100644 index fd637388a..000000000 --- a/gcc-4.4.3/libdecnumber/bid/decimal64.c +++ /dev/null @@ -1,145 +0,0 @@ -/* Copyright (C) 2007, 2009 - Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -<http://www.gnu.org/licenses/>. */ - -#define decimal64FromString __dpd64FromString -#define decimal64ToString __dpd64ToString -#define decimal64ToEngString __dpd64ToEngString -#define decimal64FromNumber __dpd64FromNumber -#define decimal64ToNumber __dpd64ToNumber - -#include "dpd/decimal64.c" - -#undef decimal64FromString -#undef decimal64ToString -#undef decimal64ToEngString -#undef decimal64FromNumber -#undef decimal64ToNumber - -#include "bid-dpd.h" - -#ifdef IN_LIBGCC2 -#define decimal64FromString __decimal64FromString -#define decimal64ToString __decimal64ToString -#define decimal64ToEngString __decimal64ToEngString -#define decimal64FromNumber __decimal64FromNumber -#define decimal64ToNumber __decimal64ToNumber -#endif - -decimal64 *decimal64FromString (decimal64 *, const char *, decContext *); -char *decimal64ToString (const decimal64 *, char *); -char *decimal64ToEngString (const decimal64 *, char *); -decimal64 *decimal64FromNumber (decimal64 *, const decNumber *, decContext *); -decNumber *decimal64ToNumber (const decimal64 *, decNumber *); - -void __host_to_ieee_64 (_Decimal64 in, decimal64 *out); -void __ieee_to_host_64 (decimal64 in, _Decimal64 *out); - -decimal64 * -decimal64FromNumber (decimal64 *d64, const decNumber *dn, - decContext *set) -{ - /* decimal64 and _Decimal64 are different types. */ - union - { - _Decimal64 _Dec; - decimal64 dec; - } u; - - __dpd64FromNumber (d64, dn, set); - - /* __dpd64FromNumber returns in big endian. But _dpd_to_bid64 takes - host endian. */ - __ieee_to_host_64 (*d64, &u._Dec); - - /* Convert DPD to BID. */ - _dpd_to_bid64 (&u._Dec, &u._Dec); - - /* dfp.c is in bid endian. */ - __host_to_ieee_64 (u._Dec, &u.dec); - - /* d64 is returned as a pointer to _Decimal64 here. */ - *d64 = u.dec; - - return d64; -} - -decNumber * -decimal64ToNumber (const decimal64 *bid64, decNumber *dn) -{ - /* decimal64 and _Decimal64 are different types. */ - union - { - _Decimal64 _Dec; - decimal64 dec; - } u; - - /* bid64 is a pointer to _Decimal64 in bid endian. But _bid_to_dpd64 - takes host endian. */ - __ieee_to_host_64 (*bid64, &u._Dec); - - /* Convert BID to DPD. */ - _bid_to_dpd64 (&u._Dec, &u._Dec); - - /* __dpd64ToNumber is in bid endian. */ - __host_to_ieee_64 (u._Dec, &u.dec); - - return __dpd64ToNumber (&u.dec, dn); -} - -char * -decimal64ToString (const decimal64 *d64, char *string) -{ - decNumber dn; /* work */ - decimal64ToNumber (d64, &dn); - decNumberToString (&dn, string); - return string; -} - -char * -decimal64ToEngString (const decimal64 *d64, char *string) -{ - decNumber dn; /* work */ - decimal64ToNumber (d64, &dn); - decNumberToEngString (&dn, string); - return string; -} - -decimal64 * -decimal64FromString (decimal64 *result, const char *string, - decContext *set) -{ - decContext dc; /* work */ - decNumber dn; /* .. */ - - decContextDefault (&dc, DEC_INIT_DECIMAL64); /* no traps, please */ - dc.round = set->round; /* use supplied rounding */ - - decNumberFromString (&dn, string, &dc); /* will round if needed */ - decimal64FromNumber (result, &dn, &dc); - if (dc.status != 0) - { /* something happened */ - decContextSetStatus (set, dc.status); /* .. pass it on */ - } - return result; -} |