glibc/math/mathcalls.h
Ulrich Drepper 19361cb768 update from main archive 970129
1997-01-30 03:24  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/i386/elf/start.S (_start): Align stack pointer to
	double word boundary before pushing args for main.  This way we
	don't get penalties for misaligned memory accesses.  Reported by
	Edward Seidl <seidl@janed.com>.

	* Makefile: Correct *my* changes of Richards patch of 1997-01-28 10:51.
	Patch by HJ Lu.

	* misc/bsd-compat.c: Update copyright.
	* misc/efgcvt.c: Likewise.
	* misc/efgcvt_r.c: Likewise.
	* misc/error.c: Likewise.
	* misc/error.h: Likewise.
	* misc/fstab.c: Likewise.
	* misc/init-misc.c: Likewise.
	* misc/lsearch.c: Likewise.
	* misc/mntent.c: Likewise.
	* misc/qefgcvt.c: Likewise.
	* misc/qefgcvt_r.c: Likewise.
	* nss/databases.def: Likewise.
	* nss/db-Makefile: Likewise.
	* nss/ethers-lookup.c: Likewise.
	* nss/hosts-lookup.c: Likewise.
	* nss/netgrp-lookup.c: Likewise.
	* nss/nsswitch.h: Likewise.
	* nss/proto-lookup.c: Likewise.
	* nss/rpc-lookup.c: Likewise.
	* nss/service-lookup.c: Likewise.
	* nss/nss_db/db-netgrp.c: Likewise.
	* nss/nss_files/files-grp.c: Likewise.
	* nss/nss_files/files-hosts.c: Likewise.
	* nss/nss_files/files-network.c: Likewise.
	* nss/nss_files/files-proto.c: Likewise.
	* nss/nss_files/files-pwd.c: Likewise.
	* nss/nss_files/files-rpc.c: Likewise.
	* nss/nss_files/files-service.c: Likewise.
	* nss/nss_files/files-spwd.c: Likewise.
	* shadow/fgetspent.c: Likewise.
	* shadow/fgetspent_r.c: Likewise.
	* shadow/getspent.c: Likewise.
	* shadow/getspent_r.c: Likewise.
	* shadow/getspnam.c: Likewise.
	* shadow/getspnam_r.c: Likewise.
	* shadow/putspent.c: Likewise.
	* shadow/sgetspent.c: Likewise.
	* shadow/sgetspent_r.c: Likewise.
	* sysdeps/i386/init-first.c: Likewise.
	* sysdeps/unix/i386/sysdep.S: Likewise.

	* shadow/shadow.h: Don't use __USE_REENTRENT.  All code must be
	prepared to be running in a multi-threaded environment.  Change
	to __USE_MISC unless the function is defined in POSIX.1 (in this
	case also test for __USE_POSIX).
	* dirent/dirent.h: Likewise.
	* grp/grp.h: Likewise.
	* inet/aliases.h: Likewise.
	* libio/libio.h: Likewise.
	* libio/stdio.h: Likewise.
	* login/utmp.h: Likewise.
	* math/mathcalls.h: Likewise.
	* misc/mntent.h: Likewise.
	* pwd/pwd.h: Likewise.
	* resolv/netdb.h: Likewise.
	* stdlib/stdlib.h: Likewise.
	* string/string.h: Likewise.
	* sunrpc/rpc/netdb.h: Likewise.
	* sysdeps/generic/crypt.h: Likewise.
	* sysdeps/unix/sysv/linux/errnos.h: Likewise.
	* time/time.h: Likewise.

1997-01-30 00:27  Fila Kolodny  <fila@ibi.com>

	* sunrpc/Makefile (install-others): Add rpcsvc/bootparam_prot.h
	only if not cross compiling.

1997-01-29 16:16  Fila Kolodny  <fila@ibi.com>

	* sysdeps/posix/sigpause.c: Include <stddef.h> to get definition of
	NULL.
	* sysdeps/posix/sigwait.c: Likewise.

1997-01-28 23:42  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* Makeconfig ($(common-objpfx)config.make): Depend on
	$(..)config.make.in.
1997-01-30 04:09:36 +00:00

240 lines
7.2 KiB
C

/* Prototype declarations for math functions; helper file for <math.h>.
Copyright (C) 1996, 1997 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* NOTE: Because of the special way this file is used by <math.h>, this
file must NOT be protected from multiple inclusion as header files
usually are.
This file provides prototype declarations for the math functions.
Most functions are declared using the macro:
__MATHCALL (NAME,[_r], (ARGS...));
This means there is a function `NAME' returning `double' and a function
`NAMEf' returning `float'. Each place `_Mdouble_' appears in the
prototype, that is actually `double' in the prototype for `NAME' and
`float' in the prototype for `NAMEf'. Reentrant variant functions are
called `NAME_r' and `NAMEf_r'.
Functions returning other types like `int' are declared using the macro:
__MATHDECL (TYPE, NAME,[_r], (ARGS...));
This is just like __MATHCALL but for a function returning `TYPE'
instead of `_Mdouble_'. In all of these cases, there is still
both a `NAME' and a `NAMEf' that takes `float' arguments. */
#ifndef _MATH_H
#error "Never include mathcalls.h directly; include <math.h> instead."
#endif
/* Trigonometric functions. */
/* Arc cosine of X. */
__MATHCALL (acos,, (_Mdouble_ __x));
/* Arc sine of X. */
__MATHCALL (asin,, (_Mdouble_ __x));
/* Arc tangent of X. */
__MATHCALL (atan,, (_Mdouble_ __x));
/* Arc tangent of Y/X. */
__MATHCALL (atan2,, (_Mdouble_ __y, _Mdouble_ __x));
/* Cosine of X. */
__MATHCALL (cos,, (_Mdouble_ __x));
/* Sine of X. */
__MATHCALL (sin,, (_Mdouble_ __x));
/* Tangent of X. */
__MATHCALL (tan,, (_Mdouble_ __x));
/* Hyperbolic functions. */
/* Hyperbolic cosine of X. */
__MATHCALL (cosh,, (_Mdouble_ __x));
/* Hyperbolic sine of X. */
__MATHCALL (sinh,, (_Mdouble_ __x));
/* Hyperbolic tangent of X. */
__MATHCALL (tanh,, (_Mdouble_ __x));
#if defined(__USE_MISC) || defined(__USE_XOPEN_EXTENDED)
/* Hyperbolic arc cosine of X. */
__MATHCALL (acosh,, (_Mdouble_ __x));
/* Hyperbolic arc sine of X. */
__MATHCALL (asinh,, (_Mdouble_ __x));
/* Hyperbolic arc tangent of X. */
__MATHCALL (atanh,, (_Mdouble_ __x));
#endif
/* Exponential and logarithmic functions. */
/* Exponential function of X. */
__MATHCALL (exp,, (_Mdouble_ __x));
/* Break VALUE into a normalized fraction and an integral power of 2. */
__MATHCALL (frexp,, (_Mdouble_ __x, int *__exponent));
/* X times (two to the EXP power). */
__MATHCALL (ldexp,, (_Mdouble_ __x, int __exponent));
/* Natural logarithm of X. */
__MATHCALL (log,, (_Mdouble_ __x));
/* Base-ten logarithm of X. */
__MATHCALL (log10,, (_Mdouble_ __x));
#if defined(__USE_MISC) || defined(__USE_XOPEN_EXTENDED)
/* Return exp(X) - 1. */
__MATHCALL (expm1,, (_Mdouble_ __x));
/* Return log(1 + X). */
__MATHCALL (log1p,, (_Mdouble_ __x));
/* Return the base 2 signed integral exponent of X. */
__MATHCALL (logb,, (_Mdouble_ __x));
#endif
/* Break VALUE into integral and fractional parts. */
__MATHCALL (modf,, (_Mdouble_ __x, _Mdouble_ *__iptr));
/* Power functions. */
/* Return X to the Y power. */
__MATHCALL (pow,, (_Mdouble_ __x, _Mdouble_ __y));
/* Return the square root of X. */
__MATHCALL (sqrt,, (_Mdouble_ __x));
#if defined(__USE_MISC) || defined(__USE_XOPEN_EXTENDED)
/* Return the cube root of X. */
__MATHCALL (cbrt,, (_Mdouble_ __x));
#endif
/* Nearest integer, absolute value, and remainder functions. */
/* Smallest integral value not less than X. */
__MATHCALL (ceil,, (_Mdouble_ __x));
/* Absolute value of X. */
__MATHCALL (fabs,, (_Mdouble_ __x));
/* Largest integer not greater than X. */
__MATHCALL (floor,, (_Mdouble_ __x));
/* Floating-point modulo remainder of X/Y. */
__MATHCALL (fmod,, (_Mdouble_ __x, _Mdouble_ __y));
#ifdef __USE_MISC
/* Return 0 if VALUE is finite or NaN, +1 if it
is +Infinity, -1 if it is -Infinity. */
__MATHDECL (int, isinf,, (_Mdouble_ __value));
/* Return nonzero if VALUE is finite and not NaN. */
__MATHDECL (int, finite,, (_Mdouble_ __value));
/* Deal with an infinite or NaN result.
If ERROR is ERANGE, result is +Inf;
if ERROR is - ERANGE, result is -Inf;
otherwise result is NaN.
This will set `errno' to either ERANGE or EDOM,
and may return an infinity or NaN, or may do something else. */
__MATHCALL (infnan,, (int __error));
/* Return X with its signed changed to Y's. */
__MATHCALL (copysign,, (_Mdouble_ __x, _Mdouble_ __y));
/* Return X times (2 to the Nth power). */
__MATHCALL (scalbn,, (_Mdouble_ __x, int __n));
/* Return the remainder of X/Y. */
__MATHCALL (drem,, (_Mdouble_ __x, _Mdouble_ __y));
struct __MATH_PRECNAME(__cabs_complex,)
{
_Mdouble_ x, y;
};
/* Return `sqrt(X*X + Y*Y)'. */
__MATHCALL (cabs,, (struct __MATH_PRECNAME(__cabs_complex,)));
/* Return the fractional part of X after dividing out `ilogb (X)'. */
__MATHCALL (significand,, (_Mdouble_ __x));
#endif /* Use misc. */
#if defined(__USE_MISC) || defined(__USE_XOPEN)
/* Return nonzero if VALUE is not a number. */
__MATHDECL (int, isnan,, (_Mdouble_ __value));
/* Return the binary exponent of X, which must be nonzero. */
__MATHDECL (int, ilogb,, (_Mdouble_ __x));
/* Return `sqrt(X*X + Y*Y)'. */
__MATHCALL (hypot,, (_Mdouble_ __x, _Mdouble_ __y));
/* Error, gamma, and Bessel functions. */
__MATHCALL (erf,, (_Mdouble_));
__MATHCALL (erfc,, (_Mdouble_));
__MATHCALL (gamma,, (_Mdouble_));
__MATHCALL (j0,, (_Mdouble_));
__MATHCALL (j1,, (_Mdouble_));
__MATHCALL (jn,, (int, _Mdouble_));
__MATHCALL (lgamma,, (_Mdouble_));
__MATHCALL (y0,, (_Mdouble_));
__MATHCALL (y1,, (_Mdouble_));
__MATHCALL (yn,, (int, _Mdouble_));
/* This variable is used by `gamma' and `lgamma'. */
extern int signgam;
#ifdef __USE_MISC
/* Reentrant versions of gamma and lgamma. Those functions use the global
variable `signgam'. The reentrant versions instead take a pointer and
store the value through it. */
__MATHCALL (gamma,_r, (_Mdouble_, int *));
__MATHCALL (lgamma,_r, (_Mdouble_, int *));
#endif
#if defined(__USE_MISC) || defined(__USE_XOPEN_EXTENDED)
/* Return the integer nearest X in the direction of the
prevailing rounding mode. */
__MATHCALL (rint,, (_Mdouble_ __x));
/* Return X times (2 to the Nth power). */
__MATHCALL (scalb,, (_Mdouble_ __x, _Mdouble_ __n));
/* Return X + epsilon if X < Y, X - epsilon if X > Y. */
__MATHCALL (nextafter,, (_Mdouble_ __x, _Mdouble_ __y));
/* Return the remainder of integer divison X / Y with infinite precision. */
__MATHCALL (remainder,, (_Mdouble_ __x, _Mdouble_ __y));
#endif
#endif /* Use misc. */