]> pd.if.org Git - pdclib/blobdiff - includes/math.h
Introducing personalities. Removing C++ function decs / defs.
[pdclib] / includes / math.h
index f737c215d8975285bd19e76d6c062981f613fe86..ef80c92775d192540504a4ab664b2b5d9ee756f8 100644 (file)
 // Public Domain C Library - http://pdclib.sourceforge.net
 // This code is Public Domain. Use, modify, and redistribute at will.
 // ----------------------------------------------------------------------------
-// Provides floating point math functions.
+// Mathematics
 // ----------------------------------------------------------------------------
 
 #ifndef __MATH_H
 #define __MATH_H __MATH_H
 
+// TODO: Documentation
+
 // ----------------------------------------------------------------------------
 // DEFINES
 
-#define HUGE_VAL  // TODO
-#define HUGE_VALF // TODO
-#define HUGE_VALL // TODO
+#define HUGE_VAL  // TODO - personality?
+#define HUGE_VALF // TODO - personality?
+#define HUGE_VALL // TODO - personality?
 
-#define INFINITY // TODO
-#define NAN      // TODO
+#define INFINITY // TODO - personality?
+#define NAN      // TODO - personality?
 
-#define FP_FAST_FMA  // TODO
-#define FP_FAST_FMAF // TODO
-#define FP_FAST_FMAL // TODO
+#define FP_FAST_FMA  // TODO - personality?
+#define FP_FAST_FMAF // TODO - personality?
+#define FP_FAST_FMAL // TODO - personality?
 
-#define FP_INFINITE  // TODO
-#define FP_NAN       // TODO
-#define FP_NORMAL    // TODO
-#define FP_SUBNORMAL // TODO
-#define FP_ZERO      // TODO
+#define FP_INFINITE  // TODO - personality?
+#define FP_NAN       // TODO - personality?
+#define FP_NORMAL    // TODO - personality?
+#define FP_SUBNORMAL // TODO - personality?
+#define FP_ZERO      // TODO - personality?
 
-#define FP_ILOGB0   // TODO
-#define FP_ILOGBNAN // TODO
+#define FP_ILOGB0   // TODO - personality?
+#define FP_ILOGBNAN // TODO - personality?
 
-#define MATH_ERRNO       1
-#define MATH_ERREXCEPT   2
-#define math_errhandling // TODO
+#define MATH_ERRNO       1 // personality?
+#define MATH_ERREXCEPT   2 // personality?
+#define math_errhandling // TODO - personality?
 
 // --------------------------------------------------------------------------
 // TYPEDEFS
 
-typedef double_t; // TODO
-typedef float_t;  // TODO
+typedef double_t; // TODO - personality?
+typedef float_t;  // TODO - personality?
 
 // --------------------------------------------------------------------------
 // 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
+#define fpclassify( x )        // TODO
+#define isfinite( x )          // 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++
-
-#ifdef __cplusplus
-
-// 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       x, float       y );
-long double atan2( long double x, long double y );
-
-// 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 );
-
-#endif // __cplusplus
+#define isinf( x )             // TODO
+#define isnan( x )             // TODO
+#define isnormal( x )          // TODO
+#define signbit( x )           // TODO
 
 // ----------------------------------------------------------------------------
-// FUNCTIONS - Standard C
+// FUNCTIONS
 
-// These functions return the magnitude of its parameter.
+// These functions return the magnitude of their parameter.
 double      fabs( double       x );
 float       fabsf( float       x );
 long double fabsl( long double x );
 
-// These functions return the sine of its parameter.
+// These functions compute the sine of x (measured in radians).
 double      sin( double       x );
 float       sinf( float       x );
 long double sinl( long double x );
 
-// These functions return the hyperbolic cosine of its parameter.
+// These functions return the hyperbolic cosine of their parameter.
 double      sinh( double       x );
 float       sinhf( float       x );
 long double sinhl( long double x );
 
-// These functions return the arcsine of its parameter.
+// These functions return the arcsine of their parameter.
 double      asin( double       x );
 float       asinf( float       x );
 long double asinl( long double x );
@@ -361,17 +90,17 @@ double      asinh( double       x );
 float       asinhf( float       x );
 long double asinhl( long double x );
 
-// These functions return the cosine of its parameter.
+// These functions compute the cosine of x (measured in radians).
 double      cos( double       x );
 float       cosf( float       x );
 long double cosl( long double x );
 
-// These functions return the hyperbolic cosine of its parameter.
+// These functions return the hyperbolic cosine of their parameter.
 double      cosh( double       x );
 float       coshf( float       x );
 long double coshl( long double x );
 
-// These functions return the arccosine of its parameter.
+// These functions return the arccosine of their parameter.
 double      acos( double       x );
 float       acosf( float       x );
 long double acosl( long double x );
@@ -381,17 +110,17 @@ double      acosh( double       x );
 float       acoshf( float       x );
 long double acoshl( long double x );
 
-// These functions return the tangent of its parameter.
+// These functions return the tangent of x.
 double      tan( double       x );
 float       tanf( float       x );
 long double tanl( long double x );
 
-// These functions return the hyperbolic tangent of its parameter.
+// These functions return the hyperbolic tangent of their parameter.
 double      tanh( double       x );
 float       tanhf( float       x );
 long double tanhl( long double x );
 
-// These functions return the arctangent of its parameter.
+// These functions compute the arctangent of x.
 double      atan( double       x );
 float       atanf( float       x );
 long double atanl( long double x );
@@ -411,12 +140,12 @@ 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.
+// These functions return their 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.
+// These functions return the square root of their parameter.
 double      sqrt( double       x );
 float       sqrtf( float       x );
 long double sqrtl( long double x );
@@ -451,12 +180,12 @@ 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.
+// These functions return the natural logarithm of their 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.
+// These functions return the logarithm (base 10 ) of their parameter.
 double      log10( double       x );
 float       log10f( float       x );
 long double log10l( long double x );
@@ -486,7 +215,7 @@ 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.
+// These functions return the largest integer no larger than their parameter.
 double      floor( double       x );
 float       floorf( float       x );
 long double floorl( long double x );