/* decQuad 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/>.  */

/* ------------------------------------------------------------------ */
/* decQuad.c -- decQuad operations module			      */
/* ------------------------------------------------------------------ */
/* This module comprises decQuad operations (including conversions)   */
/* ------------------------------------------------------------------ */

#include "decContext.h"       /* public includes */
#include "decQuad.h"	      /* .. */

/* Constant mappings for shared code */
#define DECPMAX     DECQUAD_Pmax
#define DECEMIN     DECQUAD_Emin
#define DECEMAX     DECQUAD_Emax
#define DECEMAXD    DECQUAD_EmaxD
#define DECBYTES    DECQUAD_Bytes
#define DECSTRING   DECQUAD_String
#define DECECONL    DECQUAD_EconL
#define DECBIAS     DECQUAD_Bias
#define DECLETS     DECQUAD_Declets
#define DECQTINY   (-DECQUAD_Bias)

/* Type and function mappings for shared code */
#define decFloat		   decQuad	  /* Type name */

/* Utilities and conversions (binary results, extractors, etc.) */
#define decFloatFromBCD 	   decQuadFromBCD
#define decFloatFromInt32	   decQuadFromInt32
#define decFloatFromPacked	   decQuadFromPacked
#define decFloatFromPackedChecked  decQuadFromPackedChecked
#define decFloatFromString	   decQuadFromString
#define decFloatFromUInt32	   decQuadFromUInt32
#define decFloatFromWider	   decQuadFromWider
#define decFloatGetCoefficient	   decQuadGetCoefficient
#define decFloatGetExponent	   decQuadGetExponent
#define decFloatSetCoefficient	   decQuadSetCoefficient
#define decFloatSetExponent	   decQuadSetExponent
#define decFloatShow		   decQuadShow
#define decFloatToBCD		   decQuadToBCD
#define decFloatToEngString	   decQuadToEngString
#define decFloatToInt32 	   decQuadToInt32
#define decFloatToInt32Exact	   decQuadToInt32Exact
#define decFloatToPacked	   decQuadToPacked
#define decFloatToString	   decQuadToString
#define decFloatToUInt32	   decQuadToUInt32
#define decFloatToUInt32Exact	   decQuadToUInt32Exact
#define decFloatToWider 	   decQuadToWider
#define decFloatZero		   decQuadZero

/* Computational (result is a decFloat) */
#define decFloatAbs		   decQuadAbs
#define decFloatAdd		   decQuadAdd
#define decFloatAnd		   decQuadAnd
#define decFloatDivide		   decQuadDivide
#define decFloatDivideInteger	   decQuadDivideInteger
#define decFloatFMA		   decQuadFMA
#define decFloatInvert		   decQuadInvert
#define decFloatLogB		   decQuadLogB
#define decFloatMax		   decQuadMax
#define decFloatMaxMag		   decQuadMaxMag
#define decFloatMin		   decQuadMin
#define decFloatMinMag		   decQuadMinMag
#define decFloatMinus		   decQuadMinus
#define decFloatMultiply	   decQuadMultiply
#define decFloatNextMinus	   decQuadNextMinus
#define decFloatNextPlus	   decQuadNextPlus
#define decFloatNextToward	   decQuadNextToward
#define decFloatOr		   decQuadOr
#define decFloatPlus		   decQuadPlus
#define decFloatQuantize	   decQuadQuantize
#define decFloatReduce		   decQuadReduce
#define decFloatRemainder	   decQuadRemainder
#define decFloatRemainderNear	   decQuadRemainderNear
#define decFloatRotate		   decQuadRotate
#define decFloatScaleB		   decQuadScaleB
#define decFloatShift		   decQuadShift
#define decFloatSubtract	   decQuadSubtract
#define decFloatToIntegralValue    decQuadToIntegralValue
#define decFloatToIntegralExact    decQuadToIntegralExact
#define decFloatXor		   decQuadXor

/* Comparisons */
#define decFloatCompare 	   decQuadCompare
#define decFloatCompareSignal	   decQuadCompareSignal
#define decFloatCompareTotal	   decQuadCompareTotal
#define decFloatCompareTotalMag    decQuadCompareTotalMag

/* Copies */
#define decFloatCanonical	   decQuadCanonical
#define decFloatCopy		   decQuadCopy
#define decFloatCopyAbs 	   decQuadCopyAbs
#define decFloatCopyNegate	   decQuadCopyNegate
#define decFloatCopySign	   decQuadCopySign

/* Non-computational */
#define decFloatClass		   decQuadClass
#define decFloatClassString	   decQuadClassString
#define decFloatDigits		   decQuadDigits
#define decFloatIsCanonical	   decQuadIsCanonical
#define decFloatIsFinite	   decQuadIsFinite
#define decFloatIsInfinite	   decQuadIsInfinite
#define decFloatIsInteger	   decQuadIsInteger
#define decFloatIsNaN		   decQuadIsNaN
#define decFloatIsNormal	   decQuadIsNormal
#define decFloatIsSignaling	   decQuadIsSignaling
#define decFloatIsSignalling	   decQuadIsSignalling
#define decFloatIsSigned	   decQuadIsSigned
#define decFloatIsSubnormal	   decQuadIsSubnormal
#define decFloatIsZero		   decQuadIsZero
#define decFloatRadix		   decQuadRadix
#define decFloatSameQuantum	   decQuadSameQuantum
#define decFloatVersion 	   decQuadVersion

#include "decNumberLocal.h"   /* local includes (need DECPMAX) */
#include "decCommon.c"	      /* non-arithmetic decFloat routines */
#include "decBasic.c"	      /* basic formats routines */

