| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- /* ------------------------------------------------------------------ */
- /* decQuad.c -- decQuad operations module */
- /* ------------------------------------------------------------------ */
- /* Copyright (c) IBM Corporation, 2000, 2010. All rights reserved. */
- /* */
- /* This software is made available under the terms of the */
- /* ICU License -- ICU 1.8.1 and later. */
- /* */
- /* The description and User's Guide ("The decNumber C Library") for */
- /* this software is included in the package as decNumber.pdf. This */
- /* document is also available in HTML, together with specifications, */
- /* testcases, and Web links, on the General Decimal Arithmetic page. */
- /* */
- /* Please send comments, suggestions, and corrections to the author: */
- /* [email protected] */
- /* Mike Cowlishaw, IBM Fellow */
- /* IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK */
- /* ------------------------------------------------------------------ */
- /* This module comprises decQuad operations (including conversions) */
- /* ------------------------------------------------------------------ */
- /* 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 decFloatIsLogical decQuadIsLogical
- #define decFloatIsNaN decQuadIsNaN
- #define decFloatIsNegative decQuadIsNegative
- #define decFloatIsNormal decQuadIsNormal
- #define decFloatIsPositive decQuadIsPositive
- #define decFloatIsSignaling decQuadIsSignaling
- #define decFloatIsSignalling decQuadIsSignalling
- #define decFloatIsSigned decQuadIsSigned
- #define decFloatIsSubnormal decQuadIsSubnormal
- #define decFloatIsZero decQuadIsZero
- #define decFloatRadix decQuadRadix
- #define decFloatSameQuantum decQuadSameQuantum
- #define decFloatVersion decQuadVersion
- /* And now the code itself */
- #include "decContext.h" // public includes
- #include "decQuad.h" // ..
- #include "decNumberLocal.h" // local includes (need DECPMAX)
- #include "decCommon.c" // non-arithmetic decFloat routines
- #include "decBasic.c" // basic formats routines
|