compiled newlib, need to hook up the system calls

This commit is contained in:
2026-06-28 17:58:58 -05:00
parent 43bc0df81a
commit 97357f3170
337 changed files with 47955 additions and 114 deletions

467
sysroot/usr/include/math.h Normal file
View File

@@ -0,0 +1,467 @@
/* Mathematics <math.h>
This file is part of the Public Domain C Library (PDCLib).
Permission is granted to use, modify, and / or redistribute at will.
*/
#ifndef _PDCLIB_MATH_H
#define _PDCLIB_MATH_H _PDCLIB_MATH_H
#ifdef __cplusplus
extern "C" {
#endif
#include "pdclib/_PDCLIB_lib_ext1.h"
#include "pdclib/_PDCLIB_internal.h"
typedef float float_t;
typedef double double_t;
#define HUGE_VALF _PDCLIB_HUGE_VALF;
#define HUGE_VAL _PDCLIB_HUGE_VAL;
#define HUGE_VALL _PDCLIB_HUGE_VALL;
#define INFINITY (_PDCLIB_FLT_MAX * 2)
#define NAN ( -(0.0f / 0.0f) )
#define FP_FAST_FMAF
#define FP_FAST_FMA
#define FP_FAST_FMAL
#define FP_ILOGB0 INT_MIN
#define FP_ILOGBNAN INT_MAX
#define MATH_ERRNO 1
#define MATH_ERREXCEPT 2
#define math_errhandling
/* Classification */
/* FP_ZERO, FP_SUBNORMAL, FP_NORMAL */
#define isfinite( x ) _PDCLIB_GENERIC( isfinite, x )
/* FP_INFINITE */
#define isinf( x ) _PDCLIB_GENERIC( isinf, x )
/* FP_NAN */
#define isnan( x ) _PDCLIB_GENERIC( isnan, x )
/* FP_NORMAL */
#define isnormal( x ) _PDCLIB_GENERIC( isnormal, x )
/* Negative */
#define signbit( x ) _PDCLIB_GENERIC( signbit, x )
/* See FP_* classes */
#define fpclassify( x ) _PDCLIB_GENERIC( fpclassify, x )
#define FP_INFINITE 1
#define FP_NAN 2
#define FP_NORMAL 3
#define FP_SUBNORMAL 4
#define FP_ZERO 5
/* Trigonometric functions */
/* The principal value of the arc cosine of x.
Domain error for arguments not in the interval -1..+1.
Returns the interval 0..Pi radians.
*/
double acos( double x );
float acosf( float x );
long double acosl( long double x );
/* The principal value of the arc sine of x.
Domain error for arguments not in the interval -1..+1.
Returns the interval -Pi/2..Pi/2 radians.
*/
double asin( double x );
float asinf( float x );
long double asinl( long double x );
/* The principal value of the arc tangent of x.
Returns the interval -Pi/2..Pi/2 radians.
*/
double atan( double x );
float atanf( float x );
long double atanl( long double x );
/* The value of the arc tangent of y/x, using the signs of both
arguments to determine the quadrant of the return value.
Domain error if both arguments are zero.
Returns the interval -Pi..Pi radians.
*/
double atan2( double y, double x );
float atan2f( float y, float x );
long double atan2l( long double y, long double x );
/* Cosine of x in radians. */
double cos( double x );
float cosf( float x );
long double cosl( long double x );
/* Sine of x in radians. */
double sin( double x );
float sinf( float x );
long double sinl( long double x );
/* Tangent of x in radians. */
double tan( double x );
float tanf( float x );
long double tanl( long double x );
/* Hyperbolic functions */
/* The (nonnegative) arc hyberbolic cosine of x.
Domain error for arguments less than 1.
Returns the interval 0..INF.
*/
double acosh( double x );
float acoshf( float x );
long double acoshl( long double x );
/* The arc hyberbolic sine of x.
*/
double asinh( double x );
float asinhf( float x );
long double asinhl( long double x );
/* The arc hyberbolic tangent of x.
Domain error for arguments not in -1..1.
Range error if -1 or +1.
*/
double atanh( double x );
float atanhf( float x );
long double atanhl( long double x );
/* The hyberbolic cosine of x.
Range error if magnitude of x is too large.
*/
double cosh( double x );
float coshf( float x );
long double coshl( long double x );
/* The hyberbolic sine of x.
Range error if magnitude of x is too large.
*/
double sinh( double x );
float sinhf( float x );
long double sinhl( long double x );
/* The hyberbolic tangent of x.
Range error if magnitude of x is too large.
*/
double tanh( double x );
float tanhf( float x );
long double tanhl( long double x );
/* Exponential and logarithmic functions */
/* The base-e exponential of x.
Range error if magnitude of x is too large.
*/
double exp( double x );
float expf( float x );
long double expl( long double x );
/* The base-2 exponential of x.
Range error if magnitude of x is too large.
*/
double exp2( double x );
float exp2f( float x );
long double exp2l( long double x );
/* The base-e exponential of x, minus 1.
Range error if magnitude of x is too large.
Returns e^x - 1.
*/
double expm1( double x );
float expm1f( float x );
long double expm1l( long double x );
/* Breaks a floating-point number into a normalized fraction
and an integral power of 2 (stored in the object pointed
to by exp).
*/
double frexp( double value, int * exp );
float frexpf( float value, int * exp );
long double frexpl( long double value, int * exp );
/* Extract the exponent of x as a signed int.
* Returns FP_ILOGB0 if x is zero, INT_MAX if x is infinite,
* FP_ILOGBNAN if x is a NaN. Range error may occur if x is 0.
*/
double ilogb( double x );
float ilogbf( float x );
long double ilogbl( long double x );
/* Multiply x by 2^exp. Range error may occur. */
double ldexp( double x, int exp );
float ldexpf( float x, int exp );
long double ldexpl( long double x, int exp );
/* Compute the base-e logarithm of x.
Domain error if argument is negative.
Range error if argument is zero.
*/
double log( double x );
float logf( float x );
long double logl( long double x );
/* Compute the base-10 logarithm of x.
Domain error if argument is negative.
Range error if argument is zero.
*/
double log10( double x );
float log10f( float x );
long double log10l( long double x );
/* Compute the base-e logarithm of 1 plus x.
Domain error if argument is less than -1.
Range error if argument is -1.
*/
double log1p( double x );
float log1pf( float x );
long double log1pl( long double x );
/* Compute the base-2 logarithm of x.
Domain error if argument is negative.
Range error if argument is zero.
*/
double log2( double x );
float log2f( float x );
long double log2l( long double x );
/* Extract exponent of x, as signed integer in floating-point format.
Subnormal is treated as though normalized.
Domain error if argument is zero.
*/
double logb( double x );
float logbf( float x );
long double logbl( long double x );
/* Breaks value into integral and fractional parts, each having
the same type and sign as the argument. The integral part is
stored in the object pointed to by iptr.
*/
double modf( double value, double * exp );
float modff( float value, float * exp );
long double modfl( long double value, long double * exp );
/* Compute x * FLT_RADIX^n efficiently. Range error may occur. */
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 );
/* Power and absolute-value functions */
/* Returns x^1/3. */
double cbrt( double x );
float cbrtf( float x );
long double cbrtl( long double x );
/* Returns absolute value of x. */
double fabs( double x );
float fabsf( float x );
long double fabsl( long double x );
/* Returns square root of the sum of squares of x and y.
Range error may occur.
*/
double hypot( double x, double y );
float hypotf( float x, float y );
long double hypotl( long double x, long double y );
/* Returns x^y.
Domain error if x is finite and negative and y is finite and not
an integer value.
Domain error if x is zero and y is less or equal zero.
Range error may occur.
*/
double pow( double x, double y );
float powf( float x, float y );
long double powl( long double x, long double y );
/* Returns x^1/2. */
double sqrt( double x );
float sqrtf( float x );
long double sqrtl( long double x );
/* Error and gamma functions */
/* Compute the error function of x. */
double erf( double x );
float erff( float x );
long double erfl( long double x );
/* Compute the complementary error function of x.
Range error if x is too large.
*/
double erfc( double x );
float erfcf( float x );
long double erfcl( long double x );
/* Compute the natural logarithm of the absolute value of gamma(x).
Range error if x is too lange, x is negative, or zero.
*/
double lgamma( double x );
float lgammaf( float x );
long double lgammal( long double x );
/* Compute the gamma function of x.
Range error if x is negative, or zero, too large or too small.
*/
double tgamma( double x );
float tgammaf( float x );
long double tgammal( long double x );
/* Nearest integer functions */
/* The smallest integer no less than x. */
double ceil( double x );
float ceilf( float x );
long double ceill( long double x );
/* The largest integer no greater than x. */
double floor( double x );
float floorf( float x );
long double floorl( long double x );
/* Round in current rounding direction. No "inexact" exception. */
double nearbyint( double x );
float nearbyintf( float x );
long double nearbyintl( long double x );
/* Round in current rounding direction. Raises "inexact" exception. */
double rint( double x );
float rintf( float x );
long double rintl( long double x );
/* Round in current rounding direction.
Range error if magnitude is too large.
*/
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 );
/* Round to nearest, breaking ties away from zero. */
double round( double x );
float roundf( float x );
long double roundl( long double x );
/* Round to nearest, breaking ties away from zero.
Range error if magnitude is too large.
*/
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 );
/* Round toward zero. */
double trunc( double x );
float truncf( float x );
long double truncl( long double x );
/* Remainder functions */
/* Compute the remainder of x / y. */
double fmod( double x, double y );
float fmodf( float x, float y );
long double fmodl( long double x, long double y );
/* Compute the remainder of x REM y. */
double remainder( double x, double y );
float remainderf( float x, float y );
long double remainderl( long double x, long double y );
/* Compute the remainder of x REM y. In quo store a value with
the sign of the quotient and magnitude congruent mod 2^n to
the magnitude of the integral quotient of x / y, with n
an implementation-defined integer greater than or equal to 3.
*/
double rmquo( double x, double y );
float rmquof( float x, float y );
long double rmquol( long double x, long double y );
/* Manipulation functions */
/* Returns a value with magnitude of x and sign of y. */
double copysign( double x, double y );
float copysignf( float x, float y );
long double copysignl( long double x, long double y );
/* Returns a NaN value with the given n-char sequence. */
double nan( const char * tagp );
float nanf( const char * tagp );
long double nanl( const char * tagp );
/* Determine the next representable value after x in direction y.
Range error if result is not representable.
*/
double nextafter( double x, double y );
float nextafterf( float x, float y );
long double nextafterl( long double x, long double y );
/* As nextafter but with long double as second parameter. */
double nexttoward( double x, double y );
float nexttowardf( float x, float y );
long double nexttowardl( long double x, long double y );
/* Maximum, minimum, and positive difference functions */
/* Positive difference. */
double fdim( double x, double y );
float fdimf( float x, float y );
long double fdiml( long double x, long double y );
/* Maximum. */
double fmax( double x, double y );
float fmaxf( float x, float y );
long double fmaxl( long double x, long double y );
/* Minimum. */
double fmin( double x, double y );
float fminf( float x, float y );
long double fminl( long double x, long double y );
/* Multiply-add. */
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 );
/* Comparison macros (without "invalid" FP exception) */
#define isgreater( x, y )
#define isgreaterequal( x, y )
#define isless( x, y )
#define islessequal( x, y )
#define islessgreater( x, y )
#define isunordered( x, y )
#ifdef __cplusplus
}
#endif
/* Extension hook for downstream projects that want to have non-standard
extensions to standard headers.
*/
#ifdef _PDCLIB_EXTEND_MATH_H
#include _PDCLIB_EXTEND_MATH_H
#endif
#endif