Blame libdecnumber/decDouble.c

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