aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.4.3/libdecnumber/decQuad.c
blob: 6e2224889c6c8b8db9205b7c3f3030623c17ad4f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
/* 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 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 */