Skip to content

Implement selected functions from the C23 math library #65

@fwyzard

Description

@fwyzard

See ISO/IEC 9899:2024 N3220 working draft, Section 7.12 Mathematics.

Appendix B.11

  • int fpclassify(real-floating x)
  • int iscanonical(real-floating x)
  • int isfinite(real-floating x)
  • int isinf(real-floating x)
  • int isnan(real-floating x)
  • int isnormal(real-floating x)
  • int signbit(real-floating x)
  • int issignaling(real-floating x)
  • int issubnormal(real-floating x)
  • int iszero(real-floating x)
  • double acos(double x)
  • double asin(double x)
  • double atan(double x)
  • double atan2(double y, double x)
  • double cos(double x)
  • double sin(double x)
  • double tan(double x)
  • double acospi(double x)
  • double asinpi(double x)
  • double atanpi(double x)
  • double atan2pi(double y, double x)
  • double cospi(double x)
  • double sinpi(double x)
  • double tanpi(double x)
  • double acosh(double x)
  • double asinh(double x)
  • double atanh(double x)
  • double cosh(double x)
  • double sinh(double x)
  • double tanh(double x)
  • double exp(double x)
  • double exp10(double x)
  • double exp10m1(double x)
  • double exp2(double x)
  • double exp2m1(double x)
  • double expm1(double x)
  • double frexp(double value, int *p)
  • int ilogb(double x)
  • double ldexp(double x, int p)
  • long int llogb(double x)
  • double log(double x)
  • double log10(double x)
  • double log10p1(double x)
  • double log1p(double x), double logp1(double x)
  • double log2(double x)
  • double log2p1(double x)
  • double logb(double x)
  • double modf(double value, double *iptr)
  • double scalbn(double x, int n)
  • double scalbln(double x, long int n)
  • double cbrt(double x)
  • double compoundn(double x, long long int n)
  • double fabs(double x)
  • double hypot(double x, double y)
  • double pow(double x, double y)
  • double pown(double x, long long int n)
  • double powr(double y, double x)
  • double rootn(double x, long long int n)
  • double rsqrt(double x) (see Add support for rsqrt() and rcp() #44)
  • double sqrt(double x)
  • double erf(double x)
  • double erfc(double x)
  • double lgamma(double x)
  • double tgamma(double x)
  • double ceil(double x)
  • double floor(double x)
  • double nearbyint(double x)
  • double rint(double x)
  • long int lrint(double x)
  • long long int llrint(double x)
  • double round(double x)
  • long int lround(double x)
  • long long int llround(double x)
  • double roundeven(double x)
  • double trunc(double x)
  • double fromfp(double x, int rnd, unsigned int width)
  • double ufromfp(double x, int rnd, unsigned int width)
  • double fromfpx(double x, int rnd, unsigned int width)
  • double ufromfpx(double x, int rnd, unsigned int width)
  • double fmod(double x, double y)
  • double remainder(double x, double y)
  • double remquo(double x, double y, int *quo)
  • double copysign(double x, double y)
  • double nan(const char *tagp)
  • double nextafter(double x, double y)
  • double nextup(double x)
  • double nextdown(double x)
  • int canonicalize(double *cx, const double *x)
  • double fdim(double x, double y)
  • double fmax(double x, double y)
  • double fmin(double x, double y)
  • double fmaximum(double x, double y)
  • double fminimum(double x, double y)
  • double fmaximum_mag(double x, double y)
  • double fminimum_mag(double x, double y)
  • double fmaximum_num(double x, double y)
  • double fminimum_num(double x, double y)
  • double fmaximum_mag_num(double x, double y)
  • double fminimum_mag_num(double x, double y)
  • double fma(double x, double y, double z)
  • int isgreater(real-floating x, real-floating y)
  • int isgreaterequal(real-floating x, real-floating y)
  • int isless(real-floating x, real-floating y)
  • int islessequal(real-floating x, real-floating y)
  • int islessgreater(real-floating x, real-floating y)
  • int isunordered(real-floating x, real-floating y)
  • int iseqsig(real-floating x, real-floating y)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions