decQuad.c 6.4 KB

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