| /* decDouble module for the decNumber C Library. | |
| Copyright (C) 2007-2018 Free Software Foundation, Inc. | |
| Contributed by IBM Corporation. Author Mike Cowlishaw. | |
| 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/>. */ | |
| /* ------------------------------------------------------------------ */ | |
| /* decDouble.c -- decDouble operations module */ | |
| /* ------------------------------------------------------------------ */ | |
| /* This module comprises decDouble operations (including conversions) */ | |
| /* ------------------------------------------------------------------ */ | |
| #include "decContext.h" /* public includes */ | |
| #include "decDouble.h" /* .. */ | |
| /* Constant mappings for shared code */ | |
| #define DECPMAX DECDOUBLE_Pmax | |
| #define DECEMIN DECDOUBLE_Emin | |
| #define DECEMAX DECDOUBLE_Emax | |
| #define DECEMAXD DECDOUBLE_EmaxD | |
| #define DECBYTES DECDOUBLE_Bytes | |
| #define DECSTRING DECDOUBLE_String | |
| #define DECECONL DECDOUBLE_EconL | |
| #define DECBIAS DECDOUBLE_Bias | |
| #define DECLETS DECDOUBLE_Declets | |
| #define DECQTINY (-DECDOUBLE_Bias) | |
| /* parameters of next-wider format */ | |
| #define DECWBYTES DECQUAD_Bytes | |
| #define DECWPMAX DECQUAD_Pmax | |
| #define DECWECONL DECQUAD_EconL | |
| #define DECWBIAS DECQUAD_Bias | |
| /* Type and function mappings for shared code */ | |
| #define decFloat decDouble /* Type name */ | |
| #define decFloatWider decQuad /* Type name */ | |
| /* Utilities and conversions (binary results, extractors, etc.) */ | |
| #define decFloatFromBCD decDoubleFromBCD | |
| #define decFloatFromInt32 decDoubleFromInt32 | |
| #define decFloatFromPacked decDoubleFromPacked | |
| #define decFloatFromPackedChecked decDoubleFromPackedChecked | |
| #define decFloatFromString decDoubleFromString | |
| #define decFloatFromUInt32 decDoubleFromUInt32 | |
| #define decFloatFromWider decDoubleFromWider | |
| #define decFloatGetCoefficient decDoubleGetCoefficient | |
| #define decFloatGetExponent decDoubleGetExponent | |
| #define decFloatSetCoefficient decDoubleSetCoefficient | |
| #define decFloatSetExponent decDoubleSetExponent | |
| #define decFloatShow decDoubleShow | |
| #define decFloatToBCD decDoubleToBCD | |
| #define decFloatToEngString decDoubleToEngString | |
| #define decFloatToInt32 decDoubleToInt32 | |
| #define decFloatToInt32Exact decDoubleToInt32Exact | |
| #define decFloatToPacked decDoubleToPacked | |
| #define decFloatToString decDoubleToString | |
| #define decFloatToUInt32 decDoubleToUInt32 | |
| #define decFloatToUInt32Exact decDoubleToUInt32Exact | |
| #define decFloatToWider decDoubleToWider | |
| #define decFloatZero decDoubleZero | |
| /* Computational (result is a decFloat) */ | |
| #define decFloatAbs decDoubleAbs | |
| #define decFloatAdd decDoubleAdd | |
| #define decFloatAnd decDoubleAnd | |
| #define decFloatDivide decDoubleDivide | |
| #define decFloatDivideInteger decDoubleDivideInteger | |
| #define decFloatFMA decDoubleFMA | |
| #define decFloatInvert decDoubleInvert | |
| #define decFloatLogB decDoubleLogB | |
| #define decFloatMax decDoubleMax | |
| #define decFloatMaxMag decDoubleMaxMag | |
| #define decFloatMin decDoubleMin | |
| #define decFloatMinMag decDoubleMinMag | |
| #define decFloatMinus decDoubleMinus | |
| #define decFloatMultiply decDoubleMultiply | |
| #define decFloatNextMinus decDoubleNextMinus | |
| #define decFloatNextPlus decDoubleNextPlus | |
| #define decFloatNextToward decDoubleNextToward | |
| #define decFloatOr decDoubleOr | |
| #define decFloatPlus decDoublePlus | |
| #define decFloatQuantize decDoubleQuantize | |
| #define decFloatReduce decDoubleReduce | |
| #define decFloatRemainder decDoubleRemainder | |
| #define decFloatRemainderNear decDoubleRemainderNear | |
| #define decFloatRotate decDoubleRotate | |
| #define decFloatScaleB decDoubleScaleB | |
| #define decFloatShift decDoubleShift | |
| #define decFloatSubtract decDoubleSubtract | |
| #define decFloatToIntegralValue decDoubleToIntegralValue | |
| #define decFloatToIntegralExact decDoubleToIntegralExact | |
| #define decFloatXor decDoubleXor | |
| /* Comparisons */ | |
| #define decFloatCompare decDoubleCompare | |
| #define decFloatCompareSignal decDoubleCompareSignal | |
| #define decFloatCompareTotal decDoubleCompareTotal | |
| #define decFloatCompareTotalMag decDoubleCompareTotalMag | |
| /* Copies */ | |
| #define decFloatCanonical decDoubleCanonical | |
| #define decFloatCopy decDoubleCopy | |
| #define decFloatCopyAbs decDoubleCopyAbs | |
| #define decFloatCopyNegate decDoubleCopyNegate | |
| #define decFloatCopySign decDoubleCopySign | |
| /* Non-computational */ | |
| #define decFloatClass decDoubleClass | |
| #define decFloatClassString decDoubleClassString | |
| #define decFloatDigits decDoubleDigits | |
| #define decFloatIsCanonical decDoubleIsCanonical | |
| #define decFloatIsFinite decDoubleIsFinite | |
| #define decFloatIsInfinite decDoubleIsInfinite | |
| #define decFloatIsInteger decDoubleIsInteger | |
| #define decFloatIsNaN decDoubleIsNaN | |
| #define decFloatIsNormal decDoubleIsNormal | |
| #define decFloatIsSignaling decDoubleIsSignaling | |
| #define decFloatIsSignalling decDoubleIsSignalling | |
| #define decFloatIsSigned decDoubleIsSigned | |
| #define decFloatIsSubnormal decDoubleIsSubnormal | |
| #define decFloatIsZero decDoubleIsZero | |
| #define decFloatRadix decDoubleRadix | |
| #define decFloatSameQuantum decDoubleSameQuantum | |
| #define decFloatVersion decDoubleVersion | |
| #include "decNumberLocal.h" /* local includes (need DECPMAX) */ | |
| #include "decCommon.c" /* non-arithmetic decFloat routines */ | |
| #include "decBasic.c" /* basic formats routines */ | |