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

/* Below here will move to shared file as completed */

