mirror of
https://github.com/justinian/jsix.git
synced 2025-12-10 08:24:32 -08:00
[all] Reference headers in src instead of copying
This is the second of two big changes to clean up includes throughout the project. Since I've started using clangd with Neovim and using VSCode's intellisense, my former strategy of copying all header files into place in `build/include` means that the real files don't show up in `compile_commands.json` and so display many include errors when viewing those header files in those tools. That setup was mostly predicated on a desire to keep directory depths small, but really I don't think paths like `src/libraries/j6/j6` are much better than `src/libraries/j6/include/j6`, and the latter doesn't have the aforementioned issues, and is clearer to the casual observer as well. Some additional changes: - Added a new module flag `copy_headers` for behavior similar to the old style, but placing headers in `$module_dir/include` instead of the global `build/include`. This was needed for external projects that don't follow the same source/headers folder structure - in this case, `zstd`. - There is no longer an associated `headers.*.ninja` for each `module.*.ninja` file, as only parsed headers need to be listed; this functionality has been moved back into the module's ninja file.
This commit is contained in:
276
src/libraries/libc/include/math.h
Normal file
276
src/libraries/libc/include/math.h
Normal file
@@ -0,0 +1,276 @@
|
||||
#pragma once
|
||||
/** \file math.h
|
||||
* Mathematics
|
||||
*
|
||||
* This file is part of the C standard library for the jsix operating
|
||||
* system.
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
// NOTE: libc math.h is only stubbed out currently!
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define NAN 0
|
||||
#define INFINITY __builtin_inff()
|
||||
|
||||
#define FP_NAN (-1)
|
||||
#define FP_ZERO 0
|
||||
#define FP_SUBNORMAL 1
|
||||
#define FP_NORMAL 2
|
||||
#define FP_INFINITE 3
|
||||
|
||||
#define FLT_EVAL_METHOD 0
|
||||
typedef float float_t;
|
||||
typedef double double_t;
|
||||
|
||||
#define isinf(x) (__builtin_isinf_sign((x)) != 0)
|
||||
#define isnan(x) 0
|
||||
#define isnormal(x) 0
|
||||
|
||||
#define isfinite(x) (!isinf((x)) && !isnan((x)))
|
||||
|
||||
#define fpclassify(x) ((x) == 0.0 ? FP_ZERO : \
|
||||
isnormal((x)) ? FP_NORMAL : \
|
||||
isnan((x)) ? FP_NAN : \
|
||||
isinf((x)) ? FP_INFINITE : \
|
||||
FP_SUBNORMAL)
|
||||
|
||||
|
||||
#define signbit(x) (__builtin_signbit((x)))
|
||||
|
||||
|
||||
double acos(double x);
|
||||
float acosf(float x);
|
||||
long double acosl(long double x);
|
||||
|
||||
double asin(double x);
|
||||
float asinf(float x);
|
||||
long double asinl(long double x);
|
||||
|
||||
double atan(double x);
|
||||
float atanf(float x);
|
||||
long double atanl(long double x);
|
||||
|
||||
double atan2(double y, double x);
|
||||
float atan2f(float y, float x);
|
||||
long double atan2l(long double y, long double x);
|
||||
|
||||
double cos(double x);
|
||||
float cosf(float x);
|
||||
long double cosl(long double x);
|
||||
|
||||
double sin(double x);
|
||||
float sinf(float x);
|
||||
long double sinl(long double x);
|
||||
|
||||
double tan(double x);
|
||||
float tanf(float x);
|
||||
long double tanl(long double x);
|
||||
|
||||
double acosh(double x);
|
||||
float acoshf(float x);
|
||||
long double acoshl(long double x);
|
||||
|
||||
double asinh(double x);
|
||||
float asinhf(float x);
|
||||
long double asinhl(long double x);
|
||||
|
||||
double atanh(double x);
|
||||
float atanhf(float x);
|
||||
long double atanhl(long double x);
|
||||
|
||||
double cosh(double x);
|
||||
float coshf(float x);
|
||||
long double coshl(long double x);
|
||||
|
||||
double sinh(double x);
|
||||
float sinhf(float x);
|
||||
long double sinhl(long double x);
|
||||
|
||||
double tanh(double x);
|
||||
float tanhf(float x);
|
||||
long double tanhl(long double x);
|
||||
|
||||
double exp(double x);
|
||||
float expf(float x);
|
||||
long double expl(long double x);
|
||||
|
||||
double exp2(double x);
|
||||
float exp2f(float x);
|
||||
long double exp2l(long double x);
|
||||
|
||||
double expm1(double x);
|
||||
float expm1f(float x);
|
||||
long double expm1l(long double x);
|
||||
|
||||
double frexp(double value, int *exp);
|
||||
float frexpf(float value, int *exp);
|
||||
long double frexpl(long double value, int *exp);
|
||||
|
||||
int ilogb(double x);
|
||||
int ilogbf(float x);
|
||||
int ilogbl(long double x);
|
||||
|
||||
double ldexp(double x, int exp);
|
||||
float ldexpf(float x, int exp);
|
||||
long double ldexpl(long double x, int exp);
|
||||
|
||||
double log(double x);
|
||||
float logf(float x);
|
||||
long double logl(long double x);
|
||||
|
||||
double log10(double x);
|
||||
float log10f(float x);
|
||||
long double log10l(long double x);
|
||||
|
||||
double log1p(double x);
|
||||
float log1pf(float x);
|
||||
long double log1pl(long double x);
|
||||
|
||||
double log2(double x);
|
||||
float log2f(float x);
|
||||
long double log2l(long double x);
|
||||
|
||||
double logb(double x);
|
||||
float logbf(float x);
|
||||
long double logbl(long double x);
|
||||
|
||||
double modf(double value, double *iptr);
|
||||
float modff(float value, float *iptr);
|
||||
long double modfl(long double value, long double *iptr);
|
||||
|
||||
double scalbn(double x, int n);
|
||||
float scalbnf(float x, int n);
|
||||
long double scalbnl(long double x, int n);
|
||||
double scalbln(double x, long int n);
|
||||
float scalblnf(float x, long int n);
|
||||
long double scalblnl(long double x, long int n);
|
||||
|
||||
double cbrt(double x);
|
||||
float cbrtf(float x);
|
||||
long double cbrtl(long double x);
|
||||
|
||||
double fabs(double x);
|
||||
float fabsf(float x);
|
||||
long double fabsl(long double x);
|
||||
|
||||
double hypot(double x, double y);
|
||||
float hypotf(float x, float y);
|
||||
long double hypotl(long double x, long double y);
|
||||
|
||||
double pow(double x, double y);
|
||||
float powf(float x, float y);
|
||||
long double powl(long double x, long double y);
|
||||
|
||||
double sqrt(double x);
|
||||
float sqrtf(float x);
|
||||
long double sqrtl(long double x);
|
||||
|
||||
double erf(double x);
|
||||
float erff(float x);
|
||||
long double erfl(long double x);
|
||||
|
||||
double erfc(double x);
|
||||
float erfcf(float x);
|
||||
long double erfcl(long double x);
|
||||
|
||||
double lgamma(double x);
|
||||
float lgammaf(float x);
|
||||
long double lgammal(long double x);
|
||||
|
||||
double tgamma(double x);
|
||||
float tgammaf(float x);
|
||||
long double tgammal(long double x);
|
||||
|
||||
double ceil(double x);
|
||||
float ceilf(float x);
|
||||
long double ceill(long double x);
|
||||
|
||||
double floor(double x);
|
||||
float floorf(float x);
|
||||
long double floorl(long double x);
|
||||
|
||||
double nearbyint(double x);
|
||||
float nearbyintf(float x);
|
||||
long double nearbyintl(long double x);
|
||||
|
||||
double rint(double x);
|
||||
float rintf(float x);
|
||||
long double rintl(long double x);
|
||||
|
||||
long int lrint(double x);
|
||||
long int lrintf(float x);
|
||||
long int lrintl(long double x);
|
||||
long long int llrint(double x);
|
||||
long long int llrintf(float x);
|
||||
long long int llrintl(long double x);
|
||||
|
||||
double round(double x);
|
||||
float roundf(float x);
|
||||
long double roundl(long double x);
|
||||
|
||||
long int lround(double x);
|
||||
long int lroundf(float x);
|
||||
long int lroundl(long double x);
|
||||
long long int llround(double x);
|
||||
long long int llroundf(float x);
|
||||
long long int llroundl(long double x);
|
||||
|
||||
double trunc(double x);
|
||||
float truncf(float x);
|
||||
long double truncl(long double x);
|
||||
|
||||
double fmod(double x, double y);
|
||||
float fmodf(float x, float y);
|
||||
long double fmodl(long double x, long double y);
|
||||
|
||||
double remainder(double x, double y);
|
||||
float remainderf(float x, float y);
|
||||
long double remainderl(long double x, long double y);
|
||||
|
||||
double remquo(double x, double y, int *quo);
|
||||
float remquof(float x, float y, int *quo);
|
||||
long double remquol(long double x, long double y, int *quo);
|
||||
|
||||
double copysign(double x, double y);
|
||||
float copysignf(float x, float y);
|
||||
long double copysignl(long double x, long double y);
|
||||
|
||||
double nan(const char *tag);
|
||||
float nanf(const char *tagp);
|
||||
long double nanl(const char *tagp);
|
||||
|
||||
double nextafter(double x, double y);
|
||||
float nextafterf(float x, float y);
|
||||
long double nextafterl(long double x, long double y);
|
||||
|
||||
double nexttoward(double x, long double y);
|
||||
float nexttowardf(float x, long double y);
|
||||
long double nexttowardl(long double x, long double y);
|
||||
|
||||
double fdim(double x, double y);
|
||||
float fdimf(float x, float y);
|
||||
long double fdiml(long double x, long double y);
|
||||
|
||||
double fmax(double x, double y);
|
||||
float fmaxf(float x, float y);
|
||||
long double fmaxl(long double x, long double y);
|
||||
|
||||
double fmin(double x, double y);
|
||||
float fminf(float x, float y);
|
||||
long double fminl(long double x, long double y);
|
||||
|
||||
double fma(double x, double y, double z);
|
||||
float fmaf(float x, float y, float z);
|
||||
long double fmal(long double x, long double y, long double z);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern C
|
||||
#endif
|
||||
Reference in New Issue
Block a user