/* decDouble module for the decNumber C Library.
   Copyright (C) 2007-2018 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 */

