Files
st/libs/c/include/math.h
T
Yanis c98c03de39 Match MSL_C (#8)
* match wstring.c

* match math_api.c, mbstring.c, mem.c and mem_funcs.c

* more progress

* build issues

* fix non-matching issues

* reorganise files

* match fdlibm (+ libc progress)

* fix jp build

* solved some non-matchings and progress

* removed types.h usage in libc

* match data and add missing delinks for jp
2025-12-17 14:08:53 +01:00

62 lines
1.4 KiB
C

#ifndef _C_MATH_H
#define _C_MATH_H
#include <errno.h>
#include <fdlibm.h>
#ifdef __cplusplus
extern "C" {
#endif
#define DONT_INLINE_SQRT
#define M_PI 3.1415926535897932
#define M_SQRT3 1.7320499420166016
extern int __float_nan[];
extern int __float_huge[];
extern int __double_huge[];
#define NAN (*(float *) __float_nan)
#define INFINITY (*(float *) __float_huge)
#define HUGE_VAL (*(double *) __double_huge)
// f64 bit-twiddling macros
#ifdef __BIG_ENDIAN__
#define __HI(x) (((int *) &x)[0])
#define __LO(x) (((int *) &x)[1])
#else
#define __HI(x) (((int *) &x)[1])
#define __LO(x) (((int *) &x)[0])
#endif
#define FP_NAN 1
#define FP_INFINITE 2
#define FP_ZERO 3
#define FP_NORMAL 4
#define FP_SUBNORMAL 5
int __fpclassifyd(double x);
int __signbitd(double x);
double fabs(double x);
double nan(const char *x);
double sqrt(double __x);
#define fpclassify(x) ((sizeof(x) == sizeof(float)) ? __fpclassifyf((float) (x)) : __fpclassifyd((double) (x)))
#define signbit(x) ((sizeof(x) == sizeof(float)) ? __signbitf((float) (x)) : __signbitd((double) (x)))
#define isnormal(x) (fpclassify(x) == FP_NORMAL)
#define isnan(x) (fpclassify(x) == FP_NAN)
#define isinf(x) (fpclassify(x) == FP_INFINITE)
#define isfinite(x) (fpclassify(x) > FP_INFINITE)
static inline long double fabsl(long double x) {
return (long double) fabs((double) x);
}
#ifdef __cplusplus
}
#endif
#endif