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

