Implementation of libm in rust
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
src
tests
.gitignore
Cargo.toml
LICENSE-APACHE
LICENSE-MIT
README

README

# Software implementations of libm functions in Rust

This is supposed to be linked into Rust binaries on systems where libm is not available.

# TODO:

double      acosh(double);
float       acoshf(float);
double      asinh(double);
float       asinhf(float);
double      atan(double);
double      atan2(double, double);
float       atan2f(float, float);
float       atanf(float);
double      atanh(double);
float       atanhf(float);
double      cbrt(double);
float       cbrtf(float);
double      cosh(double);
float       coshf(float);
double      erf(double);
double      erfc(double);
float       erfcf(float);
float       erff(float);
double      exp2(double);
float       exp2f(float);
double      expm1(double);
float       expm1f(float);
double      frexp(double, int *);
float       frexpf(float, int *);
double      j0(double);
double      j1(double);
double      jn(int, double);
double      lgamma(double);
float       lgammaf(float);
double      log(double);
double      log10(double);
float       log10f(float);
double      log1p(double);
float       log1pf(float);
double      log2(double);
float       log2f(float);
float       logf(float);
double      pow(double, double);
float       powf(float, float);
double      remainder(double, double);
float       remainderf(float, float);
double      remquo(double, double, int *);
float       remquof(float, float, int *);
double      sinh(double);
float       sinhf(float);
double      tanh(double);
float       tanhf(float);
double      tgamma(double);
float       tgammaf(float);
double      y0(double);
double      y1(double);
double      yn(int, double);
extern int signgam;

# Not (going to be?) implemented

long double acoshl(long double);
long double acosl(long double);
long double asinhl(long double);
long double asinl(long double);
long double atan2l(long double, long double);
long double atanhl(long double);
long double atanl(long double);
long double cbrtl(long double);
long double ceill(long double);
long double copysignl(long double, long double);
long double coshl(long double);
long double cosl(long double);
long double erfcl(long double);
long double erfl(long double);
long double exp2l(long double);
long double expl(long double);
long double fmodl(long double, long double);
long double expm1l(long double);
long double fabsl(long double);
long double fdiml(long double, long double);
long double floorl(long double);
long double fmal(long double, long double, long double);
long double fmaxl(long double, long double);
long double fminl(long double, long double);
long double frexpl(long double, int *);
long double hypotl(long double, long double);
long double ldexpl(long double, int);
long double lgammal(long double);
long double log10l(long double);
long double log1pl(long double);
long double log2l(long double);
long double logbl(long double);
long double logl(long double);
long double modfl(long double, long double *);
long double nanl(const char *);
long double nearbyintl(long double);
long double nextafterl(long double, long double);
long double nexttowardl(long double, long double);
long double powl(long double, long double);
long double remainderl(long double, long double);
long double remquol(long double, long double, int *);
long double rintl(long double);
long double roundl(long double);
long double sinhl(long double);
long double sinl(long double);
long double sqrtl(long double);
long double tanhl(long double);
long double tanl(long double);
long double tgammal(long double);
long double truncl(long double);

long long   llrintl(long double);
long long   llroundl(long double);
long        lrintl(long double);
long        lroundl(long double);
double      nexttoward(double, long double);
float       nexttowardf(float, long double);
int         ilogbl(long double);

# UNDECIDED

Generally useless and needs pretty hard dependency on libc.

double      nan(const char *);
float       nanf(const char *);