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