phobos/std/c/freebsd/math.d
2009-04-06 09:58:48 +00:00

97 lines
3.1 KiB
D

/**
* Missing functions from C's <math.h>
* Authors: Walter Bright, Digital Mars, http://www.digitalmars.com
* License: Public Domain
* Macros:
* WIKI=Phobos/StdCMath
*/
module std.c.freebsd.math;
import std.c.math;
extern (C):
/* FreeBSD doesn't do the 'l' math functions.
* So we provide our own (lame) implementations.
*/
real acosl(real x) { return acos(x); }
real asinl(real x) { return asin(x); }
real atanl(real x) { return atan(x); }
real atan2l(real y, real x) { return atan2(y, x); }
real cosl(real x) { return cos(x); }
real sinl(real x) { return sin(x); }
real tanl(real x) { return tan(x); }
real acoshl(real x) { return acosh(x); }
real asinhl(real x) { return asinh(x); }
real atanhl(real x) { return atanh(x); }
real coshl(real x) { return cosh(x); }
real sinhl(real x) { return sinh(x); }
real tanhl(real x) { return tanh(x); }
real expl(real x) { return exp(x); }
real exp2l(real x) { return exp2(x); }
real expm1l(real x) { return expm1(x); }
//real frexpl(real x, int *exp) { return frexp(x, exp); }
//real ldexpl(real x, int exp) { return ldexp(x, exp); }
//real ilogbl(real x) { return ilogb(x); }
real logl(real x) { return log(x); }
real log10l(real x) { return log10(x); }
real log1pl(real x) { return log1p(x); }
real log2l(real x) { return log10(x) / log10(2); }
real logbl(real x) { return logb(x); }
/*
real modfl(real x, real *iptr)
{ double d;
auto r = modf(x, &d);
*iptr = d;
return r;
}
*/
//real scalbnl(real x, int n) { return scalbn(x, n); }
//real scalblnl(real x, int n) { return scalbln(x, n); }
real cbrtl(real x) { return cbrt(x); }
//real fabsl(real x) { return fabs(x); }
real hypotl(real x, real y) { return hypot(x, y); }
real powl(real x, real y) { return pow(x, y); }
real sqrtl(real x) { return sqrt(x); }
real erfl(real x) { return erf(x); }
real erfcl(real x) { return erfc(x); }
real lgammal(real x) { return lgamma(x); }
real tgammal(real x) { return tgamma(x); }
real ceill(real x) { return ceil(x); }
//real floorl(real x) { return floor(x); }
real nearbyintl(real x) { return nearbyint(x); }
real rintl(real x) { return rint(x); }
int lrintl(real x) { return lrint(x); }
long llrintl(real x) { return llrint(x); }
//real roundl(real x) { return round(x); }
//int lroundl(real x) { return lround(x); }
//long llroundl(real x) { return llround(x); }
//real truncl(real x) { return trunc(x); }
real fmodl(real x, real y) { return fmod(x, y); }
real remainderl(real x, real y) { return remainder(x, y); }
real remquol(real x, real y, int* quo) { return remquo(x, y, quo); }
real copysignl(real x, real y) { return copysign(x, y); }
real nanl(char *tagp) { return real.nan; }
//real nextafterl(real x, real y) { return nextafter(x, y); }
//real nexttowardl(real x, real y) { return nexttoward(x, y); }
//real fdiml(real x, real y) { return fdim(x, y); }
//real fmaxl(real x, real y) { return fmax(x, y); }
//real fminl(real x, real y) { return fmin(x, y); }
//real fmal(real x, real y, real z) { return fma(x, y, z); }