From c3a16814bd26aa6702e1e5b482a3d9044bb0f725 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Storsj=C3=B6?= Date: Sat, 20 Apr 2019 23:02:38 +0300 Subject: [PATCH] crt-test: Add tests for logb/ilogb --- test/crt-test.c | 55 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/test/crt-test.c b/test/crt-test.c index 7643fb8..c3688f1 100644 --- a/test/crt-test.c +++ b/test/crt-test.c @@ -27,6 +27,7 @@ #include #include #include +#include #ifdef _WIN32 #include #endif @@ -950,6 +951,60 @@ int main(int argc, char* argv[]) { TEST_FLT_ACCURACY(scalblnl(F(2.0), 2), 8.0, 0.001); TEST_FLT_ACCURACY(scalblnl(F(2.0), -2), 0.5, 0.001); + TEST_INT(ilogb(F(1.0)), 0); + TEST_INT(ilogb(F(0.25)), -2); + TEST_INT(ilogb(3.49514e-308), -1022); + TEST_INT(ilogb(1.74757e-308), -1023); + TEST_INT(ilogb(9.8813e-324), -1073); + TEST_INT(ilogb(F(0.0)), FP_ILOGB0); + TEST_INT(ilogb(F(INFINITY)), INT_MAX); + TEST_INT(ilogb(F(NAN)), FP_ILOGBNAN); + + TEST_INT(ilogbf(F(1.0)), 0); + TEST_INT(ilogbf(F(0.25)), -2); + TEST_INT(ilogbf(F(3.69292e-38)), -125); + TEST_INT(ilogbf(F(4.61616e-39)), -128); + TEST_INT(ilogbf(F(1.4013e-45)), -148); + TEST_INT(ilogbf(F(0.0)), FP_ILOGB0); + TEST_INT(ilogbf(F(INFINITY)), INT_MAX); + TEST_INT(ilogbf(F(NAN)), FP_ILOGBNAN); + + TEST_INT(ilogbl(F(1.0)), 0); + TEST_INT(ilogbl(F(0.25)), -2); + TEST_INT(ilogbl(3.49514e-308), -1022); + TEST_INT(ilogbl(1.74757e-308), -1023); + TEST_INT(ilogbl(9.8813e-324), -1073); + TEST_INT(ilogbl(F(0.0)), FP_ILOGB0); + TEST_INT(ilogbl(F(INFINITY)), INT_MAX); + TEST_INT(ilogbl(F(NAN)), FP_ILOGBNAN); + + TEST_FLT(logb(F(1.0)), 0.0); + TEST_FLT(logb(F(0.25)), -2.0); + TEST_FLT(logb(3.49514e-308), -1022.0); + TEST_FLT(logb(1.74757e-308), -1023.0); + TEST_FLT(logb(9.8813e-324), -1073.0); + TEST_FLT(logb(F(0.0)), -INFINITY); + TEST_FLT(logb(F(INFINITY)), INFINITY); + TEST_FLT_NAN(logb(F(NAN))); + + TEST_FLT(logbf(F(1.0)), 0.0); + TEST_FLT(logbf(F(0.25)), -2.0); + TEST_FLT(logbf(F(3.69292e-38)), -125.0); + TEST_FLT(logbf(F(4.61616e-39)), -128.0); + TEST_FLT(logbf(F(1.4013e-45)), -148.0); + TEST_FLT(logbf(F(0.0)), -INFINITY); + TEST_FLT(logbf(F(INFINITY)), INFINITY); + TEST_FLT_NAN(logbf(F(NAN))); + + TEST_FLT(logbl(F(1.0)), 0.0); + TEST_FLT(logbl(F(0.25)), -2.0); + TEST_FLT(logbl(3.49514e-308), -1022.0); + TEST_FLT(logbl(1.74757e-308), -1023.0); + TEST_FLT(logbl(9.8813e-324), -1073.0); + TEST_FLT(logbl(F(0.0)), -INFINITY); + TEST_FLT(logbl(F(INFINITY)), INFINITY); + TEST_FLT_NAN(logbl(F(NAN))); + TEST_INT(llround(F(3.3)), 3); TEST_INT(llround(F(3.6)), 4); TEST_INT(llround(F(3.5)), 4);