From: Paul Brossier Date: Fri, 21 Dec 2018 13:08:58 +0000 (+0100) Subject: [tests] add test-vecutils X-Git-Tag: 0.4.9~43 X-Git-Url: https://git.aubio.org/?a=commitdiff_plain;h=1f382d6bfb43a386b21dba4132fc16f4cf0ad993;p=aubio.git [tests] add test-vecutils --- diff --git a/tests/src/test-vecutils.c b/tests/src/test-vecutils.c new file mode 100644 index 00000000..5964a762 --- /dev/null +++ b/tests/src/test-vecutils.c @@ -0,0 +1,65 @@ +#include "aubio.h" +#include "utils_tests.h" + +void assert_fvec_all_almost_equal(fvec_t *vec, smpl_t scalar, smpl_t err) +{ + uint_t i; + for (i = 0; i < vec->length; i++) { + assert( fabs(vec->data[i] - scalar) < (smpl_t)err ); + } +} + +int main (void) +{ + uint_t length = 10; + + fvec_t * vec = new_fvec(length); + + fvec_set_all(vec, 2); + fvec_exp(vec); + assert_fvec_all_almost_equal(vec, exp(2), 1e-10); + + fvec_set_all(vec, 0); + fvec_cos(vec); + assert_fvec_all_almost_equal(vec, 1., 1e-10); + + fvec_set_all(vec, 0); + fvec_sin(vec); + assert_fvec_all_almost_equal(vec, 0., 1e-10); + + fvec_set_all(vec, -1); + fvec_abs(vec); + assert_fvec_all_almost_equal(vec, 1., 1e-10); + + fvec_set_all(vec, 4); + fvec_sqrt(vec); + assert_fvec_all_almost_equal(vec, 2., 1e-10); + + fvec_set_all(vec, 10.); + fvec_log10(vec); + assert_fvec_all_almost_equal(vec, 1., 1e-10); + + fvec_set_all(vec, 1.); + fvec_log(vec); + assert_fvec_all_almost_equal(vec, 0., 1e-10); + + fvec_set_all(vec, 1.6); + fvec_floor(vec); + assert_fvec_all_almost_equal(vec, 1., 1e-10); + + fvec_set_all(vec, 1.6); + fvec_ceil(vec); + assert_fvec_all_almost_equal(vec, 2., 1e-10); + + fvec_set_all(vec, 1.6); + fvec_round(vec); + assert_fvec_all_almost_equal(vec, 2., 1e-10); + + fvec_set_all(vec, 2); + fvec_pow(vec, 3); + assert_fvec_all_almost_equal(vec, 8., 1e-10); + + if (vec) + del_fvec(vec); + return 0; +}