blob: d58774c7e57a884ff7c69bfe2d65dd3deddc3df5 [file] [log] [blame]
[section:c99 C99 C Functions]
[h4 Supported C99 Functions]
namespace boost{ namespace math{ namespace tr1{ extern "C"{
typedef unspecified float_t;
typedef unspecified double_t;
double acosh(double x);
float acoshf(float x);
long double acoshl(long double x);
double asinh(double x);
float asinhf(float x);
long double asinhl(long double x);
double atanh(double x);
float atanhf(float x);
long double atanhl(long double x);
double cbrt(double x);
float cbrtf(float x);
long double cbrtl(long double x);
double copysign(double x, double y);
float copysignf(float x, float y);
long double copysignl(long double x, long double y);
double erf(double x);
float erff(float x);
long double erfl(long double x);
double erfc(double x);
float erfcf(float x);
long double erfcl(long double x);
double expm1(double x);
float expm1f(float x);
long double expm1l(long double x);
double fmax(double x, double y);
float fmaxf(float x, float y);
long double fmaxl(long double x, long double y);
double fmin(double x, double y);
float fminf(float x, float y);
long double fminl(long double x, long double y);
double hypot(double x, double y);
float hypotf(float x, float y);
long double hypotl(long double x, long double y);
double lgamma(double x);
float lgammaf(float x);
long double lgammal(long double x);
long long llround(double x);
long long llroundf(float x);
long long llroundl(long double x);
double log1p(double x);
float log1pf(float x);
long double log1pl(long double x);
long lround(double x);
long lroundf(float x);
long lroundl(long double x);
double nextafter(double x, double y);
float nextafterf(float x, float y);
long double nextafterl(long double x, long double y);
double nexttoward(double x, long double y);
float nexttowardf(float x, long double y);
long double nexttowardl(long double x, long double y);
double round(double x);
float roundf(float x);
long double roundl(long double x);
double tgamma(double x);
float tgammaf(float x);
long double tgammal(long double x);
double trunc(double x);
float truncf(float x);
long double truncl(long double x);
}}}} // namespaces
In addition sufficient additional overloads of the `double` versions of the
above functions are provided, so that calling the function with any mixture
of `float`, `double`, `long double`, or /integer/ arguments is supported, with the
return type determined by the __arg_pomotion_rules.
For example:
acoshf(2.0f); // float version, returns float.
acosh(2.0f); // also calls the float version and returns float.
acosh(2.0); // double version, returns double.
acoshl(2.0L); // long double version, returns a long double.
acosh(2.0L); // also calls the long double version.
acosh(2); // integer argument is treated as a double, returns double.
[h4 Quick Reference]
More detailed descriptions of these functions are available in the
C99 standard.
typedef unspecified float_t;
typedef unspecified double_t;
In this implementation `float_t` is the same as type `float`, and
`double_t` the same as type `double` unless the preprocessor symbol
FLT_EVAL_METHOD is defined, in which case these are set as follows:
[table
[[FLT_EVAL_METHOD][float_t][double_t]]
[[0][float][double]]
[[1][double][double]]
[[2][long double][long double]]
]
double acosh(double x);
float acoshf(float x);
long double acoshl(long double x);
Returns the inverse hyperbolic cosine of /x/.
See also __acosh for the full template (header only) version of this function.
double asinh(double x);
float asinhf(float x);
long double asinhl(long double x);
Returns the inverse hyperbolic sine of /x/.
See also __asinh for the full template (header only) version of this function.
double atanh(double x);
float atanhf(float x);
long double atanhl(long double x);
Returns the inverse hyperbolic tangent of /x/.
See also __atanh for the full template (header only) version of this function.
double cbrt(double x);
float cbrtf(float x);
long double cbrtl(long double x);
Returns the cubed root of /x/.
See also __cbrt for the full template (header only) version of this function.
double copysign(double x, double y);
float copysignf(float x, float y);
long double copysignl(long double x, long double y);
Returns a value with the magnitude of /x/ and the sign of /y/.
double erf(double x);
float erff(float x);
long double erfl(long double x);
Returns the error function of /x/:
[equation erf1]
See also __erf for the full template (header only) version of this function.
double erfc(double x);
float erfcf(float x);
long double erfcl(long double x);
Returns the complementary error function of /x/ `1-erf(x)` without the loss
of precision implied by the subtraction.
See also __erfc for the full template (header only) version of this function.
double expm1(double x);
float expm1f(float x);
long double expm1l(long double x);
Returns `exp(x)-1` without the loss
of precision implied by the subtraction.
See also __expm1 for the full template (header only) version of this function.
double fmax(double x, double y);
float fmaxf(float x, float y);
long double fmaxl(long double x, long double y);
Returns the larger (most positive) of /x/ and /y/.
double fmin(double x, double y);
float fminf(float x, float y);
long double fminl(long double x, long double y);
Returns the smaller (most negative) of /x/ and /y/.
double hypot(double x, double y);
float hypotf(float x, float y);
long double hypotl(long double x, long double y);
Returns `sqrt(x*x + y*y)` without the danger of numeric overflow
implied by that formulation.
See also __hypot for the full template (header only) version of this function.
double lgamma(double x);
float lgammaf(float x);
long double lgammal(long double x);
Returns the log of the gamma function of /x/.
[equation lgamm1]
See also __lgamma for the full template (header only) version of this function.
long long llround(double x);
long long llroundf(float x);
long long llroundl(long double x);
Returns the value /x/ rounded to the nearest integer as a `long long`:
equivalent to `floor(x + 0.5)`
See also __llround for the full template (header only) version of this function.
double log1p(double x);
float log1pf(float x);
long double log1pl(long double x);
Returns the `log(x+1)` without the loss of precision
implied by that formulation.
See also __log1p for the full template (header only) version of this function.
long lround(double x);
long lroundf(float x);
long lroundl(long double x);
Returns the value /x/ rounded to the nearest integer as a `long`:
equivalent to `floor(x + 0.5)`
See also __lround for the full template (header only) version of this function.
double nextafter(double x, double y);
float nextafterf(float x, float y);
long double nextafterl(long double x, long double y);
Returns the next representable floating point number after /x/
in the direction of /y/, or /x/ if `x == y`.
double nexttoward(double x, long double y);
float nexttowardf(float x, long double y);
long double nexttowardl(long double x, long double y);
As `nextafter`, but with /y/ always expressed as a `long double`.
double round(double x);
float roundf(float x);
long double roundl(long double x);
Returns the value /x/ rounded to the nearest integer:
equivalent to `floor(x + 0.5)`
See also __round for the full template (header only) version of this function.
double tgamma(double x);
float tgammaf(float x);
long double tgammal(long double x);
Returns the gamma function of /x/:
[equation gamm1]
See also __tgamma for the full template (header only) version of this function.
double trunc(double x);
float truncf(float x);
long double truncl(long double x);
Returns /x/ truncated to the nearest integer.
See also __trunc for the full template (header only) version of this function.
See also [@http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1124.pdf C99 ISO Standard]
[endsect]
[/
Copyright 2008 John Maddock and Paul A. Bristow.
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt).
]