1 /* decDouble module for the decNumber C Library.
2 Copyright (C) 2007 Free Software Foundation, Inc.
3 Contributed by IBM Corporation. Author Mike Cowlishaw.
5 This file is part of GCC.
7 GCC is free software; you can redistribute it and/or modify it under
8 the terms of the GNU General Public License as published by the Free
9 Software Foundation; either version 2, or (at your option) any later
12 In addition to the permissions in the GNU General Public License,
13 the Free Software Foundation gives you unlimited permission to link
14 the compiled version of this file into combinations with other
15 programs, and to distribute those combinations without any
16 restriction coming from the use of this file. (The General Public
17 License restrictions do apply in other respects; for example, they
18 cover modification of the file, and distribution when not linked
19 into a combine executable.)
21 GCC is distributed in the hope that it will be useful, but WITHOUT ANY
22 WARRANTY; without even the implied warranty of MERCHANTABILITY or
23 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
26 You should have received a copy of the GNU General Public License
27 along with GCC; see the file COPYING. If not, write to the Free
28 Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
31 /* ------------------------------------------------------------------ */
32 /* decDouble.c -- decDouble operations module */
33 /* ------------------------------------------------------------------ */
34 /* This module comprises decDouble operations (including conversions) */
35 /* ------------------------------------------------------------------ */
37 #include "decContext.h" /* public includes */
38 #include "decDouble.h" /* .. */
40 /* Constant mappings for shared code */
41 #define DECPMAX DECDOUBLE_Pmax
42 #define DECEMIN DECDOUBLE_Emin
43 #define DECEMAX DECDOUBLE_Emax
44 #define DECEMAXD DECDOUBLE_EmaxD
45 #define DECBYTES DECDOUBLE_Bytes
46 #define DECSTRING DECDOUBLE_String
47 #define DECECONL DECDOUBLE_EconL
48 #define DECBIAS DECDOUBLE_Bias
49 #define DECLETS DECDOUBLE_Declets
50 #define DECQTINY (-DECDOUBLE_Bias)
51 /* parameters of next-wider format */
52 #define DECWBYTES DECQUAD_Bytes
53 #define DECWPMAX DECQUAD_Pmax
54 #define DECWECONL DECQUAD_EconL
55 #define DECWBIAS DECQUAD_Bias
57 /* Type and function mappings for shared code */
58 #define decFloat decDouble /* Type name */
59 #define decFloatWider decQuad /* Type name */
61 /* Utilities and conversions (binary results, extractors, etc.) */
62 #define decFloatFromBCD decDoubleFromBCD
63 #define decFloatFromInt32 decDoubleFromInt32
64 #define decFloatFromPacked decDoubleFromPacked
65 #define decFloatFromString decDoubleFromString
66 #define decFloatFromUInt32 decDoubleFromUInt32
67 #define decFloatFromWider decDoubleFromWider
68 #define decFloatGetCoefficient decDoubleGetCoefficient
69 #define decFloatGetExponent decDoubleGetExponent
70 #define decFloatSetCoefficient decDoubleSetCoefficient
71 #define decFloatSetExponent decDoubleSetExponent
72 #define decFloatShow decDoubleShow
73 #define decFloatToBCD decDoubleToBCD
74 #define decFloatToEngString decDoubleToEngString
75 #define decFloatToInt32 decDoubleToInt32
76 #define decFloatToInt32Exact decDoubleToInt32Exact
77 #define decFloatToPacked decDoubleToPacked
78 #define decFloatToString decDoubleToString
79 #define decFloatToUInt32 decDoubleToUInt32
80 #define decFloatToUInt32Exact decDoubleToUInt32Exact
81 #define decFloatToWider decDoubleToWider
82 #define decFloatZero decDoubleZero
84 /* Computational (result is a decFloat) */
85 #define decFloatAbs decDoubleAbs
86 #define decFloatAdd decDoubleAdd
87 #define decFloatAnd decDoubleAnd
88 #define decFloatDivide decDoubleDivide
89 #define decFloatDivideInteger decDoubleDivideInteger
90 #define decFloatFMA decDoubleFMA
91 #define decFloatInvert decDoubleInvert
92 #define decFloatLogB decDoubleLogB
93 #define decFloatMax decDoubleMax
94 #define decFloatMaxMag decDoubleMaxMag
95 #define decFloatMin decDoubleMin
96 #define decFloatMinMag decDoubleMinMag
97 #define decFloatMinus decDoubleMinus
98 #define decFloatMultiply decDoubleMultiply
99 #define decFloatNextMinus decDoubleNextMinus
100 #define decFloatNextPlus decDoubleNextPlus
101 #define decFloatNextToward decDoubleNextToward
102 #define decFloatOr decDoubleOr
103 #define decFloatPlus decDoublePlus
104 #define decFloatQuantize decDoubleQuantize
105 #define decFloatReduce decDoubleReduce
106 #define decFloatRemainder decDoubleRemainder
107 #define decFloatRemainderNear decDoubleRemainderNear
108 #define decFloatRotate decDoubleRotate
109 #define decFloatScaleB decDoubleScaleB
110 #define decFloatShift decDoubleShift
111 #define decFloatSubtract decDoubleSubtract
112 #define decFloatToIntegralValue decDoubleToIntegralValue
113 #define decFloatToIntegralExact decDoubleToIntegralExact
114 #define decFloatXor decDoubleXor
117 #define decFloatCompare decDoubleCompare
118 #define decFloatCompareSignal decDoubleCompareSignal
119 #define decFloatCompareTotal decDoubleCompareTotal
120 #define decFloatCompareTotalMag decDoubleCompareTotalMag
123 #define decFloatCanonical decDoubleCanonical
124 #define decFloatCopy decDoubleCopy
125 #define decFloatCopyAbs decDoubleCopyAbs
126 #define decFloatCopyNegate decDoubleCopyNegate
127 #define decFloatCopySign decDoubleCopySign
129 /* Non-computational */
130 #define decFloatClass decDoubleClass
131 #define decFloatClassString decDoubleClassString
132 #define decFloatDigits decDoubleDigits
133 #define decFloatIsCanonical decDoubleIsCanonical
134 #define decFloatIsFinite decDoubleIsFinite
135 #define decFloatIsInfinite decDoubleIsInfinite
136 #define decFloatIsInteger decDoubleIsInteger
137 #define decFloatIsNaN decDoubleIsNaN
138 #define decFloatIsNormal decDoubleIsNormal
139 #define decFloatIsSignaling decDoubleIsSignaling
140 #define decFloatIsSignalling decDoubleIsSignalling
141 #define decFloatIsSigned decDoubleIsSigned
142 #define decFloatIsSubnormal decDoubleIsSubnormal
143 #define decFloatIsZero decDoubleIsZero
144 #define decFloatRadix decDoubleRadix
145 #define decFloatSameQuantum decDoubleSameQuantum
146 #define decFloatVersion decDoubleVersion
149 #include "decNumberLocal.h" /* local includes (need DECPMAX) */
150 #include "decCommon.c" /* non-arithmetic decFloat routines */
151 #include "decBasic.c" /* basic formats routines */
153 /* Below here will move to shared file as completed */