Index: src/libcfa/limits
===================================================================
--- src/libcfa/limits	(revision d3b7937ae7ab8afece0824b5729b7e86a9f0bd63)
+++ src/libcfa/limits	(revision d3b7937ae7ab8afece0824b5729b7e86a9f0bd63)
@@ -0,0 +1,92 @@
+// Integral Constants
+
+const short int MIN = -32768;
+const int MIN = -2147483648;
+const long int MIN = -9223372036854775807L - 1L;
+const long long int MIN = -9223372036854775807LL - 1LL;
+
+const short int MAX = 32767;
+const unsigned short int MAX = 65535;
+const int MAX = 2147483647;
+const unsigned int MAX = 4294967295_U;
+const long int MAX = 9223372036854775807_L;
+const unsigned long int MAX = 4294967295_U;
+const long long int MAX = 9223372036854775807_LL;
+const unsigned long long int MAX = 18446744073709551615_ULL;
+
+// Floating-Point Constants
+
+const float PI = 3.141592_F;				// pi
+const float PI_2 = 1.570796_F;				// pi / 2
+const float PI_4 = 0.7853981_F;				// pi / 4
+const float _1_PI = 0.3183098_F;			// 1 / pi
+const float _2_PI = 0.6366197_F;			// 2 / pi
+const float _2_SQRT_PI = 1.128379_F;			// 2 / sqrt(pi)
+
+const double PI = 3.14159265358979323846_D;		// pi
+const double PI_2 = 1.57079632679489661923_D;		// pi / 2
+const double PI_4 = 0.78539816339744830962_D;		// pi / 4
+const double _1_PI = 0.31830988618379067154_D;		// 1 / pi
+const double _2_PI = 0.63661977236758134308_D;		// 2 / pi
+const double _2_SQRT_PI = 1.12837916709551257390_D;	// 2 / sqrt(pi)
+
+const long double PI = 3.1415926535897932384626433832795029_DL; // pi
+const long double PI_2 = 1.5707963267948966192313216916397514_DL; // pi / 2
+const long double PI_4 = 0.7853981633974483096156608458198757_DL; // pi / 4
+const long double _1_PI = 0.3183098861837906715377675267450287_DL; // 1 / pi
+const long double _2_PI = 0.6366197723675813430755350534900574_DL; // 2 / pi
+const long double _2_SQRT_PI = 1.1283791670955125738961589031215452_DL; // 2 / sqrt(pi)
+
+const _Complex PI = 3.14159265358979323846_D+0.0_iD;	// pi
+const _Complex PI_2 = 1.57079632679489661923_D+0.0_iD;	// pi / 2
+const _Complex PI_4 = 0.78539816339744830962_D+0.0_iD;	// pi / 4
+const _Complex _1_PI = 0.31830988618379067154_D+0.0_iD;	// 1 / pi
+const _Complex _2_PI = 0.63661977236758134308_D+0.0_iD;	// 2 / pi
+const _Complex _2_SQRT_PI = 1.12837916709551257390_D+0.0_iD; // 2 / sqrt(pi)
+
+const long _Complex PI = 3.1415926535897932384626433832795029_L+0.0iL; // pi
+const long _Complex PI_2 = 1.5707963267948966192313216916397514_L+0.0iL; // pi / 2
+const long _Complex PI_4 = 0.7853981633974483096156608458198757_L+0.0iL; // pi / 4
+const long _Complex _1_PI = 0.3183098861837906715377675267450287_L+0.0iL; // 1 / pi
+const long _Complex _2_PI = 0.6366197723675813430755350534900574_L+0.0iL; // 2 / pi
+const long _Complex _2_SQRT_PI = 1.1283791670955125738961589031215452_L+0.0iL; // 2 / sqrt(pi)
+
+const float E = 2.718281;				// e
+const float LOG2_E = 1.442695;				// log_2(e)
+const float LOG10_E = 0.4342944;			// log_10(e)
+const float LN_2 = 0.6931471;				// log_e(2)
+const float LN_10 = 2.302585;				// log_e(10)
+const float SQRT_2 = 1.414213;				// sqrt(2)
+const float _1_SQRT_2 = 0.7071067;			// 1 / sqrt(2)
+
+const double E = 2.7182818284590452354_D;		// e
+const double LOG2_E = 1.4426950408889634074_D;		// log_2(e)
+const double LOG10_E = 0.43429448190325182765_D;	// log_10(e)
+const double LN_2 = 0.69314718055994530942_D;		// log_e(2)
+const double LN_10 = 2.30258509299404568402_D;		// log_e(10)
+const double SQRT_2 = 1.41421356237309504880_D;		// sqrt(2)
+const double _1_SQRT_2 = 0.70710678118654752440_D;	// 1 / sqrt(2)
+
+const long double E = 2.7182818284590452353602874713526625_DL; // e
+const long double LOG2_E = 1.4426950408889634073599246810018921_DL; // log_2(e)
+const long double LOG10_E = 0.4342944819032518276511289189166051_DL; // log_10(e)
+const long double LN_2 = 0.6931471805599453094172321214581766_DL; // log_e(2)
+const long double LN_10 = 2.3025850929940456840179914546843642_DL; // log_e(10)
+const long double SQRT_2 = 1.4142135623730950488016887242096981_DL; // sqrt(2)
+const long double _1_SQRT_2 = 0.7071067811865475244008443621048490_DL; // 1/sqrt(2)
+
+const _Complex E = 2.7182818284590452354_D+0.0_iD;	// e
+const _Complex LOG2_E = 1.4426950408889634074_D+0.0_iD;	// log_2(e)
+const _Complex LOG10_E = 0.43429448190325182765_D+0.0_iD; // log_10(e)
+const _Complex LN_2 = 0.69314718055994530942_D+0.0_iD;	// log_e(2)
+const _Complex LN_10 = 2.30258509299404568402_D+0.0_iD;	// log_e(10)
+const _Complex SQRT_2 = 1.41421356237309504880_D+0.0_iD;	// sqrt(2)
+const _Complex _1_SQRT_2 = 0.70710678118654752440_D+0.0_iD; // 1 / sqrt(2)
+
+const long _Complex E = 2.7182818284590452353602874713526625_L+0.0_iL; // e
+const long _Complex LOG2_E = 1.4426950408889634073599246810018921_L+0.0_iL; // log_2(e)
+const long _Complex LOG10_E = 0.4342944819032518276511289189166051_L+0.0_iL; // log_10(e)
+const long _Complex LN_2 = 0.6931471805599453094172321214581766_L+0.0_iL; // log_e(2)
+const long _Complex LN_10 = 2.3025850929940456840179914546843642_L+0.0_iL; // log_e(10)
+const long _Complex SQRT_2 = 1.4142135623730950488016887242096981_L+0.0_iL; // sqrt(2)
+const long _Complex _1_SQRT_2 = 0.7071067811865475244008443621048490_L+0.0_iL; // 1 / sqrt(2)
