github.com/matrixorigin/matrixone@v0.7.0/cgo/external/decNumber/decDouble.c (about) 1 /* ------------------------------------------------------------------ */ 2 /* decDouble.c -- decDouble operations module */ 3 /* ------------------------------------------------------------------ */ 4 /* Copyright (c) IBM Corporation, 2000, 2010. All rights reserved. */ 5 /* */ 6 /* This software is made available under the terms of the */ 7 /* ICU License -- ICU 1.8.1 and later. */ 8 /* */ 9 /* The description and User's Guide ("The decNumber C Library") for */ 10 /* this software is included in the package as decNumber.pdf. This */ 11 /* document is also available in HTML, together with specifications, */ 12 /* testcases, and Web links, on the General Decimal Arithmetic page. */ 13 /* */ 14 /* Please send comments, suggestions, and corrections to the author: */ 15 /* mfc@uk.ibm.com */ 16 /* Mike Cowlishaw, IBM Fellow */ 17 /* IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK */ 18 /* ------------------------------------------------------------------ */ 19 /* This module comprises decDouble operations (including conversions) */ 20 /* ------------------------------------------------------------------ */ 21 22 #include "decContext.h" // public includes 23 #include "decDouble.h" // .. 24 25 /* Constant mappings for shared code */ 26 #define DECPMAX DECDOUBLE_Pmax 27 #define DECEMIN DECDOUBLE_Emin 28 #define DECEMAX DECDOUBLE_Emax 29 #define DECEMAXD DECDOUBLE_EmaxD 30 #define DECBYTES DECDOUBLE_Bytes 31 #define DECSTRING DECDOUBLE_String 32 #define DECECONL DECDOUBLE_EconL 33 #define DECBIAS DECDOUBLE_Bias 34 #define DECLETS DECDOUBLE_Declets 35 #define DECQTINY (-DECDOUBLE_Bias) 36 // parameters of next-wider format 37 #define DECWBYTES DECQUAD_Bytes 38 #define DECWPMAX DECQUAD_Pmax 39 #define DECWECONL DECQUAD_EconL 40 #define DECWBIAS DECQUAD_Bias 41 42 /* Type and function mappings for shared code */ 43 #define decFloat decDouble // Type name 44 #define decFloatWider decQuad // Type name 45 46 // Utilities and conversions (binary results, extractors, etc.) 47 #define decFloatFromBCD decDoubleFromBCD 48 #define decFloatFromInt32 decDoubleFromInt32 49 #define decFloatFromPacked decDoubleFromPacked 50 #define decFloatFromPackedChecked decDoubleFromPackedChecked 51 #define decFloatFromString decDoubleFromString 52 #define decFloatFromUInt32 decDoubleFromUInt32 53 #define decFloatFromWider decDoubleFromWider 54 #define decFloatGetCoefficient decDoubleGetCoefficient 55 #define decFloatGetExponent decDoubleGetExponent 56 #define decFloatSetCoefficient decDoubleSetCoefficient 57 #define decFloatSetExponent decDoubleSetExponent 58 #define decFloatShow decDoubleShow 59 #define decFloatToBCD decDoubleToBCD 60 #define decFloatToEngString decDoubleToEngString 61 #define decFloatToInt32 decDoubleToInt32 62 #define decFloatToInt32Exact decDoubleToInt32Exact 63 #define decFloatToPacked decDoubleToPacked 64 #define decFloatToString decDoubleToString 65 #define decFloatToUInt32 decDoubleToUInt32 66 #define decFloatToUInt32Exact decDoubleToUInt32Exact 67 #define decFloatToWider decDoubleToWider 68 #define decFloatZero decDoubleZero 69 70 // Computational (result is a decFloat) 71 #define decFloatAbs decDoubleAbs 72 #define decFloatAdd decDoubleAdd 73 #define decFloatAnd decDoubleAnd 74 #define decFloatDivide decDoubleDivide 75 #define decFloatDivideInteger decDoubleDivideInteger 76 #define decFloatFMA decDoubleFMA 77 #define decFloatInvert decDoubleInvert 78 #define decFloatLogB decDoubleLogB 79 #define decFloatMax decDoubleMax 80 #define decFloatMaxMag decDoubleMaxMag 81 #define decFloatMin decDoubleMin 82 #define decFloatMinMag decDoubleMinMag 83 #define decFloatMinus decDoubleMinus 84 #define decFloatMultiply decDoubleMultiply 85 #define decFloatNextMinus decDoubleNextMinus 86 #define decFloatNextPlus decDoubleNextPlus 87 #define decFloatNextToward decDoubleNextToward 88 #define decFloatOr decDoubleOr 89 #define decFloatPlus decDoublePlus 90 #define decFloatQuantize decDoubleQuantize 91 #define decFloatReduce decDoubleReduce 92 #define decFloatRemainder decDoubleRemainder 93 #define decFloatRemainderNear decDoubleRemainderNear 94 #define decFloatRotate decDoubleRotate 95 #define decFloatScaleB decDoubleScaleB 96 #define decFloatShift decDoubleShift 97 #define decFloatSubtract decDoubleSubtract 98 #define decFloatToIntegralValue decDoubleToIntegralValue 99 #define decFloatToIntegralExact decDoubleToIntegralExact 100 #define decFloatXor decDoubleXor 101 102 // Comparisons 103 #define decFloatCompare decDoubleCompare 104 #define decFloatCompareSignal decDoubleCompareSignal 105 #define decFloatCompareTotal decDoubleCompareTotal 106 #define decFloatCompareTotalMag decDoubleCompareTotalMag 107 108 // Copies 109 #define decFloatCanonical decDoubleCanonical 110 #define decFloatCopy decDoubleCopy 111 #define decFloatCopyAbs decDoubleCopyAbs 112 #define decFloatCopyNegate decDoubleCopyNegate 113 #define decFloatCopySign decDoubleCopySign 114 115 // Non-computational 116 #define decFloatClass decDoubleClass 117 #define decFloatClassString decDoubleClassString 118 #define decFloatDigits decDoubleDigits 119 #define decFloatIsCanonical decDoubleIsCanonical 120 #define decFloatIsFinite decDoubleIsFinite 121 #define decFloatIsInfinite decDoubleIsInfinite 122 #define decFloatIsInteger decDoubleIsInteger 123 #define decFloatIsLogical decDoubleIsLogical 124 #define decFloatIsNaN decDoubleIsNaN 125 #define decFloatIsNegative decDoubleIsNegative 126 #define decFloatIsNormal decDoubleIsNormal 127 #define decFloatIsPositive decDoubleIsPositive 128 #define decFloatIsSignaling decDoubleIsSignaling 129 #define decFloatIsSignalling decDoubleIsSignalling 130 #define decFloatIsSigned decDoubleIsSigned 131 #define decFloatIsSubnormal decDoubleIsSubnormal 132 #define decFloatIsZero decDoubleIsZero 133 #define decFloatRadix decDoubleRadix 134 #define decFloatSameQuantum decDoubleSameQuantum 135 #define decFloatVersion decDoubleVersion 136 137 #include "decNumberLocal.h" // local includes (need DECPMAX) 138 #include "decCommon.c" // non-arithmetic decFloat routines 139 #include "decBasic.c" // basic formats routines 140