gfiber / toolchains / armada / 39a78689899eca29db8da8a70f237f991d751be1 / . / arm-marvell-linux-uclibcgnueabi / libc / thumb2 / usr / include / bits / cmathcalls.h

/* Prototype declarations for complex math functions; | |

helper file for <complex.h>. | |

Copyright (C) 1997, 1998, 2001 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 Lesser General Public | |

License as published by the Free Software Foundation; either | |

version 2.1 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 | |

Lesser General Public License for more details. | |

You should have received a copy of the GNU Lesser General Public | |

License along with the GNU C Library; 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 <complex.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, (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, (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 _COMPLEX_H | |

#error "Never use <bits/cmathcalls.h> directly; include <complex.h> instead." | |

#endif | |

#define _Mdouble_complex_ _Mdouble_ _Complex | |

/* Trigonometric functions. */ | |

/* Arc cosine of Z. */ | |

__MATHCALL (cacos, (_Mdouble_complex_ __z)); | |

/* Arc sine of Z. */ | |

__MATHCALL (casin, (_Mdouble_complex_ __z)); | |

/* Arc tangent of Z. */ | |

__MATHCALL (catan, (_Mdouble_complex_ __z)); | |

/* Cosine of Z. */ | |

__MATHCALL (ccos, (_Mdouble_complex_ __z)); | |

/* Sine of Z. */ | |

__MATHCALL (csin, (_Mdouble_complex_ __z)); | |

/* Tangent of Z. */ | |

__MATHCALL (ctan, (_Mdouble_complex_ __z)); | |

/* Hyperbolic functions. */ | |

/* Hyperbolic arc cosine of Z. */ | |

__MATHCALL (cacosh, (_Mdouble_complex_ __z)); | |

/* Hyperbolic arc sine of Z. */ | |

__MATHCALL (casinh, (_Mdouble_complex_ __z)); | |

/* Hyperbolic arc tangent of Z. */ | |

__MATHCALL (catanh, (_Mdouble_complex_ __z)); | |

/* Hyperbolic cosine of Z. */ | |

__MATHCALL (ccosh, (_Mdouble_complex_ __z)); | |

/* Hyperbolic sine of Z. */ | |

__MATHCALL (csinh, (_Mdouble_complex_ __z)); | |

/* Hyperbolic tangent of Z. */ | |

__MATHCALL (ctanh, (_Mdouble_complex_ __z)); | |

/* Exponential and logarithmic functions. */ | |

/* Exponential function of Z. */ | |

__MATHCALL (cexp, (_Mdouble_complex_ __z)); | |

/* Natural logarithm of Z. */ | |

__MATHCALL (clog, (_Mdouble_complex_ __z)); | |

#ifdef __USE_GNU | |

/* The base 10 logarithm is not defined by the standard but to implement | |

the standard C++ library it is handy. */ | |

__MATHCALL (clog10, (_Mdouble_complex_ __z)); | |

#endif | |

/* Power functions. */ | |

/* Return X to the Y power. */ | |

__MATHCALL (cpow, (_Mdouble_complex_ __x, _Mdouble_complex_ __y)); | |

/* Return the square root of Z. */ | |

__MATHCALL (csqrt, (_Mdouble_complex_ __z)); | |

/* Absolute value, conjugates, and projection. */ | |

/* Absolute value of Z. */ | |

__MATHDECL (_Mdouble_,cabs, (_Mdouble_complex_ __z)); | |

/* Argument value of Z. */ | |

__MATHDECL (_Mdouble_,carg, (_Mdouble_complex_ __z)); | |

/* Complex conjugate of Z. */ | |

__MATHCALL (conj, (_Mdouble_complex_ __z)); | |

/* Projection of Z onto the Riemann sphere. */ | |

__MATHCALL (cproj, (_Mdouble_complex_ __z)); | |

/* Decomposing complex values. */ | |

/* Imaginary part of Z. */ | |

__MATHDECL (_Mdouble_,cimag, (_Mdouble_complex_ __z)); | |

/* Real part of Z. */ | |

__MATHDECL (_Mdouble_,creal, (_Mdouble_complex_ __z)); | |

/* Now some optimized versions. GCC has handy notations for these | |

functions. Recent GCC handles these as builtin functions so does | |

not need inlines. */ | |

#if defined __GNUC__ && !__GNUC_PREREQ (2, 97) && defined __OPTIMIZE__ | |

/* Imaginary part of Z. */ | |

__extern_inline _Mdouble_ | |

__MATH_PRECNAME(cimag) (_Mdouble_complex_ __z) __THROW | |

{ | |

return __imag__ __z; | |

} | |

/* Real part of Z. */ | |

__extern_inline _Mdouble_ | |

__MATH_PRECNAME(creal) (_Mdouble_complex_ __z) __THROW | |

{ | |

return __real__ __z; | |

} | |

/* Complex conjugate of Z. */ | |

__extern_inline _Mdouble_complex_ | |

__MATH_PRECNAME(conj) (_Mdouble_complex_ __z) __THROW | |

{ | |

return __extension__ ~__z; | |

} | |

#endif |