xref: /utopia/UTPA2-700.0.x/projects/tools/lint/mips-linux-gnu_include/bits/mathcalls.h (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1*53ee8cc1Swenshuai.xi /* Prototype declarations for math functions; helper file for <math.h>.
2*53ee8cc1Swenshuai.xi    Copyright (C) 1996-2002, 2003, 2006 Free Software Foundation, Inc.
3*53ee8cc1Swenshuai.xi    This file is part of the GNU C Library.
4*53ee8cc1Swenshuai.xi 
5*53ee8cc1Swenshuai.xi    The GNU C Library is free software; you can redistribute it and/or
6*53ee8cc1Swenshuai.xi    modify it under the terms of the GNU Lesser General Public
7*53ee8cc1Swenshuai.xi    License as published by the Free Software Foundation; either
8*53ee8cc1Swenshuai.xi    version 2.1 of the License, or (at your option) any later version.
9*53ee8cc1Swenshuai.xi 
10*53ee8cc1Swenshuai.xi    The GNU C Library is distributed in the hope that it will be useful,
11*53ee8cc1Swenshuai.xi    but WITHOUT ANY WARRANTY; without even the implied warranty of
12*53ee8cc1Swenshuai.xi    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13*53ee8cc1Swenshuai.xi    Lesser General Public License for more details.
14*53ee8cc1Swenshuai.xi 
15*53ee8cc1Swenshuai.xi    You should have received a copy of the GNU Lesser General Public
16*53ee8cc1Swenshuai.xi    License along with the GNU C Library; if not, write to the Free
17*53ee8cc1Swenshuai.xi    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
18*53ee8cc1Swenshuai.xi    02111-1307 USA.  */
19*53ee8cc1Swenshuai.xi 
20*53ee8cc1Swenshuai.xi /* NOTE: Because of the special way this file is used by <math.h>, this
21*53ee8cc1Swenshuai.xi    file must NOT be protected from multiple inclusion as header files
22*53ee8cc1Swenshuai.xi    usually are.
23*53ee8cc1Swenshuai.xi 
24*53ee8cc1Swenshuai.xi    This file provides prototype declarations for the math functions.
25*53ee8cc1Swenshuai.xi    Most functions are declared using the macro:
26*53ee8cc1Swenshuai.xi 
27*53ee8cc1Swenshuai.xi    __MATHCALL (NAME,[_r], (ARGS...));
28*53ee8cc1Swenshuai.xi 
29*53ee8cc1Swenshuai.xi    This means there is a function `NAME' returning `double' and a function
30*53ee8cc1Swenshuai.xi    `NAMEf' returning `float'.  Each place `_Mdouble_' appears in the
31*53ee8cc1Swenshuai.xi    prototype, that is actually `double' in the prototype for `NAME' and
32*53ee8cc1Swenshuai.xi    `float' in the prototype for `NAMEf'.  Reentrant variant functions are
33*53ee8cc1Swenshuai.xi    called `NAME_r' and `NAMEf_r'.
34*53ee8cc1Swenshuai.xi 
35*53ee8cc1Swenshuai.xi    Functions returning other types like `int' are declared using the macro:
36*53ee8cc1Swenshuai.xi 
37*53ee8cc1Swenshuai.xi    __MATHDECL (TYPE, NAME,[_r], (ARGS...));
38*53ee8cc1Swenshuai.xi 
39*53ee8cc1Swenshuai.xi    This is just like __MATHCALL but for a function returning `TYPE'
40*53ee8cc1Swenshuai.xi    instead of `_Mdouble_'.  In all of these cases, there is still
41*53ee8cc1Swenshuai.xi    both a `NAME' and a `NAMEf' that takes `float' arguments.
42*53ee8cc1Swenshuai.xi 
43*53ee8cc1Swenshuai.xi    Note that there must be no whitespace before the argument passed for
44*53ee8cc1Swenshuai.xi    NAME, to make token pasting work with -traditional.  */
45*53ee8cc1Swenshuai.xi 
46*53ee8cc1Swenshuai.xi #ifndef _MATH_H
47*53ee8cc1Swenshuai.xi # error "Never include <bits/mathcalls.h> directly; include <math.h> instead."
48*53ee8cc1Swenshuai.xi #endif
49*53ee8cc1Swenshuai.xi 
50*53ee8cc1Swenshuai.xi 
51*53ee8cc1Swenshuai.xi /* Trigonometric functions.  */
52*53ee8cc1Swenshuai.xi 
53*53ee8cc1Swenshuai.xi _Mdouble_BEGIN_NAMESPACE
54*53ee8cc1Swenshuai.xi /* Arc cosine of X.  */
55*53ee8cc1Swenshuai.xi __MATHCALL (acos,, (_Mdouble_ __x));
56*53ee8cc1Swenshuai.xi /* Arc sine of X.  */
57*53ee8cc1Swenshuai.xi __MATHCALL (asin,, (_Mdouble_ __x));
58*53ee8cc1Swenshuai.xi /* Arc tangent of X.  */
59*53ee8cc1Swenshuai.xi __MATHCALL (atan,, (_Mdouble_ __x));
60*53ee8cc1Swenshuai.xi /* Arc tangent of Y/X.  */
61*53ee8cc1Swenshuai.xi __MATHCALL (atan2,, (_Mdouble_ __y, _Mdouble_ __x));
62*53ee8cc1Swenshuai.xi 
63*53ee8cc1Swenshuai.xi /* Cosine of X.  */
64*53ee8cc1Swenshuai.xi __MATHCALL (cos,, (_Mdouble_ __x));
65*53ee8cc1Swenshuai.xi /* Sine of X.  */
66*53ee8cc1Swenshuai.xi __MATHCALL (sin,, (_Mdouble_ __x));
67*53ee8cc1Swenshuai.xi /* Tangent of X.  */
68*53ee8cc1Swenshuai.xi __MATHCALL (tan,, (_Mdouble_ __x));
69*53ee8cc1Swenshuai.xi 
70*53ee8cc1Swenshuai.xi /* Hyperbolic functions.  */
71*53ee8cc1Swenshuai.xi 
72*53ee8cc1Swenshuai.xi /* Hyperbolic cosine of X.  */
73*53ee8cc1Swenshuai.xi __MATHCALL (cosh,, (_Mdouble_ __x));
74*53ee8cc1Swenshuai.xi /* Hyperbolic sine of X.  */
75*53ee8cc1Swenshuai.xi __MATHCALL (sinh,, (_Mdouble_ __x));
76*53ee8cc1Swenshuai.xi /* Hyperbolic tangent of X.  */
77*53ee8cc1Swenshuai.xi __MATHCALL (tanh,, (_Mdouble_ __x));
78*53ee8cc1Swenshuai.xi _Mdouble_END_NAMESPACE
79*53ee8cc1Swenshuai.xi 
80*53ee8cc1Swenshuai.xi #ifdef __USE_GNU
81*53ee8cc1Swenshuai.xi /* Cosine and sine of X.  */
82*53ee8cc1Swenshuai.xi __MATHDECL (void,sincos,,
83*53ee8cc1Swenshuai.xi 	    (_Mdouble_ __x, _Mdouble_ *__sinx, _Mdouble_ *__cosx));
84*53ee8cc1Swenshuai.xi #endif
85*53ee8cc1Swenshuai.xi 
86*53ee8cc1Swenshuai.xi #if defined __USE_MISC || defined __USE_XOPEN_EXTENDED || defined __USE_ISOC99
87*53ee8cc1Swenshuai.xi __BEGIN_NAMESPACE_C99
88*53ee8cc1Swenshuai.xi /* Hyperbolic arc cosine of X.  */
89*53ee8cc1Swenshuai.xi __MATHCALL (acosh,, (_Mdouble_ __x));
90*53ee8cc1Swenshuai.xi /* Hyperbolic arc sine of X.  */
91*53ee8cc1Swenshuai.xi __MATHCALL (asinh,, (_Mdouble_ __x));
92*53ee8cc1Swenshuai.xi /* Hyperbolic arc tangent of X.  */
93*53ee8cc1Swenshuai.xi __MATHCALL (atanh,, (_Mdouble_ __x));
94*53ee8cc1Swenshuai.xi __END_NAMESPACE_C99
95*53ee8cc1Swenshuai.xi #endif
96*53ee8cc1Swenshuai.xi 
97*53ee8cc1Swenshuai.xi /* Exponential and logarithmic functions.  */
98*53ee8cc1Swenshuai.xi 
99*53ee8cc1Swenshuai.xi _Mdouble_BEGIN_NAMESPACE
100*53ee8cc1Swenshuai.xi /* Exponential function of X.  */
101*53ee8cc1Swenshuai.xi __MATHCALL (exp,, (_Mdouble_ __x));
102*53ee8cc1Swenshuai.xi 
103*53ee8cc1Swenshuai.xi /* Break VALUE into a normalized fraction and an integral power of 2.  */
104*53ee8cc1Swenshuai.xi __MATHCALL (frexp,, (_Mdouble_ __x, int *__exponent));
105*53ee8cc1Swenshuai.xi 
106*53ee8cc1Swenshuai.xi /* X times (two to the EXP power).  */
107*53ee8cc1Swenshuai.xi __MATHCALL (ldexp,, (_Mdouble_ __x, int __exponent));
108*53ee8cc1Swenshuai.xi 
109*53ee8cc1Swenshuai.xi /* Natural logarithm of X.  */
110*53ee8cc1Swenshuai.xi __MATHCALL (log,, (_Mdouble_ __x));
111*53ee8cc1Swenshuai.xi 
112*53ee8cc1Swenshuai.xi /* Base-ten logarithm of X.  */
113*53ee8cc1Swenshuai.xi __MATHCALL (log10,, (_Mdouble_ __x));
114*53ee8cc1Swenshuai.xi 
115*53ee8cc1Swenshuai.xi /* Break VALUE into integral and fractional parts.  */
116*53ee8cc1Swenshuai.xi __MATHCALL (modf,, (_Mdouble_ __x, _Mdouble_ *__iptr));
117*53ee8cc1Swenshuai.xi _Mdouble_END_NAMESPACE
118*53ee8cc1Swenshuai.xi 
119*53ee8cc1Swenshuai.xi #ifdef __USE_GNU
120*53ee8cc1Swenshuai.xi /* A function missing in all standards: compute exponent to base ten.  */
121*53ee8cc1Swenshuai.xi __MATHCALL (exp10,, (_Mdouble_ __x));
122*53ee8cc1Swenshuai.xi /* Another name occasionally used.  */
123*53ee8cc1Swenshuai.xi __MATHCALL (pow10,, (_Mdouble_ __x));
124*53ee8cc1Swenshuai.xi #endif
125*53ee8cc1Swenshuai.xi 
126*53ee8cc1Swenshuai.xi #if defined __USE_MISC || defined __USE_XOPEN_EXTENDED || defined __USE_ISOC99
127*53ee8cc1Swenshuai.xi __BEGIN_NAMESPACE_C99
128*53ee8cc1Swenshuai.xi /* Return exp(X) - 1.  */
129*53ee8cc1Swenshuai.xi __MATHCALL (expm1,, (_Mdouble_ __x));
130*53ee8cc1Swenshuai.xi 
131*53ee8cc1Swenshuai.xi /* Return log(1 + X).  */
132*53ee8cc1Swenshuai.xi __MATHCALL (log1p,, (_Mdouble_ __x));
133*53ee8cc1Swenshuai.xi 
134*53ee8cc1Swenshuai.xi /* Return the base 2 signed integral exponent of X.  */
135*53ee8cc1Swenshuai.xi __MATHCALL (logb,, (_Mdouble_ __x));
136*53ee8cc1Swenshuai.xi __END_NAMESPACE_C99
137*53ee8cc1Swenshuai.xi #endif
138*53ee8cc1Swenshuai.xi 
139*53ee8cc1Swenshuai.xi #ifdef __USE_ISOC99
140*53ee8cc1Swenshuai.xi __BEGIN_NAMESPACE_C99
141*53ee8cc1Swenshuai.xi /* Compute base-2 exponential of X.  */
142*53ee8cc1Swenshuai.xi __MATHCALL (exp2,, (_Mdouble_ __x));
143*53ee8cc1Swenshuai.xi 
144*53ee8cc1Swenshuai.xi /* Compute base-2 logarithm of X.  */
145*53ee8cc1Swenshuai.xi __MATHCALL (log2,, (_Mdouble_ __x));
146*53ee8cc1Swenshuai.xi __END_NAMESPACE_C99
147*53ee8cc1Swenshuai.xi #endif
148*53ee8cc1Swenshuai.xi 
149*53ee8cc1Swenshuai.xi 
150*53ee8cc1Swenshuai.xi /* Power functions.  */
151*53ee8cc1Swenshuai.xi 
152*53ee8cc1Swenshuai.xi _Mdouble_BEGIN_NAMESPACE
153*53ee8cc1Swenshuai.xi /* Return X to the Y power.  */
154*53ee8cc1Swenshuai.xi __MATHCALL (pow,, (_Mdouble_ __x, _Mdouble_ __y));
155*53ee8cc1Swenshuai.xi 
156*53ee8cc1Swenshuai.xi /* Return the square root of X.  */
157*53ee8cc1Swenshuai.xi __MATHCALL (sqrt,, (_Mdouble_ __x));
158*53ee8cc1Swenshuai.xi _Mdouble_END_NAMESPACE
159*53ee8cc1Swenshuai.xi 
160*53ee8cc1Swenshuai.xi #if defined __USE_MISC || defined __USE_XOPEN || defined __USE_ISOC99
161*53ee8cc1Swenshuai.xi __BEGIN_NAMESPACE_C99
162*53ee8cc1Swenshuai.xi /* Return `sqrt(X*X + Y*Y)'.  */
163*53ee8cc1Swenshuai.xi __MATHCALL (hypot,, (_Mdouble_ __x, _Mdouble_ __y));
164*53ee8cc1Swenshuai.xi __END_NAMESPACE_C99
165*53ee8cc1Swenshuai.xi #endif
166*53ee8cc1Swenshuai.xi 
167*53ee8cc1Swenshuai.xi #if defined __USE_MISC || defined __USE_XOPEN_EXTENDED || defined __USE_ISOC99
168*53ee8cc1Swenshuai.xi __BEGIN_NAMESPACE_C99
169*53ee8cc1Swenshuai.xi /* Return the cube root of X.  */
170*53ee8cc1Swenshuai.xi __MATHCALL (cbrt,, (_Mdouble_ __x));
171*53ee8cc1Swenshuai.xi __END_NAMESPACE_C99
172*53ee8cc1Swenshuai.xi #endif
173*53ee8cc1Swenshuai.xi 
174*53ee8cc1Swenshuai.xi 
175*53ee8cc1Swenshuai.xi /* Nearest integer, absolute value, and remainder functions.  */
176*53ee8cc1Swenshuai.xi 
177*53ee8cc1Swenshuai.xi _Mdouble_BEGIN_NAMESPACE
178*53ee8cc1Swenshuai.xi /* Smallest integral value not less than X.  */
179*53ee8cc1Swenshuai.xi __MATHCALLX (ceil,, (_Mdouble_ __x), (__const__));
180*53ee8cc1Swenshuai.xi 
181*53ee8cc1Swenshuai.xi /* Absolute value of X.  */
182*53ee8cc1Swenshuai.xi __MATHCALLX (fabs,, (_Mdouble_ __x), (__const__));
183*53ee8cc1Swenshuai.xi 
184*53ee8cc1Swenshuai.xi /* Largest integer not greater than X.  */
185*53ee8cc1Swenshuai.xi __MATHCALLX (floor,, (_Mdouble_ __x), (__const__));
186*53ee8cc1Swenshuai.xi 
187*53ee8cc1Swenshuai.xi /* Floating-point modulo remainder of X/Y.  */
188*53ee8cc1Swenshuai.xi __MATHCALL (fmod,, (_Mdouble_ __x, _Mdouble_ __y));
189*53ee8cc1Swenshuai.xi 
190*53ee8cc1Swenshuai.xi 
191*53ee8cc1Swenshuai.xi /* Return 0 if VALUE is finite or NaN, +1 if it
192*53ee8cc1Swenshuai.xi    is +Infinity, -1 if it is -Infinity.  */
193*53ee8cc1Swenshuai.xi __MATHDECL_1 (int,__isinf,, (_Mdouble_ __value)) __attribute__ ((__const__));
194*53ee8cc1Swenshuai.xi 
195*53ee8cc1Swenshuai.xi /* Return nonzero if VALUE is finite and not NaN.  */
196*53ee8cc1Swenshuai.xi __MATHDECL_1 (int,__finite,, (_Mdouble_ __value)) __attribute__ ((__const__));
197*53ee8cc1Swenshuai.xi _Mdouble_END_NAMESPACE
198*53ee8cc1Swenshuai.xi 
199*53ee8cc1Swenshuai.xi #ifdef __USE_MISC
200*53ee8cc1Swenshuai.xi /* Return 0 if VALUE is finite or NaN, +1 if it
201*53ee8cc1Swenshuai.xi    is +Infinity, -1 if it is -Infinity.  */
202*53ee8cc1Swenshuai.xi __MATHDECL_1 (int,isinf,, (_Mdouble_ __value)) __attribute__ ((__const__));
203*53ee8cc1Swenshuai.xi 
204*53ee8cc1Swenshuai.xi /* Return nonzero if VALUE is finite and not NaN.  */
205*53ee8cc1Swenshuai.xi __MATHDECL_1 (int,finite,, (_Mdouble_ __value)) __attribute__ ((__const__));
206*53ee8cc1Swenshuai.xi 
207*53ee8cc1Swenshuai.xi /* Return the remainder of X/Y.  */
208*53ee8cc1Swenshuai.xi __MATHCALL (drem,, (_Mdouble_ __x, _Mdouble_ __y));
209*53ee8cc1Swenshuai.xi 
210*53ee8cc1Swenshuai.xi 
211*53ee8cc1Swenshuai.xi /* Return the fractional part of X after dividing out `ilogb (X)'.  */
212*53ee8cc1Swenshuai.xi __MATHCALL (significand,, (_Mdouble_ __x));
213*53ee8cc1Swenshuai.xi #endif /* Use misc.  */
214*53ee8cc1Swenshuai.xi 
215*53ee8cc1Swenshuai.xi #if defined __USE_MISC || defined __USE_ISOC99
216*53ee8cc1Swenshuai.xi __BEGIN_NAMESPACE_C99
217*53ee8cc1Swenshuai.xi /* Return X with its signed changed to Y's.  */
218*53ee8cc1Swenshuai.xi __MATHCALLX (copysign,, (_Mdouble_ __x, _Mdouble_ __y), (__const__));
219*53ee8cc1Swenshuai.xi __END_NAMESPACE_C99
220*53ee8cc1Swenshuai.xi #endif
221*53ee8cc1Swenshuai.xi 
222*53ee8cc1Swenshuai.xi #ifdef __USE_ISOC99
223*53ee8cc1Swenshuai.xi __BEGIN_NAMESPACE_C99
224*53ee8cc1Swenshuai.xi /* Return representation of NaN for double type.  */
225*53ee8cc1Swenshuai.xi __MATHCALLX (nan,, (__const char *__tagb), (__const__));
226*53ee8cc1Swenshuai.xi __END_NAMESPACE_C99
227*53ee8cc1Swenshuai.xi #endif
228*53ee8cc1Swenshuai.xi 
229*53ee8cc1Swenshuai.xi 
230*53ee8cc1Swenshuai.xi /* Return nonzero if VALUE is not a number.  */
231*53ee8cc1Swenshuai.xi __MATHDECL_1 (int,__isnan,, (_Mdouble_ __value)) __attribute__ ((__const__));
232*53ee8cc1Swenshuai.xi 
233*53ee8cc1Swenshuai.xi #if defined __USE_MISC || defined __USE_XOPEN
234*53ee8cc1Swenshuai.xi /* Return nonzero if VALUE is not a number.  */
235*53ee8cc1Swenshuai.xi __MATHDECL_1 (int,isnan,, (_Mdouble_ __value)) __attribute__ ((__const__));
236*53ee8cc1Swenshuai.xi 
237*53ee8cc1Swenshuai.xi /* Bessel functions.  */
238*53ee8cc1Swenshuai.xi __MATHCALL (j0,, (_Mdouble_));
239*53ee8cc1Swenshuai.xi __MATHCALL (j1,, (_Mdouble_));
240*53ee8cc1Swenshuai.xi __MATHCALL (jn,, (int, _Mdouble_));
241*53ee8cc1Swenshuai.xi __MATHCALL (y0,, (_Mdouble_));
242*53ee8cc1Swenshuai.xi __MATHCALL (y1,, (_Mdouble_));
243*53ee8cc1Swenshuai.xi __MATHCALL (yn,, (int, _Mdouble_));
244*53ee8cc1Swenshuai.xi #endif
245*53ee8cc1Swenshuai.xi 
246*53ee8cc1Swenshuai.xi 
247*53ee8cc1Swenshuai.xi #if defined __USE_MISC || defined __USE_XOPEN || defined __USE_ISOC99
248*53ee8cc1Swenshuai.xi __BEGIN_NAMESPACE_C99
249*53ee8cc1Swenshuai.xi /* Error and gamma functions.  */
250*53ee8cc1Swenshuai.xi __MATHCALL (erf,, (_Mdouble_));
251*53ee8cc1Swenshuai.xi __MATHCALL (erfc,, (_Mdouble_));
252*53ee8cc1Swenshuai.xi __MATHCALL (lgamma,, (_Mdouble_));
253*53ee8cc1Swenshuai.xi __END_NAMESPACE_C99
254*53ee8cc1Swenshuai.xi #endif
255*53ee8cc1Swenshuai.xi 
256*53ee8cc1Swenshuai.xi #ifdef __USE_ISOC99
257*53ee8cc1Swenshuai.xi __BEGIN_NAMESPACE_C99
258*53ee8cc1Swenshuai.xi /* True gamma function.  */
259*53ee8cc1Swenshuai.xi __MATHCALL (tgamma,, (_Mdouble_));
260*53ee8cc1Swenshuai.xi __END_NAMESPACE_C99
261*53ee8cc1Swenshuai.xi #endif
262*53ee8cc1Swenshuai.xi 
263*53ee8cc1Swenshuai.xi #if defined __USE_MISC || defined __USE_XOPEN
264*53ee8cc1Swenshuai.xi /* Obsolete alias for `lgamma'.  */
265*53ee8cc1Swenshuai.xi __MATHCALL (gamma,, (_Mdouble_));
266*53ee8cc1Swenshuai.xi #endif
267*53ee8cc1Swenshuai.xi 
268*53ee8cc1Swenshuai.xi #ifdef __USE_MISC
269*53ee8cc1Swenshuai.xi /* Reentrant version of lgamma.  This function uses the global variable
270*53ee8cc1Swenshuai.xi    `signgam'.  The reentrant version instead takes a pointer and stores
271*53ee8cc1Swenshuai.xi    the value through it.  */
272*53ee8cc1Swenshuai.xi __MATHCALL (lgamma,_r, (_Mdouble_, int *__signgamp));
273*53ee8cc1Swenshuai.xi #endif
274*53ee8cc1Swenshuai.xi 
275*53ee8cc1Swenshuai.xi 
276*53ee8cc1Swenshuai.xi #if defined __USE_MISC || defined __USE_XOPEN_EXTENDED || defined __USE_ISOC99
277*53ee8cc1Swenshuai.xi __BEGIN_NAMESPACE_C99
278*53ee8cc1Swenshuai.xi /* Return the integer nearest X in the direction of the
279*53ee8cc1Swenshuai.xi    prevailing rounding mode.  */
280*53ee8cc1Swenshuai.xi __MATHCALL (rint,, (_Mdouble_ __x));
281*53ee8cc1Swenshuai.xi 
282*53ee8cc1Swenshuai.xi /* Return X + epsilon if X < Y, X - epsilon if X > Y.  */
283*53ee8cc1Swenshuai.xi __MATHCALLX (nextafter,, (_Mdouble_ __x, _Mdouble_ __y), (__const__));
284*53ee8cc1Swenshuai.xi # if defined __USE_ISOC99 && !defined __LDBL_COMPAT
285*53ee8cc1Swenshuai.xi __MATHCALLX (nexttoward,, (_Mdouble_ __x, long double __y), (__const__));
286*53ee8cc1Swenshuai.xi # endif
287*53ee8cc1Swenshuai.xi 
288*53ee8cc1Swenshuai.xi /* Return the remainder of integer divison X / Y with infinite precision.  */
289*53ee8cc1Swenshuai.xi __MATHCALL (remainder,, (_Mdouble_ __x, _Mdouble_ __y));
290*53ee8cc1Swenshuai.xi 
291*53ee8cc1Swenshuai.xi # if defined __USE_MISC || defined __USE_ISOC99
292*53ee8cc1Swenshuai.xi /* Return X times (2 to the Nth power).  */
293*53ee8cc1Swenshuai.xi __MATHCALL (scalbn,, (_Mdouble_ __x, int __n));
294*53ee8cc1Swenshuai.xi # endif
295*53ee8cc1Swenshuai.xi 
296*53ee8cc1Swenshuai.xi /* Return the binary exponent of X, which must be nonzero.  */
297*53ee8cc1Swenshuai.xi __MATHDECL (int,ilogb,, (_Mdouble_ __x));
298*53ee8cc1Swenshuai.xi #endif
299*53ee8cc1Swenshuai.xi 
300*53ee8cc1Swenshuai.xi #ifdef __USE_ISOC99
301*53ee8cc1Swenshuai.xi /* Return X times (2 to the Nth power).  */
302*53ee8cc1Swenshuai.xi __MATHCALL (scalbln,, (_Mdouble_ __x, long int __n));
303*53ee8cc1Swenshuai.xi 
304*53ee8cc1Swenshuai.xi /* Round X to integral value in floating-point format using current
305*53ee8cc1Swenshuai.xi    rounding direction, but do not raise inexact exception.  */
306*53ee8cc1Swenshuai.xi __MATHCALL (nearbyint,, (_Mdouble_ __x));
307*53ee8cc1Swenshuai.xi 
308*53ee8cc1Swenshuai.xi /* Round X to nearest integral value, rounding halfway cases away from
309*53ee8cc1Swenshuai.xi    zero.  */
310*53ee8cc1Swenshuai.xi __MATHCALLX (round,, (_Mdouble_ __x), (__const__));
311*53ee8cc1Swenshuai.xi 
312*53ee8cc1Swenshuai.xi /* Round X to the integral value in floating-point format nearest but
313*53ee8cc1Swenshuai.xi    not larger in magnitude.  */
314*53ee8cc1Swenshuai.xi __MATHCALLX (trunc,, (_Mdouble_ __x), (__const__));
315*53ee8cc1Swenshuai.xi 
316*53ee8cc1Swenshuai.xi /* Compute remainder of X and Y and put in *QUO a value with sign of x/y
317*53ee8cc1Swenshuai.xi    and magnitude congruent `mod 2^n' to the magnitude of the integral
318*53ee8cc1Swenshuai.xi    quotient x/y, with n >= 3.  */
319*53ee8cc1Swenshuai.xi __MATHCALL (remquo,, (_Mdouble_ __x, _Mdouble_ __y, int *__quo));
320*53ee8cc1Swenshuai.xi 
321*53ee8cc1Swenshuai.xi 
322*53ee8cc1Swenshuai.xi /* Conversion functions.  */
323*53ee8cc1Swenshuai.xi 
324*53ee8cc1Swenshuai.xi /* Round X to nearest integral value according to current rounding
325*53ee8cc1Swenshuai.xi    direction.  */
326*53ee8cc1Swenshuai.xi __MATHDECL (long int,lrint,, (_Mdouble_ __x));
327*53ee8cc1Swenshuai.xi __MATHDECL (long long int,llrint,, (_Mdouble_ __x));
328*53ee8cc1Swenshuai.xi 
329*53ee8cc1Swenshuai.xi /* Round X to nearest integral value, rounding halfway cases away from
330*53ee8cc1Swenshuai.xi    zero.  */
331*53ee8cc1Swenshuai.xi __MATHDECL (long int,lround,, (_Mdouble_ __x));
332*53ee8cc1Swenshuai.xi __MATHDECL (long long int,llround,, (_Mdouble_ __x));
333*53ee8cc1Swenshuai.xi 
334*53ee8cc1Swenshuai.xi 
335*53ee8cc1Swenshuai.xi /* Return positive difference between X and Y.  */
336*53ee8cc1Swenshuai.xi __MATHCALL (fdim,, (_Mdouble_ __x, _Mdouble_ __y));
337*53ee8cc1Swenshuai.xi 
338*53ee8cc1Swenshuai.xi /* Return maximum numeric value from X and Y.  */
339*53ee8cc1Swenshuai.xi __MATHCALL (fmax,, (_Mdouble_ __x, _Mdouble_ __y));
340*53ee8cc1Swenshuai.xi 
341*53ee8cc1Swenshuai.xi /* Return minimum numeric value from X and Y.  */
342*53ee8cc1Swenshuai.xi __MATHCALL (fmin,, (_Mdouble_ __x, _Mdouble_ __y));
343*53ee8cc1Swenshuai.xi 
344*53ee8cc1Swenshuai.xi 
345*53ee8cc1Swenshuai.xi /* Classify given number.  */
346*53ee8cc1Swenshuai.xi __MATHDECL_1 (int, __fpclassify,, (_Mdouble_ __value))
347*53ee8cc1Swenshuai.xi      __attribute__ ((__const__));
348*53ee8cc1Swenshuai.xi 
349*53ee8cc1Swenshuai.xi /* Test for negative number.  */
350*53ee8cc1Swenshuai.xi __MATHDECL_1 (int, __signbit,, (_Mdouble_ __value))
351*53ee8cc1Swenshuai.xi      __attribute__ ((__const__));
352*53ee8cc1Swenshuai.xi 
353*53ee8cc1Swenshuai.xi 
354*53ee8cc1Swenshuai.xi /* Multiply-add function computed as a ternary operation.  */
355*53ee8cc1Swenshuai.xi __MATHCALL (fma,, (_Mdouble_ __x, _Mdouble_ __y, _Mdouble_ __z));
356*53ee8cc1Swenshuai.xi #endif /* Use ISO C99.  */
357*53ee8cc1Swenshuai.xi 
358*53ee8cc1Swenshuai.xi #if defined __USE_MISC || defined __USE_XOPEN_EXTENDED || defined __USE_ISOC99
359*53ee8cc1Swenshuai.xi __END_NAMESPACE_C99
360*53ee8cc1Swenshuai.xi #endif
361*53ee8cc1Swenshuai.xi 
362*53ee8cc1Swenshuai.xi #if defined __USE_MISC || defined __USE_XOPEN_EXTENDED
363*53ee8cc1Swenshuai.xi /* Return X times (2 to the Nth power).  */
364*53ee8cc1Swenshuai.xi __MATHCALL (scalb,, (_Mdouble_ __x, _Mdouble_ __n));
365*53ee8cc1Swenshuai.xi #endif
366