Index: src/libcfa/math
===================================================================
--- src/libcfa/math	(revision 6e991d61d3d430d19f91624ec57c3454edee668a)
+++ src/libcfa/math	(revision cf18eeaf30d25339930f9c302988f1cef748926f)
@@ -10,10 +10,144 @@
 // Created On       : Mon Apr 18 23:37:04 2016
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Apr 21 07:56:48 2016
-// Update Count     : 38
+// Last Modified On : Sun Apr 24 12:45:02 2016
+// Update Count     : 59
 // 
 
+extern "C" {
+#include <math.h>										// fpclassify, isfinite, isnormal, isnan, isinf
+} // extern "C"
+
+float fabs( float );
+// extern "C" { double fabs( double ); }
+long double fabs( long double );
+float cabs( float _Complex );
+// extern "C" { double cabs( double _Complex ); }
+long double cabs( long double _Complex );
+
+float ?%?( float, float );
+float fmod( float, float );
+double ?%?( double, double );
+// extern "C" { double fmod( double, double ); }
+long double ?%?( long double, long double );
+long double fmod( long double, long double );
+
+float remainder( float, float );
+// extern "C" { double remainder( double, double ); }
+long double remainder( long double, long double );
+
+[ int, float ] remquo( float, float );
+float remquo( float, float, int * );
+[ int, double ] remquo( double, double );
+// extern "C" { double remquo( double, double, int * ); }
+[ int, long double ] remquo( long double, long double );
+long double remquo( long double, long double, int * );
+
+[ int, float ] div( float, float );						// alternative name for remquo
+float div( float, float, int * );
+[ int, double ] div( double, double );
+// extern "C" { double div( double, double, int * ); }
+[ int, long double ] div( long double, long double );
+long double div( long double, long double, int * );
+
+float fma( float, float, float );
+// extern "C" { double fma( double, double, double ); }
+long double fma( long double, long double, long double );
+
+float fdim( float, float );
+// extern "C" { double fdim( double, double ); }
+long double fdim( long double, long double );
+
+float nan( const char * );
+// extern "C" { double nan( const char * ); }
+long double nan( const char * );
+
+//---------------------- Exponential ----------------------
+
+float exp( float );
+// extern "C" { double exp( double ); }
+long double exp( long double );
+float _Complex exp( float _Complex );
+double _Complex exp( double _Complex );
+long double _Complex exp( long double _Complex );
+
+float exp2( float );
+// extern "C" { double exp2( double ); }
+long double exp2( long double );
+// float _Complex exp2( float _Complex );
+// double _Complex exp2( double _Complex );
+// long double _Complex exp2( long double _Complex );
+
+float expm1( float );
+// extern "C" { double expm1( double ); }
+long double expm1( long double );
+
+float log( float );
+// extern "C" { double log( double ); }
+long double log( long double );
+float _Complex log( float _Complex );
+double _Complex log( double _Complex );
+long double _Complex log( long double _Complex );
+
+float log2( float );
+// extern "C" { double log2( double ); }
+long double log2( long double );
+// float _Complex log2( float _Complex );
+// double _Complex log2( double _Complex );
+// long double _Complex log2( long double _Complex );
+
+float log10( float );
+// extern "C" { double log10( double ); }
+long double log10( long double );
+// float _Complex log10( float _Complex );
+// double _Complex log10( double _Complex );
+// long double _Complex log10( long double _Complex );
+
+float log1p( float );
+// extern "C" { double log1p( double ); }
+long double log1p( long double );
+
+int ilogb( float );
+// extern "C" { int ilogb( double ); }
+int ilogb( long double );
+
+float logb( float );
+// extern "C" { double logb( double ); }
+long double logb( long double );
+
+//---------------------- Power ----------------------
+
+float sqrt( float );
+// extern "C" { double sqrt( double ); }
+long double sqrt( long double );
+float _Complex sqrt( float _Complex );
+double _Complex sqrt( double _Complex );
+long double _Complex sqrt( long double _Complex );
+
+float cbrt( float );
+// extern "C" { double cbrt( double ); }
+long double cbrt( long double );
+
+float hypot( float, float );
+// extern "C" { double hypot( double, double ); }
+long double hypot( long double, long double );
+
+float pow( float, float );
+// extern "C" { double pow( double, double ); }
+long double pow( long double, long double );
+float _Complex pow( float _Complex, float _Complex );
+double _Complex pow( double _Complex, double _Complex );
+long double _Complex pow( long double _Complex, long double _Complex );
+
+//---------------------- Trigonometric ----------------------
+
+float sin( float );
+// extern "C" { double sin( double ); }
+long double sin( long double );
+float _Complex sin( float _Complex );
+double _Complex sin( double _Complex );
+long double _Complex sin( long double _Complex );
+
 float cos( float );
-extern "C" { double cos( double ); }
+// extern "C" { double cos( double ); }
 long double cos( long double );
 float _Complex cos( float _Complex );
@@ -21,6 +155,51 @@
 long double _Complex cos( long double _Complex );
 
+float tan( float );
+// extern "C" { double tan( double ); }
+long double tan( long double );
+float _Complex tan( float _Complex );
+double _Complex tan( double _Complex );
+long double _Complex tan( long double _Complex );
+
+float asin( float );
+// extern "C" { double asin( double ); }
+long double asin( long double );
+float _Complex asin( float _Complex );
+double _Complex asin( double _Complex );
+long double _Complex asin( long double _Complex );
+
+float acos( float );
+// extern "C" { double acos( double ); }
+long double acos( long double );
+float _Complex acos( float _Complex );
+double _Complex acos( double _Complex );
+long double _Complex acos( long double _Complex );
+
+float atan( float );
+// extern "C" { double atan( double ); }
+long double atan( long double );
+float _Complex atan( float _Complex );
+double _Complex atan( double _Complex );
+long double _Complex atan( long double _Complex );
+
+float atan2( float, float );
+double atan2( double, double );
+long double atan2( long double, long double );
+
+float atan( float, float );								// alternative name for atan2
+double atan( double, double );
+long double atan( long double, long double );
+
+//---------------------- Hyperbolic ----------------------
+
+float sinh( float );
+// extern "C" { double sinh( double ); }
+long double sinh( long double );
+float _Complex sinh( float _Complex );
+double _Complex sinh( double _Complex );
+long double _Complex sinh( long double _Complex );
+
 float cosh( float );
-extern "C" { double cosh( double ); }
+// extern "C" { double cosh( double ); }
 long double cosh( long double );
 float _Complex cosh( float _Complex );
@@ -28,13 +207,20 @@
 long double _Complex cosh( long double _Complex );
 
-float acos( float );
-extern "C" { double acos( double ); }
-long double acos( long double );
-float _Complex acos( float _Complex );
-double _Complex acos( double _Complex );
-long double _Complex acos( long double _Complex );
+float tanh( float );
+// extern "C" { double tanh( double ); }
+long double tanh( long double );
+float _Complex tanh( float _Complex );
+double _Complex tanh( double _Complex );
+long double _Complex tanh( long double _Complex );
+
+float asinh( float );
+// extern "C" { double asinh( double ); }
+long double asinh( long double );
+float _Complex asinh( float _Complex );
+double _Complex asinh( double _Complex );
+long double _Complex asinh( long double _Complex );
 
 float acosh( float );
-extern "C" { double acosh( double ); }
+// extern "C" { double acosh( double ); }
 long double acosh( long double );
 float _Complex acosh( float _Complex );
@@ -42,59 +228,6 @@
 long double _Complex acosh( long double _Complex );
 
-float sin( float );
-extern "C" { double sin( double ); }
-long double sin( long double );
-float _Complex sin( float _Complex );
-double _Complex sin( double _Complex );
-long double _Complex sin( long double _Complex );
-
-float sinh( float );
-extern "C" { double sinh( double ); }
-long double sinh( long double );
-float _Complex sinh( float _Complex );
-double _Complex sinh( double _Complex );
-long double _Complex sinh( long double _Complex );
-
-float asin( float );
-extern "C" { double asin( double ); }
-long double asin( long double );
-float _Complex asin( float _Complex );
-double _Complex asin( double _Complex );
-long double _Complex asin( long double _Complex );
-
-float asinh( float );
-extern "C" { double asinh( double ); }
-long double asinh( long double );
-float _Complex asinh( float _Complex );
-double _Complex asinh( double _Complex );
-long double _Complex asinh( long double _Complex );
-
-float tan( float );
-extern "C" { double tan( double ); }
-long double tan( long double );
-float _Complex tan( float _Complex );
-double _Complex tan( double _Complex );
-long double _Complex tan( long double _Complex );
-
-float tanh( float );
-extern "C" { double tanh( double ); }
-long double tanh( long double );
-float _Complex tanh( float _Complex );
-double _Complex tanh( double _Complex );
-long double _Complex tanh( long double _Complex );
-
-float atan( float );
-extern "C" { double atan( double ); }
-long double atan( long double );
-float _Complex atan( float _Complex );
-double _Complex atan( double _Complex );
-long double _Complex atan( long double _Complex );
-
-float _Complex atan( float, float );
-double atan( double, double );
-long double atan( long double, long double );
-
 float atanh( float );
-extern "C" { double atanh( double ); }
+// extern "C" { double atanh( double ); }
 long double atanh( long double );
 float _Complex atanh( float _Complex );
@@ -102,197 +235,117 @@
 long double _Complex atanh( long double _Complex );
 
-float exp( float );
-extern "C" { double exp( double ); }
-long double exp( long double );
-float _Complex exp( float _Complex );
-double _Complex exp( double _Complex );
-long double _Complex exp( long double _Complex );
-
-float log( float );
-extern "C" { double log( double ); }
-long double log( long double );
-float _Complex log( float _Complex );
-double _Complex log( double _Complex );
-long double _Complex log( long double _Complex );
-
-float pow( float, float );
-extern "C" { double pow( double, double ); }
-long double pow( long double, long double );
-float _Complex pow( float _Complex, float _Complex );
-double _Complex pow( double _Complex, double _Complex );
-long double _Complex pow( long double _Complex, long double _Complex );
-
-float sqrt( float );
-extern "C" { double sqrt( double ); }
-long double sqrt( long double );
-float _Complex sqrt( float _Complex );
-double _Complex sqrt( double _Complex );
-long double _Complex sqrt( long double _Complex );
-
-float fabs( float );
-extern "C" { double fabs( double ); }
-long double fabs( long double );
-float cabs( float _Complex );
-extern "C" { double cabs( double _Complex ); }
-long double cabs( long double _Complex );
+//---------------------- Error / Gamma ----------------------
+
+float erf( float );
+// extern "C" { double erf( double ); }
+long double erf( long double );
+// float _Complex erf( float _Complex );
+// double _Complex erf( double _Complex );
+// long double _Complex erf( long double _Complex );
+
+float erfc( float );
+// extern "C" { double erfc( double ); }
+long double erfc( long double );
+// float _Complex erfc( float _Complex );
+// double _Complex erfc( double _Complex );
+// long double _Complex erfc( long double _Complex );
+
+float lgamma( float );
+// extern "C" { double lgamma( double ); }
+long double lgamma( long double );
+float lgamma( float, int * );
+double lgamma( double, int * );
+long double lgamma( long double, int * );
+
+float tgamma( float );
+// extern "C" { double tgamma( double ); }
+long double tgamma( long double );
+
+//---------------------- Nearest Integer ----------------------
 
 float floor( float );
-extern "C" { double floor( double ); }
+// extern "C" { double floor( double ); }
 long double floor( long double );
 
 float ceil( float );
-extern "C" { double ceil( double ); }
+// extern "C" { double ceil( double ); }
 long double ceil( long double );
 
-//---------------------------------------
-
-float cbrt( float );
-extern "C" { double cbrt( double ); }
-long double cbrt( long double );
-
-float copysign( float, float );
-extern "C" { double copysign( double, double ); }
-long double copysign( long double, long double );
-
-float erf( float );
-extern "C" { double erf( double ); }
-long double erf( long double );
-
-float erfc( float );
-extern "C" { double erfc( double ); }
-long double erfc( long double );
-
-float exp2( float );
-extern "C" { double exp2( double ); }
-long double exp2( long double );
-
-float expm1( float );
-extern "C" { double expm1( double ); }
-long double expm1( long double );
-
-float fdim( float, float );
-extern "C" { double fdim( double, double ); }
-long double fdim( long double, long double );
-
-float fma( float, float, float );
-extern "C" { double fma( double, double, double ); }
-long double fma( long double, long double, long double );
-
-float ?%?( float, float );
-float fmod( float, float );
-double ?%?( double, double );
-extern "C" { double fmod( double, double ); }
-long double ?%?( long double, long double );
-long double fmod( long double, long double );
-
-[ int, float ] div( float x );
-float frexp( float, int * );
-[ int, double ] div( double x );
-extern "C" { double frexp( double, int * ); }
-[ int, long double ] div( long double x );
-long double frexp( long double, int * );
-
-float hypot( float, float );
-extern "C" { double hypot( double, double ); }
-long double hypot( long double, long double );
-
-int ilogb( float );
-extern "C" { int ilogb( double ); }
-int ilogb( long double );
-
-float ldexp( float, int );
-extern "C" { double ldexp( double, int ); }
-long double ldexp( long double, int );
-
-float lgamma( float );
-extern "C" { double lgamma( double ); }
-long double lgamma( long double );
-
-float rint( float x );
-long double rint( long double x );
-long int rint( float x );
-long int rint( double x );
-long int rint( long double x );
-long long int rint( float x );
-long long int rint( double x );
-long long int rint( long double x );
+float trunc( float );
+// extern "C" { double trunc( double ); }
+long double trunc( long double );
+
+float rint( float );
+long double rint( long double );
+long int rint( float );
+long int rint( double );
+long int rint( long double );
+long long int rint( float );
+long long int rint( double );
+long long int rint( long double );
 
 long int lrint( float );
-extern "C" { long int lrint( double ); }
+// extern "C" { long int lrint( double ); }
 long int lrint( long double );
 long long int llrint( float );
-extern "C" { long long int llrint( double ); }
+// extern "C" { long long int llrint( double ); }
 long long int llrint( long double );
 
-float round( float x );
-long double round( long double x );
-long int round( float x );
-long int round( double x );
-long int round( long double x );
-long long int round( float x );
-long long int round( double x );
-long long int round( long double x );
+float nearbyint( float );
+// extern "C" { double nearbyint( double ); }
+long double nearbyint( long double );
+
+float round( float );
+long double round( long double );
+long int round( float );
+long int round( double );
+long int round( long double );
+long long int round( float );
+long long int round( double );
+long long int round( long double );
 
 long int lround( float );
-extern "C" { long int lround( double ); }
+// extern "C" { long int lround( double ); }
 long int lround( long double );
 long long int llround( float );
-extern "C" { long long int llround( double ); }
+// extern "C" { long long int llround( double ); }
 long long int llround( long double );
 
-float log10( float );
-extern "C" { double log10( double ); }
-long double log10( long double );
-
-float log1p( float );
-extern "C" { double log1p( double ); }
-long double log1p( long double );
-
-float log2( float );
-extern "C" { double log2( double ); }
-long double log2( long double );
-
-float logb( float );
-extern "C" { double logb( double ); }
-long double logb( long double );
-
-float nearbyint( float );
-extern "C" { double nearbyint( double ); }
-long double nearbyint( long double );
+//---------------------- Manipulation ----------------------
+
+float copysign( float, float );
+// extern "C" { double copysign( double, double ); }
+long double copysign( long double, long double );
+
+float frexp( float, int * );
+// extern "C" { double frexp( double, int * ); }
+long double frexp( long double, int * );
+
+float ldexp( float, int );
+// extern "C" { double ldexp( double, int ); }
+long double ldexp( long double, int );
+
+[ float, float ] modf( float );
+float modf( float, float * );
+[ double, double ] modf( double );
+// extern "C" { double modf( double, double * ); }
+[ long double, long double ] modf( long double );
+long double modf( long double, long double * );
 
 float nextafter( float, float );
-extern "C" { double nextafter( double, double ); }
+// extern "C" { double nextafter( double, double ); }
 long double nextafter( long double, long double );
 
 float nexttoward( float, long double );
-extern "C" { double nexttoward( double, long double ); }
+// extern "C" { double nexttoward( double, long double ); }
 long double nexttoward( long double, long double );
 
-float remainder( float, float );
-extern "C" { double remainder( double, double ); }
-long double remainder( long double, long double );
-
-[ int, float ] remquo( float x, float y );
-float remquo( float, float, int * );
-[ int, double ] remquo( double x, double y );
-extern "C" { double remquo( double, double, int * ); }
-[ int, long double ] remquo( long double x, long double y );
-long double remquo( long double, long double, int * );
-
 float scalbn( float, int );
-extern "C" { double scalbn( double, int ); }
+// extern "C" { double scalbn( double, int ); }
 long double scalbn( long double, int );
 
 float scalbln( float, long int );
-extern "C" { double scalbln( double, long int ); }
+// extern "C" { double scalbln( double, long int ); }
 long double scalbln( long double, long int );
-
-float tgamma( float );
-extern "C" { double tgamma( double ); }
-long double tgamma( long double );
-
-float trunc( float );
-extern "C" { double trunc( double ); }
-long double trunc( long double );
 
 // Local Variables: //
