From 5d969f2a70e85d76a817cf3d9d15119912a68491 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Storsj=C3=B6?= Date: Mon, 8 Apr 2019 15:23:12 +0300 Subject: [PATCH] crt-test: Add tests of ldexp/scalbn/scalbln --- test/crt-test.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/test/crt-test.c b/test/crt-test.c index 53f2dd6..743623f 100644 --- a/test/crt-test.c +++ b/test/crt-test.c @@ -633,6 +633,42 @@ int main(int argc, char* argv[]) { TEST_FLT_ACCURACY(exp2l(F(32.0)), 4294967296.0, 0.001); TEST_FLT_ACCURACY(exp2l(F(-2.0)), 0.25, 0.001); + TEST_FLT_ACCURACY(ldexp(F(0.0), 1), 0.0, 0.001); + TEST_FLT_ACCURACY(ldexp(F(2.0), 2), 8.0, 0.001); + TEST_FLT_ACCURACY(ldexp(F(2.0), -2), 0.5, 0.001); + + TEST_FLT_ACCURACY(ldexpf(F(0.0), 1), 0.0, 0.001); + TEST_FLT_ACCURACY(ldexpf(F(2.0), 2), 8.0, 0.001); + TEST_FLT_ACCURACY(ldexpf(F(2.0), -2), 0.5, 0.001); + + TEST_FLT_ACCURACY(ldexpl(F(0.0), 1), 0.0, 0.001); + TEST_FLT_ACCURACY(ldexpl(F(2.0), 2), 8.0, 0.001); + TEST_FLT_ACCURACY(ldexpl(F(2.0), -2), 0.5, 0.001); + + TEST_FLT_ACCURACY(scalbn(F(0.0), 1), 0.0, 0.001); + TEST_FLT_ACCURACY(scalbn(F(2.0), 2), 8.0, 0.001); + TEST_FLT_ACCURACY(scalbn(F(2.0), -2), 0.5, 0.001); + + TEST_FLT_ACCURACY(scalbnf(F(0.0), 1), 0.0, 0.001); + TEST_FLT_ACCURACY(scalbnf(F(2.0), 2), 8.0, 0.001); + TEST_FLT_ACCURACY(scalbnf(F(2.0), -2), 0.5, 0.001); + + TEST_FLT_ACCURACY(scalbnl(F(0.0), 1), 0.0, 0.001); + TEST_FLT_ACCURACY(scalbnl(F(2.0), 2), 8.0, 0.001); + TEST_FLT_ACCURACY(scalbnl(F(2.0), -2), 0.5, 0.001); + + TEST_FLT_ACCURACY(scalbln(F(0.0), 1), 0.0, 0.001); + TEST_FLT_ACCURACY(scalbln(F(2.0), 2), 8.0, 0.001); + TEST_FLT_ACCURACY(scalbln(F(2.0), -2), 0.5, 0.001); + + TEST_FLT_ACCURACY(scalblnf(F(0.0), 1), 0.0, 0.001); + TEST_FLT_ACCURACY(scalblnf(F(2.0), 2), 8.0, 0.001); + TEST_FLT_ACCURACY(scalblnf(F(2.0), -2), 0.5, 0.001); + + TEST_FLT_ACCURACY(scalblnl(F(0.0), 1), 0.0, 0.001); + 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(llround(F(3.3)), 3); TEST_INT(llround(F(3.6)), 4); TEST_INT(llround(F(3.5)), 4);