aboutsummaryrefslogtreecommitdiff
path: root/src/test.c
diff options
context:
space:
mode:
authortlatorre <tlatorre@uchicago.edu>2019-06-02 13:28:36 -0400
committertlatorre <tlatorre@uchicago.edu>2019-06-02 13:28:36 -0400
commit98c663f379d5acec1656924e26cd3e5c9c9984d5 (patch)
treeece8d4ce1eefc442ebe256345301b756fdd5eb68 /src/test.c
parent2f2cd1797190335468e956f4c286c6e4de27518e (diff)
downloadsddm-98c663f379d5acec1656924e26cd3e5c9c9984d5.tar.gz
sddm-98c663f379d5acec1656924e26cd3e5c9c9984d5.tar.bz2
sddm-98c663f379d5acec1656924e26cd3e5c9c9984d5.zip
add a fast sqrt function for values in between 0 and 1
Diffstat (limited to 'src/test.c')
-rw-r--r--src/test.c27
1 files changed, 27 insertions, 0 deletions
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)