|  | /* decDouble module for the decNumber C Library. | 
|  | Copyright (C) 2007-2016 Free Software Foundation, Inc. | 
|  | Contributed by IBM Corporation.  Author Mike Cowlishaw. | 
|  |  | 
|  | This file is part of GCC. | 
|  |  | 
|  | GCC is free software; you can redistribute it and/or modify it under | 
|  | the terms of the GNU General Public License as published by the Free | 
|  | Software Foundation; either version 3, or (at your option) any later | 
|  | version. | 
|  |  | 
|  | GCC is distributed in the hope that it will be useful, but WITHOUT ANY | 
|  | WARRANTY; without even the implied warranty of MERCHANTABILITY or | 
|  | FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License | 
|  | for more details. | 
|  |  | 
|  | Under Section 7 of GPL version 3, you are granted additional | 
|  | permissions described in the GCC Runtime Library Exception, version | 
|  | 3.1, as published by the Free Software Foundation. | 
|  |  | 
|  | You should have received a copy of the GNU General Public License and | 
|  | a copy of the GCC Runtime Library Exception along with this program; | 
|  | see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see | 
|  | <http://www.gnu.org/licenses/>.  */ | 
|  |  | 
|  | /* ------------------------------------------------------------------ */ | 
|  | /* decDouble.c -- decDouble operations module			      */ | 
|  | /* ------------------------------------------------------------------ */ | 
|  | /* This module comprises decDouble operations (including conversions) */ | 
|  | /* ------------------------------------------------------------------ */ | 
|  |  | 
|  | #include "decContext.h"       /* public includes */ | 
|  | #include "decDouble.h"	      /* .. */ | 
|  |  | 
|  | /* Constant mappings for shared code */ | 
|  | #define DECPMAX     DECDOUBLE_Pmax | 
|  | #define DECEMIN     DECDOUBLE_Emin | 
|  | #define DECEMAX     DECDOUBLE_Emax | 
|  | #define DECEMAXD    DECDOUBLE_EmaxD | 
|  | #define DECBYTES    DECDOUBLE_Bytes | 
|  | #define DECSTRING   DECDOUBLE_String | 
|  | #define DECECONL    DECDOUBLE_EconL | 
|  | #define DECBIAS     DECDOUBLE_Bias | 
|  | #define DECLETS     DECDOUBLE_Declets | 
|  | #define DECQTINY    (-DECDOUBLE_Bias) | 
|  | /* parameters of next-wider format */ | 
|  | #define DECWBYTES   DECQUAD_Bytes | 
|  | #define DECWPMAX    DECQUAD_Pmax | 
|  | #define DECWECONL   DECQUAD_EconL | 
|  | #define DECWBIAS    DECQUAD_Bias | 
|  |  | 
|  | /* Type and function mappings for shared code */ | 
|  | #define decFloat		   decDouble	  /* Type name */ | 
|  | #define decFloatWider		   decQuad	  /* Type name */ | 
|  |  | 
|  | /* Utilities and conversions (binary results, extractors, etc.) */ | 
|  | #define decFloatFromBCD 	   decDoubleFromBCD | 
|  | #define decFloatFromInt32	   decDoubleFromInt32 | 
|  | #define decFloatFromPacked	   decDoubleFromPacked | 
|  | #define decFloatFromPackedChecked  decDoubleFromPackedChecked | 
|  | #define decFloatFromString	   decDoubleFromString | 
|  | #define decFloatFromUInt32	   decDoubleFromUInt32 | 
|  | #define decFloatFromWider	   decDoubleFromWider | 
|  | #define decFloatGetCoefficient	   decDoubleGetCoefficient | 
|  | #define decFloatGetExponent	   decDoubleGetExponent | 
|  | #define decFloatSetCoefficient	   decDoubleSetCoefficient | 
|  | #define decFloatSetExponent	   decDoubleSetExponent | 
|  | #define decFloatShow		   decDoubleShow | 
|  | #define decFloatToBCD		   decDoubleToBCD | 
|  | #define decFloatToEngString	   decDoubleToEngString | 
|  | #define decFloatToInt32 	   decDoubleToInt32 | 
|  | #define decFloatToInt32Exact	   decDoubleToInt32Exact | 
|  | #define decFloatToPacked	   decDoubleToPacked | 
|  | #define decFloatToString	   decDoubleToString | 
|  | #define decFloatToUInt32	   decDoubleToUInt32 | 
|  | #define decFloatToUInt32Exact	   decDoubleToUInt32Exact | 
|  | #define decFloatToWider 	   decDoubleToWider | 
|  | #define decFloatZero		   decDoubleZero | 
|  |  | 
|  | /* Computational (result is a decFloat) */ | 
|  | #define decFloatAbs		   decDoubleAbs | 
|  | #define decFloatAdd		   decDoubleAdd | 
|  | #define decFloatAnd		   decDoubleAnd | 
|  | #define decFloatDivide		   decDoubleDivide | 
|  | #define decFloatDivideInteger	   decDoubleDivideInteger | 
|  | #define decFloatFMA		   decDoubleFMA | 
|  | #define decFloatInvert		   decDoubleInvert | 
|  | #define decFloatLogB		   decDoubleLogB | 
|  | #define decFloatMax		   decDoubleMax | 
|  | #define decFloatMaxMag		   decDoubleMaxMag | 
|  | #define decFloatMin		   decDoubleMin | 
|  | #define decFloatMinMag		   decDoubleMinMag | 
|  | #define decFloatMinus		   decDoubleMinus | 
|  | #define decFloatMultiply	   decDoubleMultiply | 
|  | #define decFloatNextMinus	   decDoubleNextMinus | 
|  | #define decFloatNextPlus	   decDoubleNextPlus | 
|  | #define decFloatNextToward	   decDoubleNextToward | 
|  | #define decFloatOr		   decDoubleOr | 
|  | #define decFloatPlus		   decDoublePlus | 
|  | #define decFloatQuantize	   decDoubleQuantize | 
|  | #define decFloatReduce		   decDoubleReduce | 
|  | #define decFloatRemainder	   decDoubleRemainder | 
|  | #define decFloatRemainderNear	   decDoubleRemainderNear | 
|  | #define decFloatRotate		   decDoubleRotate | 
|  | #define decFloatScaleB		   decDoubleScaleB | 
|  | #define decFloatShift		   decDoubleShift | 
|  | #define decFloatSubtract	   decDoubleSubtract | 
|  | #define decFloatToIntegralValue    decDoubleToIntegralValue | 
|  | #define decFloatToIntegralExact    decDoubleToIntegralExact | 
|  | #define decFloatXor		   decDoubleXor | 
|  |  | 
|  | /* Comparisons */ | 
|  | #define decFloatCompare 	   decDoubleCompare | 
|  | #define decFloatCompareSignal	   decDoubleCompareSignal | 
|  | #define decFloatCompareTotal	   decDoubleCompareTotal | 
|  | #define decFloatCompareTotalMag    decDoubleCompareTotalMag | 
|  |  | 
|  | /* Copies */ | 
|  | #define decFloatCanonical	   decDoubleCanonical | 
|  | #define decFloatCopy		   decDoubleCopy | 
|  | #define decFloatCopyAbs 	   decDoubleCopyAbs | 
|  | #define decFloatCopyNegate	   decDoubleCopyNegate | 
|  | #define decFloatCopySign	   decDoubleCopySign | 
|  |  | 
|  | /* Non-computational */ | 
|  | #define decFloatClass		   decDoubleClass | 
|  | #define decFloatClassString	   decDoubleClassString | 
|  | #define decFloatDigits		   decDoubleDigits | 
|  | #define decFloatIsCanonical	   decDoubleIsCanonical | 
|  | #define decFloatIsFinite	   decDoubleIsFinite | 
|  | #define decFloatIsInfinite	   decDoubleIsInfinite | 
|  | #define decFloatIsInteger	   decDoubleIsInteger | 
|  | #define decFloatIsNaN		   decDoubleIsNaN | 
|  | #define decFloatIsNormal	   decDoubleIsNormal | 
|  | #define decFloatIsSignaling	   decDoubleIsSignaling | 
|  | #define decFloatIsSignalling	   decDoubleIsSignalling | 
|  | #define decFloatIsSigned	   decDoubleIsSigned | 
|  | #define decFloatIsSubnormal	   decDoubleIsSubnormal | 
|  | #define decFloatIsZero		   decDoubleIsZero | 
|  | #define decFloatRadix		   decDoubleRadix | 
|  | #define decFloatSameQuantum	   decDoubleSameQuantum | 
|  | #define decFloatVersion 	   decDoubleVersion | 
|  |  | 
|  | #include "decNumberLocal.h"   /* local includes (need DECPMAX) */ | 
|  | #include "decCommon.c"	      /* non-arithmetic decFloat routines */ | 
|  | #include "decBasic.c"	      /* basic formats routines */ | 
|  |  |