From 98c663f379d5acec1656924e26cd3e5c9c9984d5 Mon Sep 17 00:00:00 2001 From: tlatorre Date: Sun, 2 Jun 2019 13:28:36 -0400 Subject: add a fast sqrt function for values in between 0 and 1 --- src/test.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'src/test.c') diff --git a/src/test.c b/src/test.c index b1e0426..c2b7466 100644 --- a/src/test.c +++ b/src/test.c @@ -2100,6 +2100,32 @@ err: return 1; } +int test_fast_sqrt(char *err) +{ + /* Tests that the fast_sqrt() function returns values within 0.1% of sqrt(). */ + size_t i; + double x, result, expected; + + init_genrand(0); + + for (i = 0; i < 100; i++) { + x = genrand_real2()*2; + + result = fast_sqrt(x); + expected = sqrt(x); + + if (!isclose(result, expected, 0, 1e-3)) { + sprintf(err, "fast_sqrt() returned %.5g, but expected %.5g", result, expected); + goto err; + } + } + + return 0; + +err: + return 1; +} + struct tests { testFunction *test; char *name; @@ -2152,6 +2178,7 @@ struct tests { {test_argmin, "test_argmin"}, {test_electron_get_angular_pdf_norm, "test_electron_get_angular_pdf_norm"}, {test_fast_acos, "test_fast_acos"}, + {test_fast_sqrt, "test_fast_sqrt"}, }; int main(int argc, char **argv) -- cgit