300 lines
8.3 KiB
Plaintext
300 lines
8.3 KiB
Plaintext
[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_promotion_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).
|
|
]
|
|
|