]> pd.if.org Git - pdclib/blobdiff - includes/math.h
Removing old files.
[pdclib] / includes / math.h
diff --git a/includes/math.h b/includes/math.h
deleted file mode 100644 (file)
index 9070284..0000000
+++ /dev/null
@@ -1,1317 +0,0 @@
-/* ----------------------------------------------------------------------------
- * $Id$
- * ----------------------------------------------------------------------------
- * Public Domain C Library - http://pdclib.sourceforge.net
- * This code is Public Domain. Use, modify, and redistribute at will.
- * ----------------------------------------------------------------------------
- * Mathematics
- * --------------------------------------------------------------------------*/
-
-#ifndef _MATH_H
-#define _MATH_H _MATH_H
-
-/* TODO: Documentation */
-
-/* ----------------------------------------------------------------------------
- * DEFINES
- * --------------------------------------------------------------------------*/
-
-#define HUGE_VAL  ((double)0x7FF0000000000000)          /* TODO */
-#define HUGE_VALF ((float)0x7F800000)                   /* TODO */
-#define HUGE_VALL ((long double)0x7FFF8000000000000000) /* TODO */
-
-#define INFINITY ((float)0x7F800000) /* TODO */
-#define NAN      ((float)0x7F800001) /* TODO */
-
-/* The following values are platform dependant, must be personality. */
-#if 0
-#define FP_FAST_FMA  /* TODO */
-#define FP_FAST_FMAF /* TODO */
-#define FP_FAST_FMAL /* TODO */
-#endif
-
-/* These values are used instead of constants to classify numbers. */
-#define FP_UNDEFINED 0
-#define FP_INFINITE  1
-#define FP_NAN       2
-#define FP_NORMAL    3
-#define FP_SUBNORMAL 4
-#define FP_ZERO      5
-
-#define FP_ILOGB0   /* TODO */
-#define FP_ILOGBNAN /* TODO */
-
-#define MATH_ERRNO       1
-#define MATH_ERREXCEPT   2
-
-/* should be MATH_ERRNO | MATH_ERREXCEPT if we do exceptions. Do we? It's 
- * nice if this is implementation-wide the same.
- */
-#define math_errhandling ((int)MATH_ERRNO)
-
-/* ----------------------------------------------------------------------------
- * TYPEDEFS
- * --------------------------------------------------------------------------*/
-
-typedef double_t
-#if FLT_EVAL_METHOD == 0
-    double
-#elif FLT_EVAL_METHOD == 1
-    double
-#elif FLT_EVAL_METHOD == 2
-    long double
-#else
-    /* TODO - this is implementation defined and cpu dependant */
-#endif
-;
-
-typedef float_t
-#if FLT_EVAL_METHOD == 0
-    float
-#elif FLT_EVAL_METHOD == 1
-    double
-#elif FLT_EVAL_METHOD == 2
-    long double
-#else
-    /* TODO - this is implementation defined and cpu dependant */
-#endif
-;
-
-/* ----------------------------------------------------------------------------
- * MACROS
- * --------------------------------------------------------------------------*/
-
-#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 */
-
-/* Could somebody clean this macro up? It uses 7 other definitions (below).
- * Also, I suspect this macro to be personality-dependant. Somebody confirm
- * or deny?
- */
-#define fp_mef 0x7F800000
-#define fp_mff 0x007FFFFF
-#define fp_med 0x7FF0000000000000
-#define fp_mfd 0x000FFFFFFFFFFFFF
-#define fp_mel 0x7FFF8000000000000000
-#define fp_mjl 0x00004000000000000000 // the j-bit mask
-#define fp_mfl 0x00003FFFFFFFFFFFFFFF
-
-#define fpclassify( x ) ((sizeof(x) == sizeof(float)) ? ( \
-                          (((x) & fp_mef) == (fp_mef)) ? ( \
-                           (((x) & fp_mff) == (0)) ? ( \
-                            FP_INFINITY \
-                           ) : ( \
-                            FP_NAN \
-                           ) \
-                          ) : ( \
-                           (((x) & fp_mef) == (0)) ? ( \
-                            (((x) & fp_mff) == (0)) ? ( \
-                             FP_ZERO \
-                            ) : ( \
-                             FP_DENORMAL \
-                            ) \
-                           ) : ( \
-                            FP_NORMAL \
-                           ) \
-                          ) \
-                         ) : (
-                          (sizeof(x) == sizeof(double)) ? ( \
-                           (((x) & fp_med) == (fp_med)) ? ( \
-                            (((x) & fp_mfd) == (0)) ? ( \
-                             FP_INFINITY \
-                            ) : ( \
-                             FP_NAN \
-                            ) \
-                           ) : ( \
-                            (((x) & fp_med) == (0)) ? ( \
-                             (((x) & fp_mfd) == (0)) ? ( \
-                              FP_ZERO \
-                             ) : ( \
-                              FP_DENORMAL \
-                             ) \
-                            ) : ( \
-                             FP_NORMAL \
-                            ) \
-                           ) \
-                          ) : ( \
-                           (((x) & fp_mel) == (fp_mel)) ? ( \
-                            (((x) & fp_mjl) == (fp_mjl)) ? ( \
-                             FP_UNSUPPORTED \
-                            ) : ( \
-                             (((x) & fp_mfl) == (fp_mfl)) ? ( \
-                              FP_NAN \
-                             ) : ( \
-                              FP_INFINITY \
-                             ) \
-                            ) \
-                           ) : ( \
-                            (((x) & fp_mel) == (0)) ? ( \
-                             (((x) & fp_mjl) == (fp_mjl)) ? ( \
-                              FP_NORMAL \ // or actually, pseudo-denormal
-                             ) : ( \
-                              (((x) & fp_mfl) == (fp_mfl)) ? ( \
-                               FP_DENORMAL \
-                              ) : ( \
-                               FP_ZERO \
-                              ) \
-                             ) \
-                            ) : ( \
-                             (((x) & fp_mjl) == (fp_mjl)) ? ( \
-                              FP_NORMAL \
-                             ) : ( \
-                              FP_UNDEFINED \
-                             ) \
-                            ) \
-                           ) \
-                          ) \
-                         ) \
-                        )
-
-#define isfinite( x )   ((sizeof(x) == sizeof(float)) ? ( \
-                          (((x) & fp_mef) == (fp_mef)) ? ( \
-                           0 \
-                          ) : ( \
-                           1 \
-                          ) \
-                         ) : (
-                          (sizeof(x) == sizeof(double)) ? ( \
-                           (((x) & fp_med) == (fp_med)) ? ( \
-                            0 \
-                           ) : ( \
-                            1 \
-                           ) \
-                          ) : ( \
-                           (((x) & fp_mel) == (fp_mel)) ? ( \
-                            0 \
-                           ) : ( \
-                            (((x) & fp_mel) == (0)) ? ( \
-                             (((x) & fp_mjl) == (fp_mjl)) ? ( \
-                              1 \
-                             ) : ( \
-                              0 \
-                             ) \
-                            ) : ( \
-                             (((x) & fp_mjl) == (fp_mjl)) ? ( \
-                              1 \
-                             ) : ( \
-                              0 \
-                             ) \
-                            ) \
-                           ) \
-                          ) \
-                         ) \
-                        )
-
-#define isinf( x )      ((sizeof(x) == sizeof(float)) ? ( \
-                          (((x) & fp_mef) == (fp_mef)) ? ( \
-                           (((x) & fp_mff) == (0)) ? ( \
-                            1 \
-                           ) : ( \
-                            0 \
-                           ) \
-                          ) : ( \
-                           0 \
-                          ) \
-                         ) : ((sizeof(x) == sizeof(double)) ? ( \
-                           (((x) & fp_med) == (fp_med)) ? ( \
-                            (((x) & fp_mfd) == (0)) ? ( \
-                             1 \
-                            ) : ( \
-                             0 \
-                            ) \
-                           ) : ( \
-                            0 \
-                           ) \
-                          ) : ( \
-                           (((x) & fp_mel) == (fp_mel)) ? ( \
-                            (((x) & fp_mjl) == (0)) ? ( \
-                             (((x) & fp_mfl) == (fp_mfl)) ? ( \
-                              0 \
-                             ) : ( \
-                              1 \
-                             ) \
-                            ) : ( \
-                             0 \
-                            ) \
-                           ) : ( \
-                            0 \
-                           ) \
-                          ) \
-                         ) \
-                        )
-
-#define isnan( x )      ((sizeof(x) == sizeof(float)) ? ( \
-                          (((x) & fp_mef) == (fp_mef)) ? ( \
-                           (((x) & fp_mff) == (0)) ? ( \
-                            0 \
-                           ) : ( \
-                            1 \
-                           ) \
-                          ) : ( \
-                           0 \
-                          ) \
-                         ) : ((sizeof(x) == sizeof(double)) ? ( \
-                           (((x) & fp_med) == (fp_med)) ? ( \
-                            (((x) & fp_mfd) == (0)) ? ( \
-                             0 \
-                            ) : ( \
-                             1 \
-                            ) \
-                           ) : ( \
-                            0 \
-                           ) \
-                          ) : ( \
-                           (((x) & fp_mel) == (fp_mel)) ? ( \
-                            (((x) & fp_mjl) == (0)) ? ( \
-                             (((x) & fp_mfl) == (fp_mfl)) ? ( \
-                              1 \
-                             ) : ( \
-                              0 \
-                             ) \
-                            ) : ( \
-                             0 \
-                            ) \
-                           ) : ( \
-                            0 \
-                           ) \
-                          ) \
-                         ) \
-                        )
-
-#define isnormal( x )   ((sizeof(x) == sizeof(float)) ? ( \
-                          (((x) & fp_mef) == (fp_mef)) ? ( \
-                           0 \
-                          ) : ( \
-                           (((x) & fp_mef) == (0)) ? ( \
-                            0 \
-                           ) : ( \
-                            1 \
-                           ) \
-                          ) \
-                         ) : ((sizeof(x) == sizeof(double)) ? ( \
-                           (((x) & fp_med) == (fp_med)) ? ( \
-                            0 \
-                           ) : ( \
-                            (((x) & fp_med) == (0)) ? ( \
-                             0 \
-                            ) : ( \
-                             1 \
-                            ) \
-                           ) \
-                          ) : ( \
-                           (((x) & fp_mel) == (fp_mel)) ? ( \
-                            0 \
-                           ) : ( \
-                            (((x) & fp_mel) == (0)) ? ( \
-                             (((x) & fp_mjl) == (fp_mjl)) ? ( \
-                              1 \
-                             ) : ( \
-                              0 \
-                             ) \
-                            ) : ( \
-                             (((x) & fp_mjl) == (fp_mjl)) ? ( \
-                              1 \
-                             ) : ( \
-                              0 \
-                             ) \
-                            ) \
-                           ) \
-                          ) \
-                         ) \
-                        )
-
-#define signbit( x )    ((sizeof(x) == sizeof(float)) ? ( \
-                          (((x) & 0x80000000) == (0)) ? ( \
-                           0 \
-                          ) : ( \
-                           1 \
-                          ) \
-                         ) : ((sizeof(x) == sizeof(double)) ? ( \
-                           (((x) & 0x8000000000000000) == (0)) ? ( \
-                            0 \
-                           ) : ( \
-                            1 \
-                           ) \
-                          ) : ( \
-                           (((x) & 0x80000000000000000000) == (0)) ? ( \
-                            0 \
-                           ) : ( \
-                            1 \
-                           ) \
-                          ) \
-                         ) \
-                        )
-
-/* ----------------------------------------------------------------------------
- * FUNCTIONS
- * --------------------------------------------------------------------------*/
-
-/** These functions return the magnitude of x.
- *  @param x The value to find the absolute value of.
- *  @return The absolute value of x.
- *  @see fabsl()
- *  @see fabsf()
- */
-double      fabs( double       x );
-
-/** These functions return the magnitude of x.
- *  @param x The value to find the absolute value of.
- *  @return The absolute value of x.
- *  @see fabsl()
- *  @see fabs()
- */
-float       fabsf( float       x );
-
-/** These functions return the magnitude of x.
- *  @param x The value to find the absolute value of.
- *  @return The absolute value of x.
- *  @see fabs()
- *  @see fabsf()
- */
-long double fabsl( long double x );
-
-/** These functions compute the sine of x (measured in radians).
- *  @param x The value to compute the sine of.
- *  @return The sine of x.
- *  @see sinf()
- *  @see sinl()
- *  @see cos()
- *  @see tan()
- *  @see sinh()
- *  @see asin()
- */
-double      sin( double       x );
-
-/** These functions compute the sine of x (measured in radians).
- *  @param x The value to compute the sine of.
- *  @return The sine of x.
- *  @see sin()
- *  @see sinl()
- *  @see cosf()
- *  @see tanf()
- *  @see sinhf()
- *  @see asinf()
- */
-float       sinf( float       x );
-
-/** These functions compute the sine of x (measured in radians).
- *  @param x The value to compute the sine of.
- *  @return The sine of x.
- *  @see sinf()
- *  @see sin()
- *  @see cosl()
- *  @see tanl()
- *  @see sinhl()
- *  @see asinl()
- */
-long double sinl( long double x );
-
-/** These functions compute the hyperbolic sine of x (measured in radians).
- *  @param x The value to compute the hyperbolic sine of.
- *  @return The hyperbolic sine of x.
- *  @see sinhf()
- *  @see sinhl()
- *  @see sin()
- *  @see cosh()
- *  @see tanh()
- *  @see asinh()
- */
-double      sinh( double       x );
-
-/** These functions compute the hyperbolic sine of x (measured in radians).
- *  @param x The value to compute the hyperbolic sine of.
- *  @return The hyperbolic sine of x.
- *  @see sinh()
- *  @see sinhl()
- *  @see sinf()
- *  @see coshf()
- *  @see tanhf()
- *  @see asinhf()
- */
-float       sinhf( float       x );
-
-/** These functions compute the hyperbolic sine of x (measured in radians).
- *  @param x The value to compute the hyperbolic sine of.
- *  @return The hyperbolic sine of x.
- *  @see sinh()
- *  @see sinhf()
- *  @see sinl()
- *  @see coshl()
- *  @see tanhl()
- *  @see asinhl()
- */
-long double sinhl( long double x );
-
-/** These functions compute the arcsine of x (measured in radians).
- *  @param x The value to compute the arcsine of.
- *  @return The arcsine of x.
- *  @see asinf()
- *  @see asinl()
- *  @see sin()
- *  @see acos()
- *  @see atan()
- *  @see asinh()
- */
-double      asin( double       x );
-
-/** These functions compute the arcsine of x (measured in radians).
- *  @param x The value to compute the arcsine of.
- *  @return The arcsine of x.
- *  @see asin()
- *  @see asinl()
- *  @see sinf()
- *  @see acosf()
- *  @see atanf()
- *  @see asinhf()
- */
-float       asinf( float       x );
-
-/** These functions compute the arcsine of x (measured in radians).
- *  @param x The value to compute the arcsine of.
- *  @return The arcsine of x.
- *  @see asin()
- *  @see asinf()
- *  @see sinl()
- *  @see acosl()
- *  @see atanl()
- *  @see asinhl()
- */
-long double asinl( long double x );
-
-/** These functions compute the hyperbolic arcsine of x (measured in radians).
- *  @param x The value to compute the hyperbolic arcsine of.
- *  @return The hyperbolic arcsine of x.
- *  @see asinhf()
- *  @see asinhl()
- *  @see asin()
- *  @see acosh()
- *  @see atanh()
- *  @see sinh()
- */
-double      asinh( double       x );
-
-/** These functions compute the hyperbolic arcsine of x (measured in radians).
- *  @param x The value to compute the hyperbolic arcsine of.
- *  @return The hyperbolic arcsine of x.
- *  @see asinh()
- *  @see asinhl()
- *  @see asinf()
- *  @see acoshf()
- *  @see atanhf()
- *  @see sinhf()
- */
-float       asinhf( float       x );
-
-/** These functions compute the hyperbolic arcsine of x (measured in radians).
- *  @param x The value to compute the hyperbolic arcsine of.
- *  @return The hyperbolic arcsine of x.
- *  @see asinh()
- *  @see asinhf()
- *  @see asinl()
- *  @see acoshl()
- *  @see atanhl()
- *  @see sinhl()
- */
-long double asinhl( long double x );
-
-/** These functions compute the cosine of x (measured in radians).
- *  @param x The value to compute the cosine of.
- *  @return The cosine of x.
- *  @see cosf()
- *  @see cosl()
- *  @see sin()
- *  @see cosh()
- *  @see tan()
- *  @see acos()
- */
-double      cos( double       x );
-
-/** These functions compute the cosine of x (measured in radians).
- *  @param x The value to compute the cosine of.
- *  @return The cosine of x.
- *  @see cos()
- *  @see cosl()
- *  @see sinf()
- *  @see coshf()
- *  @see tanf()
- *  @see acosf()
- */
-float       cosf( float       x );
-
-/** These functions compute the cosine of x (measured in radians).
- *  @param x The value to compute the cosine of.
- *  @return The cosine of x.
- *  @see cos()
- *  @see cosf()
- *  @see sinl()
- *  @see coshl()
- *  @see tanl()
- *  @see acosl()
- */
-long double cosl( long double x );
-
-/** These functions compute the hyperbolic cosine of x (measured in radians).
- *  @param x The value to compute the hyperbolic cosine of.
- *  @return The hyperbolic cosine of x.
- *  @see coshf()
- *  @see coshl()
- *  @see sinh()
- *  @see cos()
- *  @see tanh()
- *  @see acosh()
- */
-double      cosh( double       x );
-
-/** These functions compute the hyperbolic cosine of x (measured in radians).
- *  @param x The value to compute the hyperbolic cosine of.
- *  @return The hyperbolic cosine of x.
- *  @see cosh()
- *  @see coshl()
- *  @see sinhf()
- *  @see cosf()
- *  @see tanhf()
- *  @see acoshf()
- */
-float       coshf( float       x );
-
-/** These functions compute the hyperbolic cosine of x (measured in radians).
- *  @param x The value to compute the hyperbolic cosine of.
- *  @return The hyperbolic cosine of x.
- *  @see cosh()
- *  @see coshf()
- *  @see sinhl()
- *  @see cosl()
- *  @see tanhl()
- *  @see acoshl()
- */
-long double coshl( long double x );
-
-/** These functions compute the arccosine of x (measured in radians).
- *  @param x The value to compute the arccosine of.
- *  @return The arccosine of x.
- *  @see acosf()
- *  @see acosl()
- *  @see asin()
- *  @see cos()
- *  @see atan()
- *  @see acosh()
- */
-double      acos( double       x );
-
-/** These functions compute the arccosine of x (measured in radians).
- *  @param x The value to compute the arccosine of.
- *  @return The arccosine of x.
- *  @see acos()
- *  @see acosl()
- *  @see asinf()
- *  @see cosf()
- *  @see atanf()
- *  @see acoshf()
- */
-float       acosf( float       x );
-
-/** These functions compute the arccosine of x (measured in radians).
- *  @param x The value to compute the arccosine of.
- *  @return The arccosine of x.
- *  @see acos()
- *  @see acosf()
- *  @see asinl()
- *  @see cosl()
- *  @see atanl()
- *  @see acoshl()
- */
-long double acosl( long double x );
-
-/** These functions compute the hyperbolic arccosine of x (measured in radians).
- *  @param x The value to compute the hyperbolic arccosine of.
- *  @return The hyperbolic arccosine of x.
- *  @see acoshf()
- *  @see acoshl()
- *  @see asinh()
- *  @see cosh()
- *  @see atanh()
- *  @see acos()
- */
-double      acosh( double       x );
-
-/** These functions compute the hyperbolic arccosine of x (measured in radians).
- *  @param x The value to compute the hyperbolic arccosine of.
- *  @return The hyperbolic arccosine of x.
- *  @see acosh()
- *  @see acoshl()
- *  @see asinhf()
- *  @see coshf()
- *  @see atanhf()
- *  @see acosf()
- */
-float       acoshf( float       x );
-
-/** These functions compute the hyperbolic arccosine of x (measured in radians).
- *  @param x The value to compute the hyperbolic arccosine of.
- *  @return The hyperbolic arccosine of x.
- *  @see acosh()
- *  @see acoshf()
- *  @see asinhl()
- *  @see coshl()
- *  @see atanhl()
- *  @see acosl()
- */
-long double acoshl( long double x );
-
-/** These functions compute the tangent of x (measured in radians).
- *  @param x The value to compute the tangent of.
- *  @return The tangent of x.
- *  @see tanf()
- *  @see tanl()
- *  @see sin()
- *  @see cos()
- *  @see tanh()
- *  @see atan()
- */
-double      tan( double       x );
-
-/** These functions compute the tangent of x (measured in radians).
- *  @param x The value to compute the tangent of.
- *  @return The tangent of x.
- *  @see tan()
- *  @see tanl()
- *  @see sinf()
- *  @see cosf()
- *  @see tanhf()
- *  @see atanf()
- */
-float       tanf( float       x );
-
-/** These functions compute the tangent of x (measured in radians).
- *  @param x The value to compute the tangent of.
- *  @return The tangent of x.
- *  @see tan()
- *  @see tanf()
- *  @see sinl()
- *  @see cosl()
- *  @see tanhl()
- *  @see atanl()
- */
-long double tanl( long double x );
-
-/** These functions compute the hyperbolic tangent of x (measured in radians).
- *  @param x The value to compute the hyperbolic tangent of.
- *  @return The hyperbolic tangent of x.
- *  @see tanhf()
- *  @see tanhl()
- *  @see sinh()
- *  @see cosh()
- *  @see tan()
- *  @see atanh()
- */
-double      tanh( double       x );
-
-/** These functions compute the hyperbolic tangent of x (measured in radians).
- *  @param x The value to compute the hyperbolic tangent of.
- *  @return The hyperbolic tangent of x.
- *  @see tanh()
- *  @see tanhl()
- *  @see sinhf()
- *  @see coshf()
- *  @see tanf()
- *  @see atanhf()
- */
-float       tanhf( float       x );
-
-/** These functions compute the hyperbolic tangent of x (measured in radians).
- *  @param x The value to compute the hyperbolic tangent of.
- *  @return The hyperbolic tangent of x.
- *  @see tanh()
- *  @see tanhf()
- *  @see sinhl()
- *  @see coshl()
- *  @see tanl()
- *  @see atanhl()
- */
-long double tanhl( long double x );
-
-/** These functions compute the arctangent of x (measured in radians).
- *  @param x The value to compute the arctangent of.
- *  @return The arctangent of x.
- *  @see atanf()
- *  @see atanl()
- *  @see atan2()
- *  @see asin()
- *  @see acos()
- *  @see tan()
- *  @see atanh()
- */
-double      atan( double       x );
-
-/** These functions compute the arctangent of x (measured in radians).
- *  @param x The value to compute the arctangent of.
- *  @return The arctangent of x.
- *  @see atan()
- *  @see atanl()
- *  @see atan2f()
- *  @see asinf()
- *  @see acosf()
- *  @see tanf()
- *  @see atanhf()
- */
-float       atanf( float       x );
-
-/** These functions compute the arctangent of x (measured in radians).
- *  @param x The value to compute the arctangent of.
- *  @return The arctangent of x.
- *  @see atan()
- *  @see atanf()
- *  @see atan2l()
- *  @see asinl()
- *  @see acosl()
- *  @see tanl()
- *  @see atanhl()
- */
-long double atanl( long double x );
-
-/** These functions compute the hyperbolic arctangent of x (measured in radians).
- *  @param x The value to compute the hyperbolic arctangent of.
- *  @return The hyperbolic arctangent of x.
- *  @see atanhf()
- *  @see atanhl()
- *  @see asinh()
- *  @see acosh()
- *  @see tanh()
- *  @see atan()
- */
-double      atanh( double       x );
-
-/** These functions compute the hyperbolic arctangent of x (measured in radians).
- *  @param x The value to compute the hyperbolic arctangent of.
- *  @return The hyperbolic arctangent of x.
- *  @see atanh()
- *  @see atanhl()
- *  @see asinhf()
- *  @see acoshf()
- *  @see tanhf()
- *  @see atanf()
- */
-float       atanhf( float       x );
-
-/** These functions compute the hyperbolic arctangent of x (measured in radians).
- *  @param x The value to compute the hyperbolic arctangent of.
- *  @return The hyperbolic arctangent of x.
- *  @see atanh()
- *  @see atanhf()
- *  @see asinhl()
- *  @see acoshl()
- *  @see tanhl()
- *  @see atanl()
- */
-long double atanhl( long double x );
-
-/** These functions compute the hyperbolic arctangent of x / y (measured in radians).
- *  They return their answer between pi and -pi.
- *  @param y The first side of the triangle.
- *  @param x The second side of the triangle.
- *  @return The angle between the first and the second side.
- *  @see atan2f()
- *  @see atan2l()
- *  @see atan()
- *  @see asin()
- *  @see acos()
- *  @see atanh()
- *  @see tanh()
- */
-double      atan2( double       y, double      x );
-
-/** These functions compute the hyperbolic arctangent of x / y (measured in radians).
- *  They return their answer between pi and -pi.
- *  @param y The first side of the triangle.
- *  @param x The second side of the triangle.
- *  @return The angle between the first and the second side.
- *  @see atan2f()
- *  @see atan2l()
- *  @see atanf()
- *  @see asinf()
- *  @see acosf()
- *  @see atanhf()
- *  @see tanhf()
- */
-float       atan2f( float       y, float       x );
-
-/** These functions compute the hyperbolic arctangent of x / y (measured in radians).
- *  They return their answer between pi and -pi.
- *  @param y The first side of the triangle.
- *  @param x The second side of the triangle.
- *  @return The angle between the first and the second side.
- *  @see atan2f()
- *  @see atan2l()
- *  @see atanl()
- *  @see asinl()
- *  @see acosl()
- *  @see atanhl()
- *  @see tanhl()
- */
-long double atan2l( long double y, long double x );
-
-/** These functions compute the hypotenuse of a straight triangle.
- *  @param x The length of one side of the triangle.
- *  @param y The length of the other side of the triangle.
- *  @return The length of the hypotenuse, according to h = sqrt(x*x+y*y).
- *  @see hypotf()
- *  @see hypotl()
- */
-double      hypot( double       x, double      y );
-
-/** These functions compute the hypotenuse of a straight triangle.
- *  @param x The length of one side of the triangle.
- *  @param y The length of the other side of the triangle.
- *  @return The length of the hypotenuse, according to h = sqrt(x*x+y*y).
- *  @see hypot()
- *  @see hypotl()
- */
-float       hypotf( float       x, float       y );
-
-/** These functions compute the hypotenuse of a straight triangle.
- *  @param x The length of one side of the triangle.
- *  @param y The length of the other side of the triangle.
- *  @return The length of the hypotenuse, according to h = sqrt(x*x+y*y).
- *  @see hypot()
- *  @see hypotf()
- */
-long double hypotl( long double x, long double y );
-
-/** These functions compute x raised to the power y.
- *  @param x The base of the power.
- *  @param y The exponent of the power.
- *  @return The base raised to the power of the exponent.
- *  @see powf()
- *  @see powl()
- */
-double      pow( double       x, double      y );
-
-/** These functions compute x raised to the power y.
- *  @param x The base of the power.
- *  @param y The exponent of the power.
- *  @return The base raised to the power of the exponent.
- *  @see pow()
- *  @see powl()
- */
-float       powf( float       x, float       y );
-
-/** These functions compute x raised to the power y.
- *  @param x The base of the power.
- *  @pa am y The exponent of the power.
- *  @return The base raised to the power of the exponent.
- *  @see pow()
- *  @see powf()
- */
-long double powl( long double x, long double y );
-
-/** These functions compute the square root of x.
- *  @param x The value to take the square root of.
- *  @return The square root of x.
- *  @see sqrtf()
- *  @see sqrtl()
- */
-double      sqrt( double       x );
-
-/** These functions compute the square root of x.
- *  @param x The value to take the square root of.
- *  @return The square root of x.
- *  @see sqrt()
- *  @see sqrtl()
- */
-float       sqrtf( float       x );
-
-/** These functions compute the square root of x.
- *  @param x The value to take the square root of.
- *  @return The square root of x.
- *  @see sqrt()
- *  @see sqrtf()
- */
-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 compute the logarithm (base e) of x.
- *  @param x The value to take the logarithm of.
- *  @return The logarithm of x.
- *  @see logf()
- *  @see logl()
- *  @todo is this really the natural logarithm? wouldn't it be ln()?
- */
-double      log( double       x );
-
-/** These functions compute the logarithm (base e) of x.
- *  @param x The value to take the logarithm of.
- *  @return The logarithm of x.
- *  @see log()
- *  @see logl()
- *  @todo is this really the natural logarithm? wouldn't it be ln()?
- */
-float       logf( float       x );
-
-/** These functions compute the logarithm (base e) of x.
- *  @param x The value to take the logarithm of.
- *  @return The logarithm of x.
- *  @see log()
- *  @see logf()
- *  @todo is this really the natural logarithm? wouldn't it be ln()?
- */
-long double logl( long double x );
-
-/** These functions compute the logarithm (base 10) of x.
- *  @param x The value to take the logarithm of.
- *  @return The logarithm of x.
- *  @see log10f()
- *  @see log10l()
- */
-double      log10( double       x );
-
-/** These functions compute the logarithm (base 10) of x.
- *  @param x The value to take the logarithm of.
- *  @return The logarithm of x.
- *  @see log10()
- *  @see log10l()
- */
-float       log10f( float       x );
-
-/** These functions compute the logarithm (base 10) of x.
- *  @param x The value to take the logarithm of.
- *  @return The logarithm of x.
- *  @see log10()
- *  @see log10f()
- */
-long double log10l( long double x );
-
-/** These functions compute the logarithm (base 2) of x.
- *  @param x The value to take the logarithm of.
- *  @return The logarithm of x.
- *  @see log2f()
- *  @see log2l()
- */
-double      log2( double       x );
-
-/** These functions compute the logarithm (base 2) of x.
- *  @param x The value to take the logarithm of.
- *  @return The logarithm of x.
- *  @see log2()
- *  @see log2l()
- */
-float       log2f( float       x );
-
-/** These functions compute the logarithm (base 2) of x.
- *  @param x The value to take the logarithm of.
- *  @return The logarithm of x.
- *  @see log2()
- *  @see log2f()
- */
-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 increase x to the next whole number.
- *  @param x The value to increase.
- *  @return The next whole number after x.
- *  @see ceilf()
- *  @see ceill()
- */
-double      ceil( double       x );
-
-/** These functions increase x to the next whole number.
- *  @param x The value to increase.
- *  @return The next whole number after x.
- *  @see ceil()
- *  @see ceill()
- */
-float       ceilf( float       x );
-
-/** These functions increase x to the next whole number.
- *  @param x The value to increase.
- *  @return The next whole number after x.
- *  @see ceil()
- *  @see ceilf()
- */
-long double ceill( long double x );
-
-/** These functions decrease x to the previous whole number.
- *  @param x The value to decrease.
- *  @return The previous whole number before x.
- *  @see floorf()
- *  @see floorl()
- */
-double      floor( double       x );
-
-/** These functions decrease x to the previous whole number.
- *  @param x The value to decrease.
- *  @return The previous whole number before x.
- *  @see floor()
- *  @see floorl()
- */
-float       floorf( float       x );
-
-/** These functions decrease x to the previous whole number.
- *  @param x The value to decrease.
- *  @return The previous whole number before x.
- *  @see floor()
- *  @see floorf()
- */
-long double floorl( long double x );
-
-/** These functions compute the modulus of x and y.
- *  @param x The value to take the modulus of.
- *  @param y The modulus.
- *  @return The value of x modulus y.
- *  @see fmodf()
- *  @see fmodl()
- */
-double      fmod( double       x, double      y );
-
-/** These functions compute the modulus of x and y.
- *  @param x The value to take the modulus of.
- *  @param y The modulus.
- *  @return The value of x modulus y.
- *  @see fmod()
- *  @see fmodl()
- */
-float       fmodf( float       x, float       y );
-
-/** These functions compute the modulus of x and y.
- *  @param x The value to take the modulus of.
- *  @param y The modulus.
- *  @return The value of x modulus y.
- *  @see fmod()
- *  @see fmodf()
- */
-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 x with the sign of y.
- *  @param x The value to set the sign of.
- *  @param y The value from which to read the sign.
- *  @return The magnitude of x with the sign of y.
- *  @see copysignf()
- *  @see copysignl()
- */
-double      copysign( double       x, double      y );
-
-/** These functions return x with the sign of y.
- *  @param x The value to set the sign of.
- *  @param y The value from which to read the sign.
- *  @return The magnitude of x with the sign of y.
- *  @see copysign()
- *  @see copysignl()
- */
-float       copysignf( float       x, float       y );
-
-/** These functions return x with the sign of y.
- *  @param x The value to set the sign of.
- *  @param y The value from which to read the sign.
- *  @return The magnitude of x with the sign of y.
- *  @see copysign()
- *  @see copysignf()
- */
-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 largest of the parameters.
- *  @param x The first candidate.
- *  @param y The second candidate.
- *  @return The largest of x and y.
- *  @see fmaxf()
- *  @see fmaxl()
- */
-double      fmax( double       x, double      y );
-
-/** These functions return the largest of the parameters.
- *  @param x The first candidate.
- *  @param y The second candidate.
- *  @return The largest of x and y.
- *  @see fmax()
- *  @see fmaxl()
- */
-float       fmaxf( float       x, float       y );
-
-/** These functions return the largest of the parameters.
- *  @param x The first candidate.
- *  @param y The second candidate.
- *  @return The largest of x and y.
- *  @see fmax()
- *  @see fmaxf()
- */
-long double fmaxl( long double x, long double y );
-
-/** These functions return the smallest of the parameters.
- *  @param x The first candidate.
- *  @param y The second candidate.
- *  @return The smallest of x and y.
- *  @see fminf()
- *  @see fminl()
- */
-double      fmin( double       x, double      y );
-
-/** These functions return the smallest of the parameters.
- *  @param x The first candidate.
- *  @param y The second candidate.
- *  @return The smallest of x and y.
- *  @see fmin()
- *  @see fminl()
- */
-float       fminf( float       x, float       y );
-
-/** These functions return the smallest of the parameters.
- *  @param x The first candidate.
- *  @param y The second candidate.
- *  @return The smallest of x and y.
- *  @see fmin()
- *  @see fminf()
- */
-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 - These functions return their parameter correctly rounded according
- * to the current rounding settings.
- */
-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 - These functions return their parameter with its decimal part
- * truncated.
- */
-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 - These functions divide parameter x by parameter y and return the
- * remainder.
- */
-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 */