From: solar Date: Wed, 19 Nov 2003 06:08:47 +0000 (+0000) Subject: Initial load with header templates and some first declarations. X-Git-Tag: OLD~34 X-Git-Url: https://pd.if.org/git/?p=pdclib;a=commitdiff_plain;h=1e221deb9ee725a14b3656f94e2763f8faeb18dc Initial load with header templates and some first declarations. --- diff --git a/includes/assert.h b/includes/assert.h new file mode 100644 index 0000000..e4363f5 --- /dev/null +++ b/includes/assert.h @@ -0,0 +1,38 @@ +// ---------------------------------------------------------------------------- +// $Id$ +// ---------------------------------------------------------------------------- +// Public Domain C Library - http://pdclib.sourceforge.net +// This code is Public Domain. Use, modify, and redistribute at will. +// ---------------------------------------------------------------------------- +// Provides the debug macro assert(). +// ---------------------------------------------------------------------------- + +#ifndef __ASSERT_H +#define __ASSERT_H __ASSERT_H + +// ---------------------------------------------------------------------------- +// AUXILIARY + +// Helper function doing the print to stderr and call to abort(). +void __assert( char const * const expression, // the tested expression + char const * const file, // name of source file + char const * const function, // name of function + int const line ); // number of source file line + +// ---------------------------------------------------------------------------- +// DEFINES + +// TODO: is given as (void) 0, which might give a "C style +// cast" warning under C++. Find a void expression that does not give warnings. + +// TODO: Check the macro for if-compatibility. + +#undef assert +#if defined NDEBUG +#define assert( x ) +#else +#define assert( x ) ( x ) ? \ + : __assert( #x, __FILE__, __func__, __LINE__ ) +#endif + +#endif // __ASSERT_H diff --git a/includes/complex.h b/includes/complex.h new file mode 100644 index 0000000..6abc92a --- /dev/null +++ b/includes/complex.h @@ -0,0 +1,262 @@ +// ---------------------------------------------------------------------------- +// $Id$ +// ---------------------------------------------------------------------------- +// Public Domain C Library - http://pdclib.sourceforge.net +// This code is Public Domain. Use, modify, and redistribute at will. +// ---------------------------------------------------------------------------- +// Provides the types float _Complex, double _Complex and long double _Complex +// plus math functions on those types. +// ---------------------------------------------------------------------------- + +#ifndef __COMPLEX_H +#define __COMPLEX_H __COMPLEX_H + +// ---------------------------------------------------------------------------- +// DEFINES + +// TODO: #defines for complex, _Complex_I, imaginary, _Imaginary_I, and I. + +// ---------------------------------------------------------------------------- +// FUNCTIONS - C++ + +#ifdef __cplusplus + +// These functions return the absolute value (magnitude) of their parameter. +double abs( double _Complex x ); +float abs( float _Complex x ); +long double abs( long double _Complex x ); +double fabs( double _Complex x ); +float fabs( float _Complex x ); +long double fabs( long double _Complex x ); + +// These functions return the sine of their parameter. +double _Complex sin( double _Complex x ); +float _Complex sin( float _Complex x ); +long double _Complex sin( long double _Complex x ); + +// These functions return the hyperbolic sine of their parameter. +double _Complex sinh( double _Complex x ); +float _Complex sinh( float _Complex x ); +long double _Complex sinh( long double _Complex x ); + +// These functions return the arcsine of their parameter. +double _Complex asin( double _Complex x ); +float _Complex asin( float _Complex x ); +long double _Complex asin( long double _Complex x ); + +// These functions return the hyperbolic arcsine of their parameter. +double _Complex asinh( double _Complex x ); +float _Complex asinh( float _Complex x ); +long double _Complex asinh( long double _Complex x ); + +// These functions return the cosine of their parameter. +double _Complex cos( double _Complex x ); +float _Complex cos( float _Complex x ); +long double _Complex cos( long double _Complex x ); + +// These functions return the hyperbolic cosine of their parameter. +double _Complex cosh( double _Complex x ); +float _Complex cosh( float _Complex x ); +long double _Complex cosh( long double _Complex x ); + +// These functions return the arccosine of their parameter. +double _Complex acos( double _Complex x ); +float _Complex acos( float _Complex x ); +long double _Complex acos( long double _Complex x ); + +// These functions return the hyperbolic arccosine of their parameter. +double _Complex acosh( double _Complex x ); +float _Complex acosh( float _Complex x ); +long double _Complex acosh( long double _Complex x ); + +// These functions return the tangent of their parameter. +double _Complex tan( double _Complex x ); +float _Complex tan( float _Complex x ); +long double _Complex tan( long double _Complex x ); + +// These functions return the hyperbolic tangent of their parameter. +double _Complex tanh( double _Complex x ); +float _Complex tanh( float _Complex x ); +long double _Complex tanh( long double _Complex x ); + +// These functions return the arctangent of their parameter. +double _Complex atan( double _Complex x ); +float _Complex atan( float _Complex x ); +long double _Complex atan( long double _Complex x ); + +// These functions return the hyperbolic arctangent of their parameter. +double _Complex atanh( double _Complex x ); +float _Complex atanh( float _Complex x ); +long double _Complex atanh( long double _Complex x ); + +// These functions return the imaginary part of their parameter. +double imag( double _Complex x ); +float imag( float _Complex x ); +long double imag( long double _Complex x ); +float cimag( float _Complex x ); +long double cimag( long double _Complex x ); + +// These functions return the real part of their parameter. +double real( double _Complex x ); +float real( float _Complex x ); +long double real( long double _Complex x ); +float creal( float _Complex x ); +long double creal( long double _Complex x ); + +// These functions return value^exponent. +double _Complex pow( double _Complex value, + double _Complex exponent ); +float _Complex pow( float _Complex value, + float _Complex exponent ); +long double _Complex pow( long double _Complex value, + long double _Complex exponent ); + +// These functions return the square root of their parameter. +double _Complex sqrt( double _Complex x ); +float _Complex sqrt( float _Complex x ); +long double _Complex sqrt( long double _Complex x ); + +// These functions return the exponential of their parameter. +double _Complex exp( double _Complex x ); +float _Complex exp( float _Complex x ); +long double _Complex exp( long double _Complex x ); + +// These functions return the logarithm of their parameter. +double _Complex log( double _Complex x ); +float _Complex log( float _Complex x ); +long double _Complex log( long double _Complex x ); + +// These functions return the phase angle of their parameter. +double arg( double _Complex x ); +float arg( float _Complex x ); +long double arg( long double _Complex x ); +float carg( float _Complex x ); +long double carg( long double _Complex x ); + +// These functions return the conjugate of their parameter. +float _Complex conj( float _Complex x ); +long double _Complex conj( long double _Complex x ); + +// These functions return the projection of their parameter. +float _Complex cproj( float _Complex x ); +long double _Complex cproj( long double _Complex x ); + +#endif // __cplusplus + +// ---------------------------------------------------------------------------- +// FUNCTIONS - Standard C + +// These functions return the absolute value (magnitude) of their parameter. +double cabs( double _Complex x ); +float cabsf( float _Complex x ); +long double cabsl( long double _Complex x ); + +// These functions return the sine of their parameter. +double _Complex csin( double _Complex x ); +float _Complex csinf( float _Complex x ); +long double _Complex csinl( long double _Complex x ); + +// These functions return the hyperbolic sine of their parameter. +double _Complex csinh( double _Complex x ); +float _Complex csinhf( float _Complex x ); +long double _Complex csinhl( long double _Complex x ); + +// These functions return the arcsine of their parameter. +double _Complex casin( double _Complex x ); +float _Complex casinf( float _Complex x ); +long double _Complex casinl( long double _Complex x ); + +// These functions return the hyperbolic arcsine of their parameter. +double _Complex casinh( double _Complex x ); +float _Complex casinhf( float _Complex x ); +long double _Complex casinhl( long double _Complex x ); + +// These functions return the cosine of their parameter. +double _Complex ccos( double _Complex x ); +float _Complex ccosf( float _Complex x ); +long double _Complex ccosl( long double _Complex x ); + +// These functions return the hyperbolic cosine of their parameter. +double _Complex ccosh( double _Complex x ); +float _Complex ccoshf( float _Complex x ); +long double _Complex ccoshl( long double _Complex x ); + +// These functions return the arccosine of their parameter. +double _Complex cacos( double _Complex x ); +float _Complex cacosf( float _Complex x ); +long double _Complex cacosl( long double _Complex x ); + +// These functions return the hyperbolic arccosine of their parameter. +double _Complex cacosh( double _Complex x ); +float _Complex cacoshf( float _Complex x ); +long double _Complex cacoshl( long double _Complex x ); + +// These functions return the tangent of their parameter. +double _Complex ctan( double _Complex x ); +float _Complex ctanf( float _Complex x ); +long double _Complex ctanl( long double _Complex x ); + +// These functions return the hyperbolic tangent of their parameter. +double _Complex ctanh( double _Complex x ); +float _Complex ctanhf( float _Complex x ); +long double _Complex ctanhl( long double _Complex x ); + +// These functions return the arctangent of their parameter. +double _Complex catan( double _Complex x ); +float _Complex catanf( float _Complex x ); +long double _Complex catanl( long double _Complex x ); + +// These functions return the hyperbolic arctangent of their parameter. +double _Complex catanh( double _Complex x ); +float _Complex catanhf( float _Complex x ); +long double _Complex catanhl( long double _Complex x ); + +// These functions return the imaginary part of their parameter. +double cimag( double _Complex x ); +float cimagf( float _Complex x ); +long double cimagl( long double _Complex x ); + +// These functions return the real part of their parameter. +double creal( double _Complex x ); +float crealf( float _Complex x ); +long double creall( long double _Complex x ); + +// These functions return value^exponent. +double _Complex cpow( double _Complex value, + double _Complex exponent ); +float _Complex cpowf( float _Complex value, + float _Complex exponent ); +long double _Complex cpowl( long double _Complex value, + long double _Complex exponent ); + +// These functions return the square root of their parameter. +double _Complex csqrt( double _Complex x ); +float _Complex csqrtf( float _Complex x ); +long double _Complex csqrtl( long double _Complex x ); + +// These functions return the exponential of their parameter. +double _Complex cexp( double _Complex x ); +float _Complex cexpf( float _Complex x ); +long double _Complex cexpl( long double _Complex x ); + +// These functions return the logarithm of their parameter. +double _Complex clog( double _Complex x ); +float _Complex clogf( float _Complex x ); +long double _Complex clogl( long double _Complex x ); + +// These functions return the phase angle of their value. +double carg( double _Complex x ); +float cargf( float _Complex x ); +long double cargl( long double _Complex x ); + +// These functions return the conjugate of their parameter. +double _Complex conj( double _Complex x ); +float _Complex conjf( float _Complex x ); +long double _Complex conjl( long double _Complex x ); + +// These functions return the projection of their parameter. +double _Complex cproj( double _Complex x ); +float _Complex cprojf( float _Complex x ); +long double _Complex cprojl( long double _Complex x ); + +#endif // __COMPLEX_H diff --git a/includes/ctype.h b/includes/ctype.h new file mode 100644 index 0000000..a9ecc25 --- /dev/null +++ b/includes/ctype.h @@ -0,0 +1,60 @@ +// ---------------------------------------------------------------------------- +// $Id$ +// ---------------------------------------------------------------------------- +// Public Domain C Library - http://pdclib.sourceforge.net +// This code is Public Domain. Use, modify, and redistribute at will. +// ---------------------------------------------------------------------------- +// Provides functions for determining the locale-dependent type of a character, +// plus locale-aware uppercase / lowercase conversions. (See also locale.h.) +// ---------------------------------------------------------------------------- + +#ifndef __CTYPE_H +#define __CTYPE_H __CTYPE_H + +// ---------------------------------------------------------------------------- +// FUNCTIONS + +// returns nonzero if c is alphanumeric in the locale. +int isalnum( int c ); + +// returns nonzero if c is alphabetic character in the locale. +int isalpha( int c ); + +// returns nonzero if c is a horizontal blank in the locale. +int isblank( int c ); + +// returns nonzero if c is a control character in the locale. +int iscntrl( int c ); + +// returns nonzero if c is a digit in the locale. +int isdigit( int c ); + +// returns nonzero if c is alphanumeric or a punctuation in the locale. +int isgraph( int c ); + +// returns nonzero if c is a lowercase alphabetic character in the locale. +int islower( int c ); + +// returns nonzero if c is a printable character ( isgraph( ) or isblank( ) ) in +// the locale. +int isprint( int c ); + +// returns nonzero if c is a punctuation in the locale. +int ispunct( int c ); + +// returns nonzero if c is a whitespace in the locale. +int isspace( int c ); + +// returns nonzero if c is an uppercase alphabetical character in the locale. +int isupper( int c ); + +// returns nonzero if c is a hexedecimal digit in the locale. +int isxdigit( int c ); + +// returns lowercase equivalent for c in locale. +int tolower( int c ); + +// returns uppercase equivalent for c in locale. +int toupper( int c ); + +#endif // __CTYPE_H diff --git a/includes/errno.h b/includes/errno.h new file mode 100644 index 0000000..873166a --- /dev/null +++ b/includes/errno.h @@ -0,0 +1,25 @@ +// ---------------------------------------------------------------------------- +// $Id$ +// ---------------------------------------------------------------------------- +// Public Domain C Library - http://pdclib.sourceforge.net +// This code is Public Domain. Use, modify, and redistribute at will. +// ---------------------------------------------------------------------------- +// Provides 'errno', the auxiliary error handling of the standard library. +// ---------------------------------------------------------------------------- + +#ifndef __ERRNO_H +#define __ERRNO_H __ERRNO_H + +// ---------------------------------------------------------------------------- +// DECLARATIONS + +extern int errno; + +// ---------------------------------------------------------------------------- +// DEFINES + +#define EDOM 1 // domain error +#define EILSEQ 2 // illegal (multibyte) sequence +#define ERANGE 3 // range error + +#endif // __ERRNO_H diff --git a/includes/fenv.h b/includes/fenv.h new file mode 100644 index 0000000..395e980 --- /dev/null +++ b/includes/fenv.h @@ -0,0 +1,15 @@ +// ---------------------------------------------------------------------------- +// $Id$ +// ---------------------------------------------------------------------------- +// Public Domain C Library - http://pdclib.sourceforge.net +// This code is Public Domain. Use, modify, and redistribute at will. +// ---------------------------------------------------------------------------- +// TODO +// ---------------------------------------------------------------------------- + +#ifndef __FENV_H +#define __FENV_H __FENV_H + +// TODO + +#endif // __FENV_H diff --git a/includes/inttypes.h b/includes/inttypes.h new file mode 100644 index 0000000..620a2f4 --- /dev/null +++ b/includes/inttypes.h @@ -0,0 +1,15 @@ +// ---------------------------------------------------------------------------- +// $Id$ +// ---------------------------------------------------------------------------- +// Public Domain C Library - http://pdclib.sourceforge.net +// This code is Public Domain. Use, modify, and redistribute at will. +// ---------------------------------------------------------------------------- +// TODO +// ---------------------------------------------------------------------------- + +#ifndef __INTTYPES_H +#define __INTTYPES_H __INTTYPES_H + +// TODO + +#endif // __INTTYPES_H diff --git a/includes/iso646.h b/includes/iso646.h new file mode 100644 index 0000000..cc8be74 --- /dev/null +++ b/includes/iso646.h @@ -0,0 +1,32 @@ +// ---------------------------------------------------------------------------- +// $Id$ +// ---------------------------------------------------------------------------- +// Public Domain C Library - http://pdclib.sourceforge.net +// This code is Public Domain. Use, modify, and redistribute at will. +// ---------------------------------------------------------------------------- +// Provides "readable" aliases for bit operators. +// ---------------------------------------------------------------------------- + +#ifndef __ISO646_H +#define __ISO646_H __ISO646_H + +// ---------------------------------------------------------------------------- +// DEFINES + +#ifndef __cplusplus + +#define and && +#define and_eq &= +#define bitand & +#define bitor | +#define compl ~ +#define not ! +#define not_eq != +#define or || +#define or_eq |= +#define xor ^ +#define xor_eq ^= + +#endif // __cplusplus + +#endif // __ISO646_H diff --git a/includes/limits.h b/includes/limits.h new file mode 100644 index 0000000..168b7b0 --- /dev/null +++ b/includes/limits.h @@ -0,0 +1,15 @@ +// ---------------------------------------------------------------------------- +// $Id$ +// ---------------------------------------------------------------------------- +// Public Domain C Library - http://pdclib.sourceforge.net +// This code is Public Domain. Use, modify, and redistribute at will. +// ---------------------------------------------------------------------------- +// TODO +// ---------------------------------------------------------------------------- + +#ifndef __LIMITS_H +#define __LIMITS_H __LIMITS_H + +// TODO + +#endif // __LIMITS_H diff --git a/includes/locale.h b/includes/locale.h new file mode 100644 index 0000000..e16b075 --- /dev/null +++ b/includes/locale.h @@ -0,0 +1,85 @@ +// ---------------------------------------------------------------------------- +// $Id$ +// ---------------------------------------------------------------------------- +// Public Domain C Library - http://pdclib.sourceforge.net +// This code is Public Domain. Use, modify, and redistribute at will. +// ---------------------------------------------------------------------------- +// Provides information on locale specifics as well as a function to change the +// active locale to something else but the startup default "C". +// ---------------------------------------------------------------------------- + +#ifndef __LOCALE_H +#define __LOCALE_H __LOCALE_H + +// ---------------------------------------------------------------------------- +// DEFINES + +#define NULL 0 + +// Locale categories +#define LC_COLLATE 1 // affects strcoll() and strxfrm() +#define LC_CTYPE 2 // affects ctype.h +#define LC_MONETARY 4 // affects monetary aspect of localeconv() +#define LC_NUMERIC 8 // affects numeric aspect of localeconv() +#define LC_TIME 16 // affects strftime() +#define LC_ALL 31 // affects all of the above + +// ---------------------------------------------------------------------------- +// TYPEDEFS + +// TODO: Detailed documentation of grouping formats and field values + +struct lconv +{ + // LC_NUMERIC + char * decimal_point; // decimal point + char * grouping; // grouping + char * thousands_sep; // grouping string + + // LC_MONETARY + char * mon_decimal_point; // decimal point + char * mon_grouping; // grouping + char * mon_thousands_sep; // grouping string + char * negative_sign; // negative sign + char * positive_sign; // positive sign + char * currency_symbol; // currency symbol + char frac_digits; // after-point digits + // negative values + char n_cs_precedes; // currency symbol preceding value? + char n_sep_by_space; // currency symbol seperated by space? + char n_sign_posn; // sign position + // positive values + char p_cs_precedes; // currency symbol preceding value? + char p_sep_by_space; // currency symbol seperated by space? + char p_sign_posn; // sign position? + + // for international monetary values + char * int_curr_symbol; // international currency symbol (ISO 4217) + char int_frac_digits; // after-point digits + // negative values + char int_n_cs_precedes; // currency symbol preceding value? + char int_n_sep_by_space; // currency symbol seperated by space? + char int_n_sign_posn; // sign position? + // positive values + char int_p_cs_precedes; // currency symbol preceding value? + char int_p_sep_by_space; // currency symbol seperated by space? + char int_p_sign_posn; // sign position? +}; + +// ---------------------------------------------------------------------------- +// FUNCTIONS + +// Returns a (pointer to a) lconv structure holding the values for the current +// locale. The structure must not be changed; values might become outdated with +// later calls to setlocale() changing LC_NUMERIC, LC_MONETARY or LC_ALL. +struct lconv * localeconv( void ); + +// Categories are selected by OR'ing the LC_* defines from this header. The +// function sets the current locale to that defined by locale_name, and returns +// the name of the new locale (if it was set successfully) or a null pointer +// (if unsuccessful). At startup, the current locale is "C" by default. A null +// pointer as locale_name leaves the locale unchanged, an empty string sets it +// to the "native" locale. +char * setlocale( int categories, const char * locale_name ); + +#endif // __LOCALE_H diff --git a/includes/math.h b/includes/math.h new file mode 100644 index 0000000..813f3c9 --- /dev/null +++ b/includes/math.h @@ -0,0 +1,610 @@ +// ---------------------------------------------------------------------------- +// $Id$ +// ---------------------------------------------------------------------------- +// Public Domain C Library - http://pdclib.sourceforge.net +// This code is Public Domain. Use, modify, and redistribute at will. +// ---------------------------------------------------------------------------- +// Provides floating point math functions. +// ---------------------------------------------------------------------------- + +#ifndef __MATH_H +#define __MATH_H __MATH_H + +// ---------------------------------------------------------------------------- +// DEFINES + +#define HUGE_VAL // TODO +#define HUGE_VALF // TODO +#define HUGE_VALL // TODO + +#define INFINITY // TODO +#define NAN // TODO + +#define FP_FAST_FMA // TODO +#define FP_FAST_FMAF // TODO +#define FP_FAST_FMAL // TODO + +#define FP_INFINITE // TODO +#define FP_NAN // TODO +#define FP_NORMAL // TODO +#define FP_SUBNORMAL // TODO +#define FP_ZERO // TODO + +#define FP_ILOGB0 // TODO +#define FP_ILOGBNAN // TODO + +#define MATH_ERRNO 1 +#define MATH_ERREXCEPT 2 +#define math_errhandling // TODO + +// -------------------------------------------------------------------------- +// TYPEDEFS + +typedef f-type double_t; // TODO +typedef f-type float_t; // TODO + +// -------------------------------------------------------------------------- +// MACROS + +#ifndef __cplusplus + +#define signbit(x) // TODO +#define fpclassify(x) // TODO +#define isfinite(x) // TODO +#define isinf(x) // TODO +#define isnan(x) // TODO +#define isnormal(x) // TODO + +#define isgreater(x, y) // TODO +#define isgreaterequal(x, y) // TODO +#define isless(x, y) // TODO +#define islessequal(x, y) // TODO +#define islessgreater(x, y) // TODO +#define isunordered(x, y) // TODO + +#else // __cplusplus + +// The same functionality as above is implemented as functions in C++. +bool signbit( float x ); +bool signbit( double x ); +bool signbit( long double x ); +int fpclassify( float x ); +int fpclassify( double x ); +int fpclassify( long double x ); +bool isfinite( float x ); +bool isfinite( double x ); +bool isfinite( long double x ); +bool isinf( float x ); +bool isinf( double x ); +bool isinf( long double x ); +bool isnan( float x ); +bool isnan( double x ); +bool isnan( long double x ); +bool isnormal( float x ); +bool isnormal( double x ); +bool isnormal( long double x ); +bool isgreater( float x, float y ); +bool isgreater( double x, double y ); +bool isgreater( long double x, long double y ); +bool isgreaterequal( float x, float y ); +bool isgreaterequal( double x, double y ); +bool isgreaterequal( long double x, long double y ); +bool isless( float x, float y ); +bool isless( double x, double y ); +bool isless( long double x, long double y ); +bool islessequal( float x, float y ); +bool islessequal( double x, double y ); +bool islessequal( long double x, long double y ); +bool islessgreater( float x, float y ); +bool islessgreater( double x, double y ); +bool islessgreater( long double x, long double y ); +bool isunordered( float x, float y ); +bool isunordered( double x, double y ); +bool isunordered( long double x, long double y ); + +#endif // __cplusplus + +// -------------------------------------------------------------------------- +// FUNCTIONS - C++ + +// These functions return the magnitude of their parameter. +double abs(double x); +float abs(float x); +long double abs(long double x); +float fabs(float x); +long double fabs(long double x); + +// These functions return the sine of their parameter. +float sin(float x); +long double sin(long double x); + +// These functions return the hyperbolic sine of their parameter. +float sinh(float x); +long double sinh(long double x); + +// These functions return the arcsine of their parameter. +float asin(float x); +long double asin(long double x); + +// These functions return the hyperbolic arcsine of their parameter. +float asinh(float x); +long double asinh(long double x); + +// These functions return the cosine of their parameter. +float cos(float x); +long double cos(long double x); + +// These functions return the hyperbolic cosine of their parameter. +float cosh(float x); +long double cosh(long double x); + +// These functions return the arccosine of their parameter. +float acos(float x); +long double acos(long double x); + +// These functions return the hyperbolic arccosine of their parameter. +float acosh(float x); +long double acosh(long double x); + +// These functions return the tangent of their parameter. +float tan(float x); +long double tan(long double x); + +// These functions return the hyperbolic tangent of their parameter. +float tanh(float x); +long double tanh(long double x); + +// These functions return the arctangent of their parameter. +float atan(float x); +long double atan(long double x); + +// These functions return the hyperbolic arctangent of their parameter. +float atanh(float x); +long double atanh(long double x); + +// TODO +float atan2(float y, float x); +long double atan2(long double y, long double x); + +// These functions return sqrt(x^2 + y^2). +float hypot(float x, float y); +long double hypot(long double x, long double y); + +// These functions return their parameter x, raised to the power y. +float pow(float x, float y); +long double pow(long double x, long double y); +double pow(double x, int y); +float pow(float x, int y); +long double pow(long double x, int y); + +// These functions return the square root of their parameter. +float sqrt(float x); +long double sqrt(long double x); + +// TODO +float cbrt(float x); +long double cbrt(long double x); + +// TODO +float exp(float x); +long double exp(long double x); + +// TODO +float exp2(float x); +long double exp2(long double x); + +// TODO +float expm1(float x); +long double expm1(long double x); + +// TODO +float frexp(float x, int * exponent); +long double frexp(long double x, int * exponent); + +// TODO +float ldexp(float x, int exponent); +long double ldexp(long double x, int exponent); + +// These functions return the natural logarithm of their parameter. +float log(float x); +long double log(long double x); + +// These functions return the logarithm (base 10) of their parameter. +float log10(float x); +long double log10(long double x); + +// These functions return the logarithm (base 2) of their parameter. +float log2(float x); +long double log2(long double x); + +// TODO +float logb(float x); +long double logb(long double x); + +// TODO +int ilogb(float x); +int ilogb(long double x); + +// TODO +float log1p(float x); +long double log1p(long double x); + +// These functions return the smallest integer no larger than their parameter +float ceil(float x); +long double ceil(long double x); + +// These functions return the biggest integer no larger than their parameter. +float floor(float x); +long double floor(long double x); + +// TODO +float fmod(float x, float y); +long double fmod(long double x, long double y); + +// TODO +float modf(float x, float * integer); +long double modf(long double x, long double * integer); + +// These functions return their parameter x, with the sign of parameter y. +float copysign(float x, float y); +long double copysign(long double x, long double y); + +// TODO +float erf(float x); +long double erf(long double x); + +// TODO +float erfc(float x); +long double erfc(long double x); + +// TODO +float fdim(float x, float y); +long double fdim(long double x, long double y); + +// TODO +float fma(float x, float y, float z); +long double fma(long double x, long double y, long double z); + +// These functions return the larger of their parameters. +float fmax(float x, float y); +long double fmax(long double x, long double y); + +// These functions return the smaller of their parameters. +float fmin(float x, float y); +long double fmin(long double x, long double y); + +// TODO +long long llrint(float x); +long long llrint(long double x); +long lrint(float x); +long lrint(long double x); +float rint(float x); +long double rint(long double x); + +// TODO +long long llround(float x); +long long llround(long double x); +long lround(float x); +long lround(long double x); +float round(float x); +long double round(long double x); + +// TODO +float trunc(float x); +long double trunc(long double x); + +// TODO +float nearbyint(float x); +long double nearbyint(long double x); + +// TODO +float nextafter(float x, float y); +long double nextafter(long double x, long double y); + +// TODO +float nexttoward(float x, long double y); +long double nexttoward(long double x, long double y); + +// TODO +float remainder(float x, float y); +long double remainder(long double x, long double y); + +// TODO +float remquo(float x, float y, int * quotient); +long double remquo(long double x, long double y, int * quotient); + +// TODO +float scalbn(float x, int ex); +long double scalbn(long double x, int ex); + +// TODO +float scalbln(float x, long ex); +long double scalbln(long double x, long ex); + +// TODO +float lgamma(float x); +long double lgamma(long double x); + +// TODO +float tgamma(float x); +long double tgamma(long double x); + +// ---------------------------------------------------------------------------- +// FUNCTIONS - Standard C + +// These functions return the magnitude of its parameter. +double fabs(double x); +float fabsf(float x); +long double fabsl(long double x); + +// These functions return the sine of its parameter. +double sin(double x); +float sinf(float x); +long double sinl(long double x); + +// These functions return the hyperbolic cosine of its parameter. +double sinh(double x); +float sinhf(float x); +long double sinhl(long double x); + +// These functions return the arcsine of its parameter. +double asin(double x); +float asinf(float x); +long double asinl(long double x); + +// These functions return the hyperbolic arcsine of their parameter. +double asinh(double x); +float asinhf(float x); +long double asinhl(long double x); + +// These functions return the cosine of its parameter. +double cos(double x); +float cosf(float x); +long double cosl(long double x); + +// These functions return the hyperbolic cosine of its parameter. +double cosh(double x); +float coshf(float x); +long double coshl(long double x); + +// These functions return the arccosine of its parameter. +double acos(double x); +float acosf(float x); +long double acosl(long double x); + +// These functions return the hyperbolic arccosine of their parameter. +double acosh(double x); +float acoshf(float x); +long double acoshl(long double x); + +// These functions return the tangent of its parameter. +double tan(double x); +float tanf(float x); +long double tanl(long double x); + +// These functions return the hyperbolic tangent of its parameter. +double tanh(double x); +float tanhf(float x); +long double tanhl(long double x); + +// These functions return the arctangent of its parameter. +double atan(double x); +float atanf(float x); +long double atanl(long double x); + +// These functions return the hyperbolic arctangent of their parameter. +double atanh(double x); +float atanhf(float x); +long double atanhl(long double x); + +// TODO +double atan2(double y, double x); +float atan2f(float y, float x); +long double atan2l(long double y, long double x); + +// These functions return sqrt(x^2 + y^2). +double hypot(double x, double y); +float hypotf(float x, float y); +long double hypotl(long double x, long double y); + +// These functions return its parameter x, raised to the power y. +double pow(double x, double y); +float powf(float x, float y); +long double powl(long double x, long double y); + +// These functions return the square root of its parameter. +double sqrt(double x); +float sqrtf(float x); +long double sqrtl(long double x); + +// TODO +double cbrt(double x); +float cbrtf(float x); +long double cbrtl(long double x); + +// TODO +double exp(double x); +float expf(float x); +long double expl(long double x); + +// TODO +double exp2(double x); +float exp2f(float x); +long double exp2l(long double x); + +// TODO +double expm1(double x); +float expm1f(float x); +long double expm1l(long double x); + +// TODO +double frexp(double x, int * exp); +float frexpf(float x, int * exp); +long double frexpl(long double x, int * exp); + +// TODO +double ldexp(double x, int exp); +float ldexpf(float x, int exp); +long double ldexpl(long double x, int exp); + +// These functions return the natural logarithm of its parameter. +double log(double x); +float logf(float x); +long double logl(long double x); + +// These functions return the logarithm (base 10) of its parameter. +double log10(double x); +float log10f(float x); +long double log10l(long double x); + +// These functions return the logarithm (base 2) of their parameter. +double log2(double x); +float log2f(float x); +long double log2l(long double x); + +// TODO +double logb(double x); +float logbf(float x); +long double logbl(long double x); + +// TODO +int ilogb(double x); +int ilogbf(float x); +int ilogbl(long double x); + +// TODO +double log1p(double x); +float log1pf(float x); +long double log1pl(long double x); + +// These functions return the smallest integer no smaller than value. +double ceil(double x); +float ceilf(float x); +long double ceill(long double x); + +// These functions return the largest integer no larger than its parameter. +double floor(double x); +float floorf(float x); +long double floorl(long double x); + +// TODO +double fmod(double x, double y); +float fmodf(float x, float y); +long double fmodl(long double x, long double y); + +// TODO +double modf(double x, double * integer); +float modff(float x, float * integer); +long double modfl(long double x, long double * integer); + +// These functions return their parameter x, with the sign of parameter y. +double copysign(double x, double y); +float copysignf(float x, float y); +long double copysignl(long double x, long double y); + +// TODO +double erf(double x); +float erff(float x); +long double erfl(long double x); + +// TODO +double erfc(double x); +float erfcf(float x); +long double erfcl(long double x); + +// TODO +double fdim(double x, double y); +float fdimf(float x, float y); +long double fdiml(long double x, long double y); + +// TODO +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); + +// These functions return the larger of their parameters. +double fmax(double x, double y); +float fmaxf(float x, float y); +long double fmaxl(long double x, long double y); + +// These functions return the smaller of their parameters. +double fmin(double x, double y); +float fminf(float x, float y); +long double fminl(long double x, long double y); + +// TODO +long long llrint(double x); +long long llrintf(float x); +long long llrintl(long double x); +long lrint(double x); +long lrintf(float x); +long lrintl(long double x); +double rint(double x); +float rintf(float x); +long double rintl(long double x); + +// TODO +long long llround(double x); +long long llroundf(float x); +long long llroundl(long double x); +long lround(double x); +long lroundf(float x); +long lroundl(long double x); +double round(double x); +float roundf(float x); +long double roundl(long double x); + +// TODO +double trunc(double x); +float truncf(float x); +long double truncl(long double x); + +double nearbyint(double x); +float nearbyintf(float x); +long double nearbyintl(long double x); + +double nextafter(double x, double y); +float nextafterf(float x, float y); +long double nextafterl(long double x, long double y); + +// TODO +double nexttoward(double x, long double y); +float nexttowardf(float x, long double y); +long double nexttowardl(long double x, long double y); + +// TODO +double remainder(double x, double y); +float remainderf(float x, float y); +long double remainderl(long double x, long double y); + +// TODO +double remquo(double x, double y, int * pquo); +float remquof(float x, float y, int * pquo); +long double remquol(long double x, long double y, int * pquo); + +// TODO +double scalbn(double x, int ex); +float scalbnf(float x, int ex); +long double scalbnl(long double x, int ex); + +// TODO +double scalbln(double x, long ex); +float scalblnf(float x, long ex); +long double scalblnl(long double x, long ex); + +// TODO +double lgamma(double x); +float lgammaf(float x); +long double lgammal(long double x); + +// TODO +double tgamma(double x); +float tgammaf(float x); +long double tgammal(long double x); + +// TODO +double nan(const char *str); +float nanf(const char *str); +long double nanl(const char *str); + +#endif // __MATH_H diff --git a/includes/setjmp.h b/includes/setjmp.h new file mode 100644 index 0000000..fe4fbb6 --- /dev/null +++ b/includes/setjmp.h @@ -0,0 +1,27 @@ +// ---------------------------------------------------------------------------- +// $Id$ +// ---------------------------------------------------------------------------- +// Public Domain C Library - http://pdclib.sourceforge.net +// This code is Public Domain. Use, modify, and redistribute at will. +// ---------------------------------------------------------------------------- +// TODO +// ---------------------------------------------------------------------------- + +#ifndef __SETJMP_H +#define __SETJMP_H __SETJMP_H + +// ---------------------------------------------------------------------------- +// TYPEDEFS + +struct jmp_buf[1]; + +// ---------------------------------------------------------------------------- +// FUNCTIONS + +// TODO +int setjmp(jmp_buf env); + +// TODO +void longjmp(jmp_buf env, int val); + +#endif // __SETJMP_H diff --git a/includes/signal.h b/includes/signal.h new file mode 100644 index 0000000..21f70e4 --- /dev/null +++ b/includes/signal.h @@ -0,0 +1,15 @@ +// ---------------------------------------------------------------------------- +// $Id$ +// ---------------------------------------------------------------------------- +// Public Domain C Library - http://pdclib.sourceforge.net +// This code is Public Domain. Use, modify, and redistribute at will. +// ---------------------------------------------------------------------------- +// TODO +// ---------------------------------------------------------------------------- + +#ifndef __SIGNAL_H +#define __SIGNAL_H __SIGNAL_H + +// TODO + +#endif // __SIGNAL_H diff --git a/includes/stdarg.h b/includes/stdarg.h new file mode 100644 index 0000000..ab5529a --- /dev/null +++ b/includes/stdarg.h @@ -0,0 +1,15 @@ +// ---------------------------------------------------------------------------- +// $Id$ +// ---------------------------------------------------------------------------- +// Public Domain C Library - http://pdclib.sourceforge.net +// This code is Public Domain. Use, modify, and redistribute at will. +// ---------------------------------------------------------------------------- +// TODO +// ---------------------------------------------------------------------------- + +#ifndef __STDARG_H +#define __STDARG_H __STDARG_H + +// TODO + +#endif // __STDARG_H diff --git a/includes/stdbool.h b/includes/stdbool.h new file mode 100644 index 0000000..734a52d --- /dev/null +++ b/includes/stdbool.h @@ -0,0 +1,15 @@ +// ---------------------------------------------------------------------------- +// $Id$ +// ---------------------------------------------------------------------------- +// Public Domain C Library - http://pdclib.sourceforge.net +// This code is Public Domain. Use, modify, and redistribute at will. +// ---------------------------------------------------------------------------- +// TODO +// ---------------------------------------------------------------------------- + +#ifndef __STDBOOL_H +#define __STDBOOL_H __STDBOOL_H + +// TODO + +#endif // __STDBOOL_H diff --git a/includes/stddef.h b/includes/stddef.h new file mode 100644 index 0000000..2147696 --- /dev/null +++ b/includes/stddef.h @@ -0,0 +1,15 @@ +// ---------------------------------------------------------------------------- +// $Id$ +// ---------------------------------------------------------------------------- +// Public Domain C Library - http://pdclib.sourceforge.net +// This code is Public Domain. Use, modify, and redistribute at will. +// ---------------------------------------------------------------------------- +// TODO +// ---------------------------------------------------------------------------- + +#ifndef __STDDEF_H +#define __STDDEF_H __STDDEF_H + +// TODO + +#endif // __STDDEF_H diff --git a/includes/stdint.h b/includes/stdint.h new file mode 100644 index 0000000..66f31fd --- /dev/null +++ b/includes/stdint.h @@ -0,0 +1,15 @@ +// ---------------------------------------------------------------------------- +// $Id$ +// ---------------------------------------------------------------------------- +// Public Domain C Library - http://pdclib.sourceforge.net +// This code is Public Domain. Use, modify, and redistribute at will. +// ---------------------------------------------------------------------------- +// TODO +// ---------------------------------------------------------------------------- + +#ifndef __STDINT_H +#define __STDINT_H __STDINT_H + +// TODO + +#endif // __STDINT_H diff --git a/includes/stdio.h b/includes/stdio.h new file mode 100644 index 0000000..62b5af1 --- /dev/null +++ b/includes/stdio.h @@ -0,0 +1,15 @@ +// ---------------------------------------------------------------------------- +// $Id$ +// ---------------------------------------------------------------------------- +// Public Domain C Library - http://pdclib.sourceforge.net +// This code is Public Domain. Use, modify, and redistribute at will. +// ---------------------------------------------------------------------------- +// TODO +// ---------------------------------------------------------------------------- + +#ifndef __STDIO_H +#define __STDIO_H __STDIO_H + +// TODO + +#endif // __STDIO_H diff --git a/includes/stdlib.h b/includes/stdlib.h new file mode 100644 index 0000000..1b9a905 --- /dev/null +++ b/includes/stdlib.h @@ -0,0 +1,15 @@ +// ---------------------------------------------------------------------------- +// $Id$ +// ---------------------------------------------------------------------------- +// Public Domain C Library - http://pdclib.sourceforge.net +// This code is Public Domain. Use, modify, and redistribute at will. +// ---------------------------------------------------------------------------- +// TODO +// ---------------------------------------------------------------------------- + +#ifndef __STDLIB_H +#define __STDLIB_H __STDLIB_H + +// TODO + +#endif // __STDLIB_H diff --git a/includes/string.h b/includes/string.h new file mode 100644 index 0000000..9528577 --- /dev/null +++ b/includes/string.h @@ -0,0 +1,15 @@ +// ---------------------------------------------------------------------------- +// $Id$ +// ---------------------------------------------------------------------------- +// Public Domain C Library - http://pdclib.sourceforge.net +// This code is Public Domain. Use, modify, and redistribute at will. +// ---------------------------------------------------------------------------- +// Provides functions for handling C strings ('\0' terminated char arrays). +// ---------------------------------------------------------------------------- + +#ifndef __STRING_H +#define __STRING_H __STRING_H + +// TODO + +#endif // __STRING_H diff --git a/includes/tgmath.h b/includes/tgmath.h new file mode 100644 index 0000000..976715b --- /dev/null +++ b/includes/tgmath.h @@ -0,0 +1,15 @@ +// ---------------------------------------------------------------------------- +// $Id$ +// ---------------------------------------------------------------------------- +// Public Domain C Library - http://pdclib.sourceforge.net +// This code is Public Domain. Use, modify, and redistribute at will. +// ---------------------------------------------------------------------------- +// TODO +// ---------------------------------------------------------------------------- + +#ifndef __TGMATH_H +#define __TGMATH_H __TGMATH_H + +// TODO + +#endif // __TGMATH_H diff --git a/includes/time.h b/includes/time.h new file mode 100644 index 0000000..aeda70f --- /dev/null +++ b/includes/time.h @@ -0,0 +1,15 @@ +// ---------------------------------------------------------------------------- +// $Id$ +// ---------------------------------------------------------------------------- +// Public Domain C Library - http://pdclib.sourceforge.net +// This code is Public Domain. Use, modify, and redistribute at will. +// ---------------------------------------------------------------------------- +// Provides a time datatype and time handling functions. +// ---------------------------------------------------------------------------- + +#ifndef __TIME_H +#define __TIME_H __TIME_H + +// TODO + +#endif // __TIME_H diff --git a/includes/wchar.h b/includes/wchar.h new file mode 100644 index 0000000..1b4142b --- /dev/null +++ b/includes/wchar.h @@ -0,0 +1,15 @@ +// ---------------------------------------------------------------------------- +// $Id$ +// ---------------------------------------------------------------------------- +// Public Domain C Library - http://pdclib.sourceforge.net +// This code is Public Domain. Use, modify, and redistribute at will. +// ---------------------------------------------------------------------------- +// TODO +// ---------------------------------------------------------------------------- + +#ifndef __WCHAR_H +#define __WCHAR_H __WCHAR_H + +// TODO + +#endif // __WCHAR_H diff --git a/includes/wctype.h b/includes/wctype.h new file mode 100644 index 0000000..9db5694 --- /dev/null +++ b/includes/wctype.h @@ -0,0 +1,15 @@ +// ---------------------------------------------------------------------------- +// $Id$ +// ---------------------------------------------------------------------------- +// Public Domain C Library - http://pdclib.sourceforge.net +// This code is Public Domain. Use, modify, and redistribute at will. +// ---------------------------------------------------------------------------- +// Provides a wchar_t equivalent to ctype.h. +// ---------------------------------------------------------------------------- + +#ifndef __WCTYPE_H +#define __WCTYPE_H __WCTYPE_H + +// TODO + +#endif // __WCTYPE_H