| [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). |
| ] |
| |