1 /* decDouble module for the decNumber C Library.
2    Copyright (C) 2007-2013 Free Software Foundation, Inc.
3    Contributed by IBM Corporation.  Author Mike Cowlishaw.
4 
5    This file is part of GCC.
6 
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 3, or (at your option) any later
10    version.
11 
12    GCC is distributed in the hope that it will be useful, but WITHOUT ANY
13    WARRANTY; without even the implied warranty of MERCHANTABILITY or
14    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
15    for more details.
16 
17 Under Section 7 of GPL version 3, you are granted additional
18 permissions described in the GCC Runtime Library Exception, version
19 3.1, as published by the Free Software Foundation.
20 
21 You should have received a copy of the GNU General Public License and
22 a copy of the GCC Runtime Library Exception along with this program;
23 see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
24 <http://www.gnu.org/licenses/>.  */
25 
26 /* ------------------------------------------------------------------ */
27 /* decDouble.c -- decDouble operations module			      */
28 /* ------------------------------------------------------------------ */
29 /* This module comprises decDouble operations (including conversions) */
30 /* ------------------------------------------------------------------ */
31 
32 #include "decContext.h"       /* public includes */
33 #include "decDouble.h"	      /* .. */
34 
35 /* Constant mappings for shared code */
36 #define DECPMAX     DECDOUBLE_Pmax
37 #define DECEMIN     DECDOUBLE_Emin
38 #define DECEMAX     DECDOUBLE_Emax
39 #define DECEMAXD    DECDOUBLE_EmaxD
40 #define DECBYTES    DECDOUBLE_Bytes
41 #define DECSTRING   DECDOUBLE_String
42 #define DECECONL    DECDOUBLE_EconL
43 #define DECBIAS     DECDOUBLE_Bias
44 #define DECLETS     DECDOUBLE_Declets
45 #define DECQTINY    (-DECDOUBLE_Bias)
46 /* parameters of next-wider format */
47 #define DECWBYTES   DECQUAD_Bytes
48 #define DECWPMAX    DECQUAD_Pmax
49 #define DECWECONL   DECQUAD_EconL
50 #define DECWBIAS    DECQUAD_Bias
51 
52 /* Type and function mappings for shared code */
53 #define decFloat		   decDouble	  /* Type name */
54 #define decFloatWider		   decQuad	  /* Type name */
55 
56 /* Utilities and conversions (binary results, extractors, etc.) */
57 #define decFloatFromBCD 	   decDoubleFromBCD
58 #define decFloatFromInt32	   decDoubleFromInt32
59 #define decFloatFromPacked	   decDoubleFromPacked
60 #define decFloatFromPackedChecked  decDoubleFromPackedChecked
61 #define decFloatFromString	   decDoubleFromString
62 #define decFloatFromUInt32	   decDoubleFromUInt32
63 #define decFloatFromWider	   decDoubleFromWider
64 #define decFloatGetCoefficient	   decDoubleGetCoefficient
65 #define decFloatGetExponent	   decDoubleGetExponent
66 #define decFloatSetCoefficient	   decDoubleSetCoefficient
67 #define decFloatSetExponent	   decDoubleSetExponent
68 #define decFloatShow		   decDoubleShow
69 #define decFloatToBCD		   decDoubleToBCD
70 #define decFloatToEngString	   decDoubleToEngString
71 #define decFloatToInt32 	   decDoubleToInt32
72 #define decFloatToInt32Exact	   decDoubleToInt32Exact
73 #define decFloatToPacked	   decDoubleToPacked
74 #define decFloatToString	   decDoubleToString
75 #define decFloatToUInt32	   decDoubleToUInt32
76 #define decFloatToUInt32Exact	   decDoubleToUInt32Exact
77 #define decFloatToWider 	   decDoubleToWider
78 #define decFloatZero		   decDoubleZero
79 
80 /* Computational (result is a decFloat) */
81 #define decFloatAbs		   decDoubleAbs
82 #define decFloatAdd		   decDoubleAdd
83 #define decFloatAnd		   decDoubleAnd
84 #define decFloatDivide		   decDoubleDivide
85 #define decFloatDivideInteger	   decDoubleDivideInteger
86 #define decFloatFMA		   decDoubleFMA
87 #define decFloatInvert		   decDoubleInvert
88 #define decFloatLogB		   decDoubleLogB
89 #define decFloatMax		   decDoubleMax
90 #define decFloatMaxMag		   decDoubleMaxMag
91 #define decFloatMin		   decDoubleMin
92 #define decFloatMinMag		   decDoubleMinMag
93 #define decFloatMinus		   decDoubleMinus
94 #define decFloatMultiply	   decDoubleMultiply
95 #define decFloatNextMinus	   decDoubleNextMinus
96 #define decFloatNextPlus	   decDoubleNextPlus
97 #define decFloatNextToward	   decDoubleNextToward
98 #define decFloatOr		   decDoubleOr
99 #define decFloatPlus		   decDoublePlus
100 #define decFloatQuantize	   decDoubleQuantize
101 #define decFloatReduce		   decDoubleReduce
102 #define decFloatRemainder	   decDoubleRemainder
103 #define decFloatRemainderNear	   decDoubleRemainderNear
104 #define decFloatRotate		   decDoubleRotate
105 #define decFloatScaleB		   decDoubleScaleB
106 #define decFloatShift		   decDoubleShift
107 #define decFloatSubtract	   decDoubleSubtract
108 #define decFloatToIntegralValue    decDoubleToIntegralValue
109 #define decFloatToIntegralExact    decDoubleToIntegralExact
110 #define decFloatXor		   decDoubleXor
111 
112 /* Comparisons */
113 #define decFloatCompare 	   decDoubleCompare
114 #define decFloatCompareSignal	   decDoubleCompareSignal
115 #define decFloatCompareTotal	   decDoubleCompareTotal
116 #define decFloatCompareTotalMag    decDoubleCompareTotalMag
117 
118 /* Copies */
119 #define decFloatCanonical	   decDoubleCanonical
120 #define decFloatCopy		   decDoubleCopy
121 #define decFloatCopyAbs 	   decDoubleCopyAbs
122 #define decFloatCopyNegate	   decDoubleCopyNegate
123 #define decFloatCopySign	   decDoubleCopySign
124 
125 /* Non-computational */
126 #define decFloatClass		   decDoubleClass
127 #define decFloatClassString	   decDoubleClassString
128 #define decFloatDigits		   decDoubleDigits
129 #define decFloatIsCanonical	   decDoubleIsCanonical
130 #define decFloatIsFinite	   decDoubleIsFinite
131 #define decFloatIsInfinite	   decDoubleIsInfinite
132 #define decFloatIsInteger	   decDoubleIsInteger
133 #define decFloatIsNaN		   decDoubleIsNaN
134 #define decFloatIsNormal	   decDoubleIsNormal
135 #define decFloatIsSignaling	   decDoubleIsSignaling
136 #define decFloatIsSignalling	   decDoubleIsSignalling
137 #define decFloatIsSigned	   decDoubleIsSigned
138 #define decFloatIsSubnormal	   decDoubleIsSubnormal
139 #define decFloatIsZero		   decDoubleIsZero
140 #define decFloatRadix		   decDoubleRadix
141 #define decFloatSameQuantum	   decDoubleSameQuantum
142 #define decFloatVersion 	   decDoubleVersion
143 
144 #include "decNumberLocal.h"   /* local includes (need DECPMAX) */
145 #include "decCommon.c"	      /* non-arithmetic decFloat routines */
146 #include "decBasic.c"	      /* basic formats routines */
147 
148