Mercurial > projects > ldc
view lphobos/std/c/math.d @ 650:aa6a0b7968f7
Added test case for bug #100
Removed dubious check for not emitting static private global in other modules without access. This should be handled properly somewhere else, it's causing unresolved global errors for stuff that should work (in MiniD)
author | Tomas Lindquist Olsen <tomas.l.olsen@gmail.com> |
---|---|
date | Sun, 05 Oct 2008 17:28:15 +0200 |
parents | c53b6e3fe49a |
children |
line wrap: on
line source
/** * C's <math.h> * Authors: Walter Bright, Digital Mars, www.digitalmars.com * License: Public Domain * Macros: * WIKI=Phobos/StdCMath */ module std.c.math; extern (C): alias float float_t; /// alias double double_t; /// const double HUGE_VAL = double.infinity; /// const float HUGE_VALF = float.infinity; /// ditto const real HUGE_VALL = real.infinity; /// ditto const float INFINITY = float.infinity; /// const float NAN = float.nan; /// enum { FP_NANS, // extension FP_NANQ, // extension FP_INFINITE, /// FP_NAN = FP_NANQ, /// FP_NORMAL = 3, /// FP_SUBNORMAL = 4, /// FP_ZERO = 5, /// FP_EMPTY = 6, // extension FP_UNSUPPORTED = 7, // extension } enum { FP_FAST_FMA = 0, /// FP_FAST_FMAF = 0, /// FP_FAST_FMAL = 0, /// } const int FP_ILOGB0 = int.min; /// const int FP_ILOGBNAN = int.min; /// const int MATH_ERRNO = 1; /// const int MATH_ERREXCEPT = 2; /// const int math_errhandling = MATH_ERRNO | MATH_ERREXCEPT; /// double acos(double x); /// float acosf(float x); /// ditto real acosl(real x); /// ditto double asin(double x); /// float asinf(float x); /// ditto real asinl(real x); /// ditto double atan(double x); /// float atanf(float x); /// ditto real atanl(real x); /// ditto double atan2(double y, double x); /// float atan2f(float y, float x); /// ditto real atan2l(real y, real x); /// ditto double cos(double x); /// float cosf(float x); /// ditto real cosl(real x); /// ditto double sin(double x); /// float sinf(float x); /// ditto real sinl(real x); /// ditto double tan(double x); /// float tanf(float x); /// ditto real tanl(real x); /// ditto double acosh(double x); /// float acoshf(float x); /// ditto real acoshl(real x); /// ditto double asinh(double x); /// float asinhf(float x); /// ditto real asinhl(real x); /// ditto double atanh(double x); /// float atanhf(float x); /// ditto real atanhl(real x); /// ditto double cosh(double x); /// float coshf(float x); /// ditto real coshl(real x); /// ditto double sinh(double x); /// float sinhf(float x); /// ditto real sinhl(real x); /// ditto double tanh(double x); /// float tanhf(float x); /// ditto real tanhl(real x); /// ditto double exp(double x); /// float expf(float x); /// ditto real expl(real x); /// ditto double exp2(double x); /// float exp2f(float x); /// ditto real exp2l(real x); /// ditto double expm1(double x); /// float expm1f(float x); /// ditto real expm1l(real x); /// ditto double frexp(double value, int *exp); /// float frexpf(float value, int *exp); /// ditto real frexpl(real value, int *exp); /// ditto int ilogb(double x); /// int ilogbf(float x); /// ditto int ilogbl(real x); /// ditto double ldexp(double x, int exp); /// float ldexpf(float x, int exp); /// ditto real ldexpl(real x, int exp); /// ditto double log(double x); /// float logf(float x); /// ditto real logl(real x); /// ditto double log10(double x); /// float log10f(float x); /// ditto real log10l(real x); /// ditto double log1p(double x); /// float log1pf(float x); /// ditto real log1pl(real x); /// ditto double log2(double x); /// float log2f(float x); /// ditto real log2l(real x); /// ditto double logb(double x); /// float logbf(float x); /// ditto real logbl(real x); /// ditto double modf(double value, double *iptr); /// float modff(float value, float *iptr); /// ditto real modfl(real value, real *iptr); /// ditto double scalbn(double x, int n); /// float scalbnf(float x, int n); /// ditto real scalbnl(real x, int n); /// ditto double scalbln(double x, int n); /// float scalblnf(float x, int n); /// ditto real scalblnl(real x, int n); /// ditto double cbrt(double x); /// float cbrtf(float x); /// ditto real cbrtl(real x); /// ditto double fabs(double x); /// float fabsf(float x); /// ditto real fabsl(real x); /// ditto double hypot(double x, double y); /// float hypotf(float x, float y); /// ditto real hypotl(real x, real y); /// ditto double pow(double x, double y); /// float powf(float x, float y); /// ditto real powl(real x, real y); /// ditto double sqrt(double x); /// float sqrtf(float x); /// ditto real sqrtl(real x); /// ditto double erf(double x); /// float erff(float x); /// ditto real erfl(real x); /// ditto double erfc(double x); /// float erfcf(float x); /// ditto real erfcl(real x); /// ditto double lgamma(double x); /// float lgammaf(float x); /// ditto real lgammal(real x); /// ditto double tgamma(double x); /// float tgammaf(float x); /// ditto real tgammal(real x); /// ditto double ceil(double x); /// float ceilf(float x); /// ditto real ceill(real x); /// ditto double floor(double x); /// float floorf(float x); /// ditto real floorl(real x); /// ditto double nearbyint(double x); /// float nearbyintf(float x); /// ditto real nearbyintl(real x); /// ditto double rint(double x); /// float rintf(float x); /// ditto real rintl(real x); /// ditto int lrint(double x); /// int lrintf(float x); /// ditto int lrintl(real x); /// ditto long llrint(double x); /// long llrintf(float x); /// ditto long llrintl(real x); /// ditto double round(double x); /// float roundf(float x); /// ditto real roundl(real x); /// ditto int lround(double x); /// int lroundf(float x); /// ditto int lroundl(real x); /// ditto long llround(double x); /// long llroundf(float x); /// ditto long llroundl(real x); /// ditto double trunc(double x); /// float truncf(float x); /// ditto real truncl(real x); /// ditto double fmod(double x, double y); /// float fmodf(float x, float y); /// ditto real fmodl(real x, real y); /// ditto double remainder(double x, double y); /// float remainderf(float x, float y); /// ditto real remainderl(real x, real y); /// ditto double remquo(double x, double y, int *quo); /// float remquof(float x, float y, int *quo); /// ditto real remquol(real x, real y, int *quo); /// ditto double copysign(double x, double y); /// float copysignf(float x, float y); /// ditto real copysignl(real x, real y); /// ditto double nan(char *tagp); /// float nanf(char *tagp); /// ditto real nanl(char *tagp); /// ditto double nextafter(double x, double y); /// float nextafterf(float x, float y); /// ditto real nextafterl(real x, real y); /// ditto double nexttoward(double x, real y); /// float nexttowardf(float x, real y); /// ditto real nexttowardl(real x, real y); /// ditto double fdim(double x, double y); /// float fdimf(float x, float y); /// ditto real fdiml(real x, real y); /// ditto double fmax(double x, double y); /// float fmaxf(float x, float y); /// ditto real fmaxl(real x, real y); /// ditto double fmin(double x, double y); /// float fminf(float x, float y); /// ditto real fminl(real x, real y); /// ditto double fma(double x, double y, double z); /// float fmaf(float x, float y, float z); /// ditto real fmal(real x, real y, real z); /// ditto /// int isgreater(real x, real y) { return !(x !> y); } /// int isgreaterequal(real x, real y) { return !(x !>= y); } /// int isless(real x, real y) { return !(x !< y); } /// int islessequal(real x, real y) { return !(x !<= y); } /// int islessgreater(real x, real y) { return !(x !<> y); } /// int isunordered(real x, real y) { return (x !<>= y); }