diff --git a/test/maths.cpp b/test/maths.cpp index 4882b43e..7c954d0e 100644 --- a/test/maths.cpp +++ b/test/maths.cpp @@ -3,15 +3,23 @@ #include #include - +#include using std::sqrt; - +using std::numeric_limits; int main (int, char **) { check_hard (!almost_equal (-2.0, 0.0)); check_hard (!almost_equal (-2.f, 0.f)); + check_hard ( almost_equal ( 0.0, 0.0)); + check_hard ( almost_equal ( 0.0, numeric_limits::min ())); + check_hard ( almost_equal (numeric_limits::infinity (), + numeric_limits::infinity ())); + check_hard (!almost_equal (numeric_limits::infinity (), 0.0)); + check_hard (!almost_equal (numeric_limits::quiet_NaN (), + numeric_limits::quiet_NaN ())); + check_eq (min (-2, 0, 2), -2); check_eq (max (-2, 0, 2), 2); @@ -21,5 +29,18 @@ main (int, char **) { check_eq (rootsquare (2, 2), sqrt (8)); + double pos_zero = 1.0 / numeric_limits::infinity (); + double neg_zero = -1.0 / numeric_limits::infinity (); + + check_eq (sign (-1), -1); + check_eq (sign ( 1), 1); + check_eq (sign (pos_zero), 1); + check_eq (sign (neg_zero), -1); + check_eq (sign ( numeric_limits::infinity ()), 1); + check_eq (sign (-numeric_limits::infinity ()), -1); + + check_eq (to_degrees (PI), 180); + check_eq (to_radians (180), PI); + return EXIT_SUCCESS; }