Report a bug
If you spot a problem with this page, click here to create a Bugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page. Requires a signed-in GitHub account. This works well for small changes. If you'd like to make larger changes you may want to consider using a local clone.


D header file for C99.
This module contains bindings to selected types and functions from the standard C header <math.h>. Note that this is not automatically generated, and may omit some types/functions from the original C header.
Distributed under the Boost Software License 1.0. (See accompanying file LICENSE)
Sean Kelly
alias float_t = float;
alias double_t = double;
enum double HUGE_VAL;
enum double HUGE_VALF;
enum double HUGE_VALL;
enum float INFINITY;
enum float NAN;
enum int FP_ILOGB0;
enum int FP_ILOGBNAN;
enum int MATH_ERRNO;
enum int math_errhandling;
nothrow @nogc @trusted int fpclassify(float x);
nothrow @nogc @trusted int fpclassify(double x);
nothrow @nogc @trusted int fpclassify(real x);
nothrow @nogc @trusted int isfinite(float x);
nothrow @nogc @trusted int isfinite(double x);
nothrow @nogc @trusted int isfinite(real x);
nothrow @nogc @trusted int isinf(float x);
nothrow @nogc @trusted int isinf(double x);
nothrow @nogc @trusted int isinf(real x);
nothrow @nogc @trusted int isnan(float x);
nothrow @nogc @trusted int isnan(double x);
nothrow @nogc @trusted int isnan(real x);
nothrow @nogc @trusted int isnormal(float x);
nothrow @nogc @trusted int isnormal(double x);
nothrow @nogc @trusted int isnormal(real x);
nothrow @nogc @trusted int signbit(float x);
nothrow @nogc @trusted int signbit(double x);
nothrow @nogc @trusted int signbit(real x);
nothrow @nogc @trusted int isgreater(float x, float y);
nothrow @nogc @trusted int isgreater(double x, double y);
nothrow @nogc @trusted int isgreater(real x, real y);
nothrow @nogc @trusted int isgreaterequal(float x, float y);
nothrow @nogc @trusted int isgreaterequal(double x, double y);
nothrow @nogc @trusted int isgreaterequal(real x, real y);
nothrow @nogc @trusted int isless(float x, float y);
nothrow @nogc @trusted int isless(double x, double y);
nothrow @nogc @trusted int isless(real x, real y);
nothrow @nogc @trusted int islessequal(float x, float y);
nothrow @nogc @trusted int islessequal(double x, double y);
nothrow @nogc @trusted int islessequal(real x, real y);
nothrow @nogc @trusted int islessgreater(float x, float y);
nothrow @nogc @trusted int islessgreater(double x, double y);
nothrow @nogc @trusted int islessgreater(real x, real y);
nothrow @nogc @trusted int isunordered(float x, float y);
nothrow @nogc @trusted int isunordered(double x, double y);
nothrow @nogc @trusted int isunordered(real x, real y);
nothrow @nogc @trusted double acos(double x);
nothrow @nogc @trusted float acosf(float x);
nothrow @nogc @trusted real acosl(real x);
nothrow @nogc @trusted double asin(double x);
nothrow @nogc @trusted float asinf(float x);
nothrow @nogc @trusted real asinl(real x);
nothrow @nogc @trusted double atan(double x);
nothrow @nogc @trusted float atanf(float x);
nothrow @nogc @trusted real atanl(real x);
nothrow @nogc @trusted double atan2(double y, double x);
nothrow @nogc @trusted float atan2f(float y, float x);
nothrow @nogc @trusted real atan2l(real y, real x);
nothrow @nogc @trusted double cos(double x);
nothrow @nogc @trusted float cosf(float x);
nothrow @nogc @trusted real cosl(real x);
nothrow @nogc @trusted double sin(double x);
nothrow @nogc @trusted float sinf(float x);
nothrow @nogc @trusted real sinl(real x);
nothrow @nogc @trusted double tan(double x);
nothrow @nogc @trusted float tanf(float x);
nothrow @nogc @trusted real tanl(real x);
nothrow @nogc @trusted double acosh(double x);
nothrow @nogc @trusted float acoshf(float x);
nothrow @nogc @trusted real acoshl(real x);
nothrow @nogc @trusted double asinh(double x);
nothrow @nogc @trusted float asinhf(float x);
nothrow @nogc @trusted real asinhl(real x);
nothrow @nogc @trusted double atanh(double x);
nothrow @nogc @trusted float atanhf(float x);
nothrow @nogc @trusted real atanhl(real x);
nothrow @nogc @trusted double cosh(double x);
nothrow @nogc @trusted float coshf(float x);
nothrow @nogc @trusted real coshl(real x);
nothrow @nogc @trusted double sinh(double x);
nothrow @nogc @trusted float sinhf(float x);
nothrow @nogc @trusted real sinhl(real x);
nothrow @nogc @trusted double tanh(double x);
nothrow @nogc @trusted float tanhf(float x);
nothrow @nogc @trusted real tanhl(real x);
nothrow @nogc @trusted double exp(double x);
nothrow @nogc @trusted float expf(float x);
nothrow @nogc @trusted real expl(real x);
nothrow @nogc @trusted double exp2(double x);
nothrow @nogc @trusted float exp2f(float x);
nothrow @nogc @trusted real exp2l(real x);
nothrow @nogc @trusted double expm1(double x);
nothrow @nogc @trusted float expm1f(float x);
nothrow @nogc @trusted real expm1l(real x);
nothrow @nogc @trusted double frexp(double value, int* exp);
nothrow @nogc @trusted float frexpf(float value, int* exp);
nothrow @nogc @trusted real frexpl(real value, int* exp);
nothrow @nogc @trusted int ilogb(double x);
nothrow @nogc @trusted int ilogbf(float x);
nothrow @nogc @trusted int ilogbl(real x);
nothrow @nogc @trusted double ldexp(double x, int exp);
nothrow @nogc @trusted float ldexpf(float x, int exp);
nothrow @nogc @trusted real ldexpl(real x, int exp);
nothrow @nogc @trusted double log(double x);
nothrow @nogc @trusted float logf(float x);
nothrow @nogc @trusted real logl(real x);
nothrow @nogc @trusted double log10(double x);
nothrow @nogc @trusted float log10f(float x);
nothrow @nogc @trusted real log10l(real x);
nothrow @nogc @trusted double log1p(double x);
nothrow @nogc @trusted float log1pf(float x);
nothrow @nogc @trusted real log1pl(real x);
nothrow @nogc @trusted double log2(double x);
nothrow @nogc @trusted float log2f(float x);
nothrow @nogc @trusted real log2l(real x);
nothrow @nogc @trusted double logb(double x);
nothrow @nogc @trusted float logbf(float x);
nothrow @nogc @trusted real logbl(real x);
nothrow @nogc @trusted double modf(double value, double* iptr);
nothrow @nogc @trusted float modff(float value, float* iptr);
nothrow @nogc @trusted real modfl(real value, real* iptr);
nothrow @nogc @trusted double scalbn(double x, int n);
nothrow @nogc @trusted float scalbnf(float x, int n);
nothrow @nogc @trusted real scalbnl(real x, int n);
nothrow @nogc @trusted double scalbln(double x, c_long n);
nothrow @nogc @trusted float scalblnf(float x, c_long n);
nothrow @nogc @trusted real scalblnl(real x, c_long n);
nothrow @nogc @trusted double cbrt(double x);
nothrow @nogc @trusted float cbrtf(float x);
nothrow @nogc @trusted real cbrtl(real x);
nothrow @nogc @trusted double fabs(double x);
nothrow @nogc @trusted float fabsf(float x);
nothrow @nogc @trusted real fabsl(real x);
nothrow @nogc @trusted double hypot(double x, double y);
nothrow @nogc @trusted float hypotf(float x, float y);
nothrow @nogc @trusted real hypotl(real x, real y);
nothrow @nogc @trusted double pow(double x, double y);
nothrow @nogc @trusted float powf(float x, float y);
nothrow @nogc @trusted real powl(real x, real y);
nothrow @nogc @trusted double sqrt(double x);
nothrow @nogc @trusted float sqrtf(float x);
nothrow @nogc @trusted real sqrtl(real x);
nothrow @nogc @trusted double erf(double x);
nothrow @nogc @trusted float erff(float x);
nothrow @nogc @trusted real erfl(real x);
nothrow @nogc @trusted double erfc(double x);
nothrow @nogc @trusted float erfcf(float x);
nothrow @nogc @trusted real erfcl(real x);
nothrow @nogc @trusted double lgamma(double x);
nothrow @nogc @trusted float lgammaf(float x);
nothrow @nogc @trusted real lgammal(real x);
nothrow @nogc @trusted double tgamma(double x);
nothrow @nogc @trusted float tgammaf(float x);
nothrow @nogc @trusted real tgammal(real x);
nothrow @nogc @trusted double ceil(double x);
nothrow @nogc @trusted float ceilf(float x);
nothrow @nogc @trusted real ceill(real x);
nothrow @nogc @trusted double floor(double x);
nothrow @nogc @trusted float floorf(float x);
nothrow @nogc @trusted real floorl(real x);
nothrow @nogc @trusted double nearbyint(double x);
nothrow @nogc @trusted float nearbyintf(float x);
nothrow @nogc @trusted real nearbyintl(real x);
nothrow @nogc @trusted double rint(double x);
nothrow @nogc @trusted float rintf(float x);
nothrow @nogc @trusted real rintl(real x);
nothrow @nogc @trusted c_long lrint(double x);
nothrow @nogc @trusted c_long lrintf(float x);
nothrow @nogc @trusted c_long lrintl(real x);
nothrow @nogc @trusted long llrint(double x);
nothrow @nogc @trusted long llrintf(float x);
nothrow @nogc @trusted long llrintl(real x);
nothrow @nogc @trusted double round(double x);
nothrow @nogc @trusted float roundf(float x);
nothrow @nogc @trusted real roundl(real x);
nothrow @nogc @trusted c_long lround(double x);
nothrow @nogc @trusted c_long lroundf(float x);
nothrow @nogc @trusted c_long lroundl(real x);
nothrow @nogc @trusted long llround(double x);
nothrow @nogc @trusted long llroundf(float x);
nothrow @nogc @trusted long llroundl(real x);
nothrow @nogc @trusted double trunc(double x);
nothrow @nogc @trusted float truncf(float x);
nothrow @nogc @trusted real truncl(real x);
nothrow @nogc @trusted double fmod(double x, double y);
nothrow @nogc @trusted float fmodf(float x, float y);
nothrow @nogc @trusted real fmodl(real x, real y);
nothrow @nogc @trusted double remainder(double x, double y);
nothrow @nogc @trusted float remainderf(float x, float y);
nothrow @nogc @trusted real remainderl(real x, real y);
nothrow @nogc @trusted double remquo(double x, double y, int* quo);
nothrow @nogc @trusted float remquof(float x, float y, int* quo);
nothrow @nogc @trusted real remquol(real x, real y, int* quo);
nothrow @nogc @trusted double copysign(double x, double y);
nothrow @nogc @trusted float copysignf(float x, float y);
nothrow @nogc @trusted real copysignl(real x, real y);
nothrow @nogc @trusted double nan(char* tagp);
nothrow @nogc @trusted float nanf(char* tagp);
nothrow @nogc @trusted real nanl(char* tagp);
nothrow @nogc @trusted double nextafter(double x, double y);
nothrow @nogc @trusted float nextafterf(float x, float y);
nothrow @nogc @trusted real nextafterl(real x, real y);
nothrow @nogc @trusted double nexttoward(double x, real y);
nothrow @nogc @trusted float nexttowardf(float x, real y);
nothrow @nogc @trusted real nexttowardl(real x, real y);
nothrow @nogc @trusted double fdim(double x, double y);
nothrow @nogc @trusted float fdimf(float x, float y);
nothrow @nogc @trusted real fdiml(real x, real y);
nothrow @nogc @trusted double fmax(double x, double y);
nothrow @nogc @trusted float fmaxf(float x, float y);
nothrow @nogc @trusted real fmaxl(real x, real y);
nothrow @nogc @trusted double fmin(double x, double y);
nothrow @nogc @trusted float fminf(float x, float y);
nothrow @nogc @trusted real fminl(real x, real y);
nothrow @nogc @trusted double fma(double x, double y, double z);
nothrow @nogc @trusted float fmaf(float x, float y, float z);
nothrow @nogc @trusted real fmal(real x, real y, real z);