OSDN Git Service

* c-pragma.c (pending_weak_d, pending_weak): New.
[pf3gnuchains/gcc-fork.git] / libdecnumber / decDouble.c
index ba6a0af..9af8e15 100644 (file)
@@ -1,32 +1,27 @@
 /* decDouble module for the decNumber C Library.
 /* decDouble module for the decNumber C Library.
-   Copyright (C) 2007 Free Software Foundation, Inc.
+   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
    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 2, or (at your option) any later
+   Software Foundation; either version 3, or (at your option) any later
    version.
 
    version.
 
-   In addition to the permissions in the GNU General Public License,
-   the Free Software Foundation gives you unlimited permission to link
-   the compiled version of this file into combinations with other
-   programs, and to distribute those combinations without any
-   restriction coming from the use of this file.  (The General Public
-   License restrictions do apply in other respects; for example, they
-   cover modification of the file, and distribution when not linked
-   into a combine executable.)
-
    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.
 
    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.
 
-   You should have received a copy of the GNU General Public License
-   along with GCC; see the file COPYING.  If not, write to the Free
-   Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
-   02110-1301, USA.  */
+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                        */
 
 /* ------------------------------------------------------------------ */
 /* decDouble.c -- decDouble operations module                        */
 /* This module comprises decDouble operations (including conversions) */
 /* ------------------------------------------------------------------ */
 
 /* This module comprises decDouble operations (including conversions) */
 /* ------------------------------------------------------------------ */
 
-#include "decContext.h"              /* public includes */
+#include "decContext.h"       /* public includes */
 #include "decDouble.h"       /* .. */
 
 /* Constant mappings for shared code */
 #include "decDouble.h"       /* .. */
 
 /* Constant mappings for shared code */
-#define DECPMAX            DECDOUBLE_Pmax
-#define DECEMIN            DECDOUBLE_Emin
-#define DECEMAX            DECDOUBLE_Emax
+#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 DECEMAXD    DECDOUBLE_EmaxD
 #define DECBYTES    DECDOUBLE_Bytes
 #define DECSTRING   DECDOUBLE_String
 #define DECECONL    DECDOUBLE_EconL
-#define DECBIAS            DECDOUBLE_Bias
-#define DECLETS            DECDOUBLE_Declets
+#define DECBIAS     DECDOUBLE_Bias
+#define DECLETS     DECDOUBLE_Declets
 #define DECQTINY    (-DECDOUBLE_Bias)
 /* parameters of next-wider format */
 #define DECWBYTES   DECQUAD_Bytes
 #define DECQTINY    (-DECDOUBLE_Bias)
 /* parameters of next-wider format */
 #define DECWBYTES   DECQUAD_Bytes
 #define DECWBIAS    DECQUAD_Bias
 
 /* Type and function mappings for shared code */
 #define DECWBIAS    DECQUAD_Bias
 
 /* Type and function mappings for shared code */
-#define decFloat              decDouble          /* Type name */
-#define decFloatWider         decQuad            /* Type name */
+#define decFloat                  decDouble      /* Type name */
+#define decFloatWider             decQuad        /* Type name */
 
 /* Utilities and conversions (binary results, extractors, etc.) */
 
 /* 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
+#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) */
 
 /* 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
+#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 */
 
 /* Comparisons */
-#define decFloatCompare                decDoubleCompare
-#define decFloatCompareSignal  decDoubleCompareSignal
-#define decFloatCompareTotal   decDoubleCompareTotal
-#define decFloatCompareTotalMag decDoubleCompareTotalMag
+#define decFloatCompare           decDoubleCompare
+#define decFloatCompareSignal     decDoubleCompareSignal
+#define decFloatCompareTotal      decDoubleCompareTotal
+#define decFloatCompareTotalMag    decDoubleCompareTotalMag
 
 /* Copies */
 
 /* Copies */
-#define decFloatCanonical      decDoubleCanonical
-#define decFloatCopy           decDoubleCopy
-#define decFloatCopyAbs                decDoubleCopyAbs
-#define decFloatCopyNegate     decDoubleCopyNegate
-#define decFloatCopySign       decDoubleCopySign
+#define decFloatCanonical         decDoubleCanonical
+#define decFloatCopy              decDoubleCopy
+#define decFloatCopyAbs           decDoubleCopyAbs
+#define decFloatCopyNegate        decDoubleCopyNegate
+#define decFloatCopySign          decDoubleCopySign
 
 /* Non-computational */
 
 /* 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
-
+#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 */
 
 
 #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 */
-