1 /* decQuad module for the decNumber C Library. 2 Copyright (C) 2007-2019 Free Software Foundation, Inc. 3 Contributed by IBM Corporation. Author Mike Cowlishaw. 4 5 This file is part of GCC. 6 7 GCC is free software; you can redistribute it and/or modify it under 8 the terms of the GNU General Public License as published by the Free 9 Software Foundation; either version 3, or (at your option) any later 10 version. 11 12 GCC is distributed in the hope that it will be useful, but WITHOUT ANY 13 WARRANTY; without even the implied warranty of MERCHANTABILITY or 14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 15 for more details. 16 17 Under Section 7 of GPL version 3, you are granted additional 18 permissions described in the GCC Runtime Library Exception, version 19 3.1, as published by the Free Software Foundation. 20 21 You should have received a copy of the GNU General Public License and 22 a copy of the GCC Runtime Library Exception along with this program; 23 see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 24 <http://www.gnu.org/licenses/>. */ 25 26 /* ------------------------------------------------------------------ */ 27 /* decQuad.c -- decQuad operations module */ 28 /* ------------------------------------------------------------------ */ 29 /* This module comprises decQuad operations (including conversions) */ 30 /* ------------------------------------------------------------------ */ 31 32 #include "decContext.h" /* public includes */ 33 #include "decQuad.h" /* .. */ 34 35 /* Constant mappings for shared code */ 36 #define DECPMAX DECQUAD_Pmax 37 #define DECEMIN DECQUAD_Emin 38 #define DECEMAX DECQUAD_Emax 39 #define DECEMAXD DECQUAD_EmaxD 40 #define DECBYTES DECQUAD_Bytes 41 #define DECSTRING DECQUAD_String 42 #define DECECONL DECQUAD_EconL 43 #define DECBIAS DECQUAD_Bias 44 #define DECLETS DECQUAD_Declets 45 #define DECQTINY (-DECQUAD_Bias) 46 47 /* Type and function mappings for shared code */ 48 #define decFloat decQuad /* Type name */ 49 50 /* Utilities and conversions (binary results, extractors, etc.) */ 51 #define decFloatFromBCD decQuadFromBCD 52 #define decFloatFromInt32 decQuadFromInt32 53 #define decFloatFromPacked decQuadFromPacked 54 #define decFloatFromPackedChecked decQuadFromPackedChecked 55 #define decFloatFromString decQuadFromString 56 #define decFloatFromUInt32 decQuadFromUInt32 57 #define decFloatFromWider decQuadFromWider 58 #define decFloatGetCoefficient decQuadGetCoefficient 59 #define decFloatGetExponent decQuadGetExponent 60 #define decFloatSetCoefficient decQuadSetCoefficient 61 #define decFloatSetExponent decQuadSetExponent 62 #define decFloatShow decQuadShow 63 #define decFloatToBCD decQuadToBCD 64 #define decFloatToEngString decQuadToEngString 65 #define decFloatToInt32 decQuadToInt32 66 #define decFloatToInt32Exact decQuadToInt32Exact 67 #define decFloatToPacked decQuadToPacked 68 #define decFloatToString decQuadToString 69 #define decFloatToUInt32 decQuadToUInt32 70 #define decFloatToUInt32Exact decQuadToUInt32Exact 71 #define decFloatToWider decQuadToWider 72 #define decFloatZero decQuadZero 73 74 /* Computational (result is a decFloat) */ 75 #define decFloatAbs decQuadAbs 76 #define decFloatAdd decQuadAdd 77 #define decFloatAnd decQuadAnd 78 #define decFloatDivide decQuadDivide 79 #define decFloatDivideInteger decQuadDivideInteger 80 #define decFloatFMA decQuadFMA 81 #define decFloatInvert decQuadInvert 82 #define decFloatLogB decQuadLogB 83 #define decFloatMax decQuadMax 84 #define decFloatMaxMag decQuadMaxMag 85 #define decFloatMin decQuadMin 86 #define decFloatMinMag decQuadMinMag 87 #define decFloatMinus decQuadMinus 88 #define decFloatMultiply decQuadMultiply 89 #define decFloatNextMinus decQuadNextMinus 90 #define decFloatNextPlus decQuadNextPlus 91 #define decFloatNextToward decQuadNextToward 92 #define decFloatOr decQuadOr 93 #define decFloatPlus decQuadPlus 94 #define decFloatQuantize decQuadQuantize 95 #define decFloatReduce decQuadReduce 96 #define decFloatRemainder decQuadRemainder 97 #define decFloatRemainderNear decQuadRemainderNear 98 #define decFloatRotate decQuadRotate 99 #define decFloatScaleB decQuadScaleB 100 #define decFloatShift decQuadShift 101 #define decFloatSubtract decQuadSubtract 102 #define decFloatToIntegralValue decQuadToIntegralValue 103 #define decFloatToIntegralExact decQuadToIntegralExact 104 #define decFloatXor decQuadXor 105 106 /* Comparisons */ 107 #define decFloatCompare decQuadCompare 108 #define decFloatCompareSignal decQuadCompareSignal 109 #define decFloatCompareTotal decQuadCompareTotal 110 #define decFloatCompareTotalMag decQuadCompareTotalMag 111 112 /* Copies */ 113 #define decFloatCanonical decQuadCanonical 114 #define decFloatCopy decQuadCopy 115 #define decFloatCopyAbs decQuadCopyAbs 116 #define decFloatCopyNegate decQuadCopyNegate 117 #define decFloatCopySign decQuadCopySign 118 119 /* Non-computational */ 120 #define decFloatClass decQuadClass 121 #define decFloatClassString decQuadClassString 122 #define decFloatDigits decQuadDigits 123 #define decFloatIsCanonical decQuadIsCanonical 124 #define decFloatIsFinite decQuadIsFinite 125 #define decFloatIsInfinite decQuadIsInfinite 126 #define decFloatIsInteger decQuadIsInteger 127 #define decFloatIsNaN decQuadIsNaN 128 #define decFloatIsNormal decQuadIsNormal 129 #define decFloatIsSignaling decQuadIsSignaling 130 #define decFloatIsSignalling decQuadIsSignalling 131 #define decFloatIsSigned decQuadIsSigned 132 #define decFloatIsSubnormal decQuadIsSubnormal 133 #define decFloatIsZero decQuadIsZero 134 #define decFloatRadix decQuadRadix 135 #define decFloatSameQuantum decQuadSameQuantum 136 #define decFloatVersion decQuadVersion 137 138 #include "decNumberLocal.h" /* local includes (need DECPMAX) */ 139 #include "decCommon.c" /* non-arithmetic decFloat routines */ 140 #include "decBasic.c" /* basic formats routines */ 141 142