| /* decQuad module for the decNumber C Library. |
| Copyright (C) 2007-2022 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/>. */ |
| |
| /* ------------------------------------------------------------------ */ |
| /* decQuad.c -- decQuad operations module */ |
| /* ------------------------------------------------------------------ */ |
| /* This module comprises decQuad operations (including conversions) */ |
| /* ------------------------------------------------------------------ */ |
| |
| #include "decContext.h" /* public includes */ |
| #include "decQuad.h" /* .. */ |
| |
| /* Constant mappings for shared code */ |
| #define DECPMAX DECQUAD_Pmax |
| #define DECEMIN DECQUAD_Emin |
| #define DECEMAX DECQUAD_Emax |
| #define DECEMAXD DECQUAD_EmaxD |
| #define DECBYTES DECQUAD_Bytes |
| #define DECSTRING DECQUAD_String |
| #define DECECONL DECQUAD_EconL |
| #define DECBIAS DECQUAD_Bias |
| #define DECLETS DECQUAD_Declets |
| #define DECQTINY (-DECQUAD_Bias) |
| |
| /* Type and function mappings for shared code */ |
| #define decFloat decQuad /* Type name */ |
| |
| /* Utilities and conversions (binary results, extractors, etc.) */ |
| #define decFloatFromBCD decQuadFromBCD |
| #define decFloatFromInt32 decQuadFromInt32 |
| #define decFloatFromPacked decQuadFromPacked |
| #define decFloatFromPackedChecked decQuadFromPackedChecked |
| #define decFloatFromString decQuadFromString |
| #define decFloatFromUInt32 decQuadFromUInt32 |
| #define decFloatFromWider decQuadFromWider |
| #define decFloatGetCoefficient decQuadGetCoefficient |
| #define decFloatGetExponent decQuadGetExponent |
| #define decFloatSetCoefficient decQuadSetCoefficient |
| #define decFloatSetExponent decQuadSetExponent |
| #define decFloatShow decQuadShow |
| #define decFloatToBCD decQuadToBCD |
| #define decFloatToEngString decQuadToEngString |
| #define decFloatToInt32 decQuadToInt32 |
| #define decFloatToInt32Exact decQuadToInt32Exact |
| #define decFloatToPacked decQuadToPacked |
| #define decFloatToString decQuadToString |
| #define decFloatToUInt32 decQuadToUInt32 |
| #define decFloatToUInt32Exact decQuadToUInt32Exact |
| #define decFloatToWider decQuadToWider |
| #define decFloatZero decQuadZero |
| |
| /* Computational (result is a decFloat) */ |
| #define decFloatAbs decQuadAbs |
| #define decFloatAdd decQuadAdd |
| #define decFloatAnd decQuadAnd |
| #define decFloatDivide decQuadDivide |
| #define decFloatDivideInteger decQuadDivideInteger |
| #define decFloatFMA decQuadFMA |
| #define decFloatInvert decQuadInvert |
| #define decFloatLogB decQuadLogB |
| #define decFloatMax decQuadMax |
| #define decFloatMaxMag decQuadMaxMag |
| #define decFloatMin decQuadMin |
| #define decFloatMinMag decQuadMinMag |
| #define decFloatMinus decQuadMinus |
| #define decFloatMultiply decQuadMultiply |
| #define decFloatNextMinus decQuadNextMinus |
| #define decFloatNextPlus decQuadNextPlus |
| #define decFloatNextToward decQuadNextToward |
| #define decFloatOr decQuadOr |
| #define decFloatPlus decQuadPlus |
| #define decFloatQuantize decQuadQuantize |
| #define decFloatReduce decQuadReduce |
| #define decFloatRemainder decQuadRemainder |
| #define decFloatRemainderNear decQuadRemainderNear |
| #define decFloatRotate decQuadRotate |
| #define decFloatScaleB decQuadScaleB |
| #define decFloatShift decQuadShift |
| #define decFloatSubtract decQuadSubtract |
| #define decFloatToIntegralValue decQuadToIntegralValue |
| #define decFloatToIntegralExact decQuadToIntegralExact |
| #define decFloatXor decQuadXor |
| |
| /* Comparisons */ |
| #define decFloatCompare decQuadCompare |
| #define decFloatCompareSignal decQuadCompareSignal |
| #define decFloatCompareTotal decQuadCompareTotal |
| #define decFloatCompareTotalMag decQuadCompareTotalMag |
| |
| /* Copies */ |
| #define decFloatCanonical decQuadCanonical |
| #define decFloatCopy decQuadCopy |
| #define decFloatCopyAbs decQuadCopyAbs |
| #define decFloatCopyNegate decQuadCopyNegate |
| #define decFloatCopySign decQuadCopySign |
| |
| /* Non-computational */ |
| #define decFloatClass decQuadClass |
| #define decFloatClassString decQuadClassString |
| #define decFloatDigits decQuadDigits |
| #define decFloatIsCanonical decQuadIsCanonical |
| #define decFloatIsFinite decQuadIsFinite |
| #define decFloatIsInfinite decQuadIsInfinite |
| #define decFloatIsInteger decQuadIsInteger |
| #define decFloatIsNaN decQuadIsNaN |
| #define decFloatIsNormal decQuadIsNormal |
| #define decFloatIsSignaling decQuadIsSignaling |
| #define decFloatIsSignalling decQuadIsSignalling |
| #define decFloatIsSigned decQuadIsSigned |
| #define decFloatIsSubnormal decQuadIsSubnormal |
| #define decFloatIsZero decQuadIsZero |
| #define decFloatRadix decQuadRadix |
| #define decFloatSameQuantum decQuadSameQuantum |
| #define decFloatVersion decQuadVersion |
| |
| #include "decNumberLocal.h" /* local includes (need DECPMAX) */ |
| #include "decCommon.c" /* non-arithmetic decFloat routines */ |
| #include "decBasic.c" /* basic formats routines */ |
| |