1/* decDouble module for the decNumber C Library.
2   Copyright (C) 2007-2015 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
17Under Section 7 of GPL version 3, you are granted additional
18permissions described in the GCC Runtime Library Exception, version
193.1, as published by the Free Software Foundation.
20
21You should have received a copy of the GNU General Public License and
22a copy of the GCC Runtime Library Exception along with this program;
23see 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