diff options
| author | maya <maya@NetBSD.org> | 2016-08-31 14:05:09 +0000 |
|---|---|---|
| committer | maya <maya@NetBSD.org> | 2016-08-31 14:05:09 +0000 |
| commit | d8f7db2605ce07aef7dc049f65f00a399be699c6 (patch) | |
| tree | 5ce58f57856f76be583e572bbfc4f4adc9e7467f | |
| parent | 0331755eddc1042b5028c901b4512a878c4b7550 (diff) | |
Add failing test for casinh
| -rw-r--r-- | distrib/sets/lists/debug/mi | 3 | ||||
| -rw-r--r-- | distrib/sets/lists/tests/mi | 3 | ||||
| -rw-r--r-- | tests/lib/libm/Makefile | 3 | ||||
| -rw-r--r-- | tests/lib/libm/t_casinh.c | 78 |
4 files changed, 84 insertions, 3 deletions
diff --git a/distrib/sets/lists/debug/mi b/distrib/sets/lists/debug/mi index ad52baa527d..05e89dcda70 100644 --- a/distrib/sets/lists/debug/mi +++ b/distrib/sets/lists/debug/mi @@ -1,4 +1,4 @@ -# $NetBSD: mi,v 1.165 2016/08/22 08:49:33 maya Exp $ +# $NetBSD: mi,v 1.166 2016/08/31 14:05:09 maya Exp $ ./etc/mtree/set.debug comp-sys-root ./usr/lib comp-sys-usr compatdir ./usr/lib/i18n/libBIG5_g.a comp-c-debuglib debuglib,compatfile @@ -2095,6 +2095,7 @@ ./usr/libdata/debug/usr/tests/lib/libm/t_acos.debug tests-lib-debug debug,atf,compattestfile ./usr/libdata/debug/usr/tests/lib/libm/t_asin.debug tests-lib-debug debug,atf,compattestfile ./usr/libdata/debug/usr/tests/lib/libm/t_atan.debug tests-lib-debug debug,atf,compattestfile +./usr/libdata/debug/usr/tests/lib/libm/t_casinh.debug tests-lib-debug debug,atf,compattestfile ./usr/libdata/debug/usr/tests/lib/libm/t_cbrt.debug tests-lib-debug debug,atf,compattestfile ./usr/libdata/debug/usr/tests/lib/libm/t_ceil.debug tests-lib-debug debug,atf,compattestfile ./usr/libdata/debug/usr/tests/lib/libm/t_cos.debug tests-lib-debug debug,atf,compattestfile diff --git a/distrib/sets/lists/tests/mi b/distrib/sets/lists/tests/mi index 1fb6a897d98..c9e08deb3e5 100644 --- a/distrib/sets/lists/tests/mi +++ b/distrib/sets/lists/tests/mi @@ -1,4 +1,4 @@ -# $NetBSD: mi,v 1.684 2016/08/22 08:49:33 maya Exp $ +# $NetBSD: mi,v 1.685 2016/08/31 14:05:10 maya Exp $ # # Note: don't delete entries from here - mark them as "obsolete" instead. # @@ -2902,6 +2902,7 @@ ./usr/tests/lib/libm/t_acos tests-lib-tests compattestfile,atf ./usr/tests/lib/libm/t_asin tests-lib-tests compattestfile,atf ./usr/tests/lib/libm/t_atan tests-lib-tests compattestfile,atf +./usr/tests/lib/libm/t_casinh tests-lib-tests compattestfile,atf ./usr/tests/lib/libm/t_cbrt tests-lib-tests compattestfile,atf ./usr/tests/lib/libm/t_ceil tests-lib-tests compattestfile,atf ./usr/tests/lib/libm/t_cos tests-lib-tests compattestfile,atf diff --git a/tests/lib/libm/Makefile b/tests/lib/libm/Makefile index 24e933a647b..e5b4028cc42 100644 --- a/tests/lib/libm/Makefile +++ b/tests/lib/libm/Makefile @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.39 2016/08/23 10:03:44 christos Exp $ +# $NetBSD: Makefile,v 1.40 2016/08/31 14:05:10 maya Exp $ .include <bsd.own.mk> @@ -15,6 +15,7 @@ CPPFLAGS.t_fmod.c+= -I${.CURDIR}/../libc/gen TESTS_C+= t_acos TESTS_C+= t_asin TESTS_C+= t_atan +TESTS_C+= t_casinh TESTS_C+= t_cbrt TESTS_C+= t_ceil TESTS_C+= t_cos diff --git a/tests/lib/libm/t_casinh.c b/tests/lib/libm/t_casinh.c new file mode 100644 index 00000000000..d77e8790032 --- /dev/null +++ b/tests/lib/libm/t_casinh.c @@ -0,0 +1,78 @@ +/* $NetBSD: t_casinh.c,v 1.1 2016/08/31 14:05:10 maya Exp $ */ + +/* + * Written by Maya Rashish + * Public domain. + * + * Testing special values of casinh + * Values from ISO/IEC 9899:201x G.6.2.2 + */ + +#include <atf-c.h> +#include <complex.h> +#include <math.h> + +#define RE(z) (((double *)(&z))[0]) +#define IM(z) (((double *)(&z))[1]) + +static const struct { + double input_re; + double input_im; + double result_re; + double result_im; +} values[] = { + { +0, +0, +0, +0}, + { +5.032E3, +INFINITY, +INFINITY, +M_PI/2}, + { +INFINITY, +5.023E3, +INFINITY, +0}, + { +INFINITY, +INFINITY, +INFINITY, +M_PI/4}, +#ifdef __HAVE_NANF + { +INFINITY, +NAN, +INFINITY, +NAN}, + { +5.032E3, +NAN, +NAN, +NAN}, /* + FE_INVALID optionally raised */ + { +NAN, +0, +NAN, +0}, + { +NAN, -5.023E3, +NAN, +NAN}, /* + FE_INVALID optionally raised */ + { +NAN, +INFINITY, +INFINITY, +NAN}, /* sign of real part of result unspecified */ + { +NAN, +NAN, +NAN, +NAN}, +#endif +}; + +#ifdef __HAVE_NANF +#define both_nan(a,b) (isnan(a) && isnan(b)) +#else +#define both_nan(a,b) 0 +#endif + +#define crude_equality(a,b) ((a == b) || both_nan(a,b)) + +#define ATF_COMPLEX_EQUAL(a,b) do { \ + ATF_CHECK(crude_equality(creal(a),creal(b)) && \ + crude_equality(cimag(a), cimag(b))); \ +} while (0/*CONSTCOND*/) + + +ATF_TC(casinh); +ATF_TC_HEAD(casinh, tc) +{ + atf_tc_set_md_var(tc, "descr","Check casinh family - special values"); +} + +ATF_TC_BODY(casinh, tc) +{ + complex double input; + complex double result; + unsigned int i; + for (i = 0; i < __arraycount(values); i++) { + RE(input) = values[i].input_re; + IM(input) = values[i].input_im; + RE(result) = values[i].result_re; + IM(result) = values[i].result_im; + ATF_COMPLEX_EQUAL(casinh(input), result); + } +} + +ATF_TP_ADD_TCS(tp) +{ + + ATF_TP_ADD_TC(tp, casinh); + + return atf_no_error(); +} |
