github.com/matrixorigin/matrixone@v0.7.0/cgo/external/decNumber/decQuad.c (about)

     1  /* ------------------------------------------------------------------ */
     2  /* decQuad.c -- decQuad 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 decQuad operations (including conversions)   */
    20  /* ------------------------------------------------------------------ */
    21  
    22  
    23  /* Constant mappings for shared code */
    24  #define DECPMAX     DECQUAD_Pmax
    25  #define DECEMIN     DECQUAD_Emin
    26  #define DECEMAX     DECQUAD_Emax
    27  #define DECEMAXD    DECQUAD_EmaxD
    28  #define DECBYTES    DECQUAD_Bytes
    29  #define DECSTRING   DECQUAD_String
    30  #define DECECONL    DECQUAD_EconL
    31  #define DECBIAS     DECQUAD_Bias
    32  #define DECLETS     DECQUAD_Declets
    33  #define DECQTINY   (-DECQUAD_Bias)
    34  
    35  /* Type and function mappings for shared code */
    36  #define decFloat                   decQuad        // Type name
    37  
    38  // Utilities and conversions (binary results, extractors, etc.)
    39  #define decFloatFromBCD            decQuadFromBCD
    40  #define decFloatFromInt32          decQuadFromInt32
    41  #define decFloatFromPacked         decQuadFromPacked
    42  #define decFloatFromPackedChecked  decQuadFromPackedChecked
    43  #define decFloatFromString         decQuadFromString
    44  #define decFloatFromUInt32         decQuadFromUInt32
    45  #define decFloatFromWider          decQuadFromWider
    46  #define decFloatGetCoefficient     decQuadGetCoefficient
    47  #define decFloatGetExponent        decQuadGetExponent
    48  #define decFloatSetCoefficient     decQuadSetCoefficient
    49  #define decFloatSetExponent        decQuadSetExponent
    50  #define decFloatShow               decQuadShow
    51  #define decFloatToBCD              decQuadToBCD
    52  #define decFloatToEngString        decQuadToEngString
    53  #define decFloatToInt32            decQuadToInt32
    54  #define decFloatToInt32Exact       decQuadToInt32Exact
    55  #define decFloatToPacked           decQuadToPacked
    56  #define decFloatToString           decQuadToString
    57  #define decFloatToUInt32           decQuadToUInt32
    58  #define decFloatToUInt32Exact      decQuadToUInt32Exact
    59  #define decFloatToWider            decQuadToWider
    60  #define decFloatZero               decQuadZero
    61  
    62  // Computational (result is a decFloat)
    63  #define decFloatAbs                decQuadAbs
    64  #define decFloatAdd                decQuadAdd
    65  #define decFloatAnd                decQuadAnd
    66  #define decFloatDivide             decQuadDivide
    67  #define decFloatDivideInteger      decQuadDivideInteger
    68  #define decFloatFMA                decQuadFMA
    69  #define decFloatInvert             decQuadInvert
    70  #define decFloatLogB               decQuadLogB
    71  #define decFloatMax                decQuadMax
    72  #define decFloatMaxMag             decQuadMaxMag
    73  #define decFloatMin                decQuadMin
    74  #define decFloatMinMag             decQuadMinMag
    75  #define decFloatMinus              decQuadMinus
    76  #define decFloatMultiply           decQuadMultiply
    77  #define decFloatNextMinus          decQuadNextMinus
    78  #define decFloatNextPlus           decQuadNextPlus
    79  #define decFloatNextToward         decQuadNextToward
    80  #define decFloatOr                 decQuadOr
    81  #define decFloatPlus               decQuadPlus
    82  #define decFloatQuantize           decQuadQuantize
    83  #define decFloatReduce             decQuadReduce
    84  #define decFloatRemainder          decQuadRemainder
    85  #define decFloatRemainderNear      decQuadRemainderNear
    86  #define decFloatRotate             decQuadRotate
    87  #define decFloatScaleB             decQuadScaleB
    88  #define decFloatShift              decQuadShift
    89  #define decFloatSubtract           decQuadSubtract
    90  #define decFloatToIntegralValue    decQuadToIntegralValue
    91  #define decFloatToIntegralExact    decQuadToIntegralExact
    92  #define decFloatXor                decQuadXor
    93  
    94  // Comparisons
    95  #define decFloatCompare            decQuadCompare
    96  #define decFloatCompareSignal      decQuadCompareSignal
    97  #define decFloatCompareTotal       decQuadCompareTotal
    98  #define decFloatCompareTotalMag    decQuadCompareTotalMag
    99  
   100  // Copies
   101  #define decFloatCanonical          decQuadCanonical
   102  #define decFloatCopy               decQuadCopy
   103  #define decFloatCopyAbs            decQuadCopyAbs
   104  #define decFloatCopyNegate         decQuadCopyNegate
   105  #define decFloatCopySign           decQuadCopySign
   106  
   107  // Non-computational
   108  #define decFloatClass              decQuadClass
   109  #define decFloatClassString        decQuadClassString
   110  #define decFloatDigits             decQuadDigits
   111  #define decFloatIsCanonical        decQuadIsCanonical
   112  #define decFloatIsFinite           decQuadIsFinite
   113  #define decFloatIsInfinite         decQuadIsInfinite
   114  #define decFloatIsInteger          decQuadIsInteger
   115  #define decFloatIsLogical          decQuadIsLogical
   116  #define decFloatIsNaN              decQuadIsNaN
   117  #define decFloatIsNegative         decQuadIsNegative
   118  #define decFloatIsNormal           decQuadIsNormal
   119  #define decFloatIsPositive         decQuadIsPositive
   120  #define decFloatIsSignaling        decQuadIsSignaling
   121  #define decFloatIsSignalling       decQuadIsSignalling
   122  #define decFloatIsSigned           decQuadIsSigned
   123  #define decFloatIsSubnormal        decQuadIsSubnormal
   124  #define decFloatIsZero             decQuadIsZero
   125  #define decFloatRadix              decQuadRadix
   126  #define decFloatSameQuantum        decQuadSameQuantum
   127  #define decFloatVersion            decQuadVersion
   128  
   129  /* And now the code itself */
   130  #include "decContext.h"       // public includes
   131  #include "decQuad.h"          // ..
   132  #include "decNumberLocal.h"   // local includes (need DECPMAX)
   133  #include "decCommon.c"        // non-arithmetic decFloat routines
   134  #include "decBasic.c"         // basic formats routines
   135