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