| @@ -15,6 +15,7 @@ else () | |||||
| test_dsdot.c | test_dsdot.c | ||||
| test_dnrm2.c | test_dnrm2.c | ||||
| test_swap.c | test_swap.c | ||||
| test_zscal.c | |||||
| ) | ) | ||||
| endif () | endif () | ||||
| @@ -11,7 +11,7 @@ UTESTBIN=openblas_utest | |||||
| include $(TOPDIR)/Makefile.system | include $(TOPDIR)/Makefile.system | ||||
| OBJS=utest_main.o test_min.o test_amax.o test_ismin.o test_rotmg.o test_axpy.o test_dotu.o test_dsdot.o test_swap.o test_rot.o test_dnrm2.o | |||||
| OBJS=utest_main.o test_min.o test_amax.o test_ismin.o test_rotmg.o test_axpy.o test_dotu.o test_dsdot.o test_swap.o test_rot.o test_dnrm2.o test_zscal.o | |||||
| #test_rot.o test_swap.o test_axpy.o test_dotu.o test_dsdot.o test_fork.o | #test_rot.o test_swap.o test_axpy.o test_dotu.o test_dsdot.o test_fork.o | ||||
| ifneq ($(NO_LAPACK), 1) | ifneq ($(NO_LAPACK), 1) | ||||
| @@ -0,0 +1,49 @@ | |||||
| #include "openblas_utest.h" | |||||
| #include <cblas.h> | |||||
| #ifdef BUILD_COMPLEX16 | |||||
| CTEST(zscal, i_nan) | |||||
| { | |||||
| double i[] = {0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1 }; | |||||
| double nan[] = {NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0}; | |||||
| cblas_zscal(9, i, &nan, 1); | |||||
| ASSERT_TRUE(isnan(nan[0])); | |||||
| ASSERT_TRUE(isnan(nan[1])); | |||||
| ASSERT_TRUE(isnan(nan[16])); | |||||
| ASSERT_TRUE(isnan(nan[17])); | |||||
| } | |||||
| CTEST(zscal, nan_i) | |||||
| { | |||||
| double i[] = {0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1 }; | |||||
| double nan[] = {NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0}; | |||||
| cblas_zscal(9, &nan, &i, 1); | |||||
| ASSERT_TRUE(isnan(i[0])); | |||||
| ASSERT_TRUE(isnan(i[1])); | |||||
| ASSERT_TRUE(isnan(i[16])); | |||||
| ASSERT_TRUE(isnan(i[17])); | |||||
| } | |||||
| CTEST(zscal, i_inf) | |||||
| { | |||||
| double i[] = {0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1 }; | |||||
| double inf[] = {INFINITY, 0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0}; | |||||
| cblas_zscal(9, i, &inf, 1); | |||||
| ASSERT_TRUE(isnan(inf[0])); | |||||
| ASSERT_TRUE(isinf(inf[1])); | |||||
| ASSERT_TRUE(isnan(inf[16])); | |||||
| ASSERT_TRUE(isinf(inf[17])); | |||||
| } | |||||
| CTEST(zscal, inf_i) | |||||
| { | |||||
| double i[] = {0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1 }; | |||||
| double inf[] = {INFINITY, 0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0}; | |||||
| cblas_zscal(9, &inf, &i, 1); | |||||
| ASSERT_TRUE(isnan(i[0])); | |||||
| ASSERT_TRUE(isinf(i[1])); | |||||
| ASSERT_TRUE(isnan(i[16])); | |||||
| ASSERT_TRUE(isinf(i[17])); | |||||
| } | |||||
| #endif | |||||
| @@ -617,6 +617,51 @@ CTEST(max, smax_zero){ | |||||
| ASSERT_DBL_NEAR_TOL((double)(tr_max), (double)(te_max), SINGLE_EPS); | ASSERT_DBL_NEAR_TOL((double)(tr_max), (double)(te_max), SINGLE_EPS); | ||||
| } | } | ||||
| CTEST(zscal, i_nan) | |||||
| { | |||||
| double i[] = {0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1 }; | |||||
| double nan[] = {NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0}; | |||||
| cblas_zscal(9, i, &nan, 1); | |||||
| ASSERT(isnan(nan[0]); | |||||
| ASSERT(isnan(nan[1]); | |||||
| ASSERT(isnan(nan[16]); | |||||
| ASSERT(isnan(nan[17]); | |||||
| } | |||||
| CTEST(zscal, nan_i) | |||||
| { | |||||
| double i[] = {0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1 }; | |||||
| double nan[] = {NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0}; | |||||
| cblas_zscal(9, &nan, &i, 1); | |||||
| ASSERT(isnan(i[0]); | |||||
| ASSERT(isnan(i[1]); | |||||
| ASSERT(isnan(i[16]); | |||||
| ASSERT(isnan(i[17]); | |||||
| } | |||||
| CTEST(zscal, i_inf) | |||||
| { | |||||
| double i[] = {0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1 }; | |||||
| double inf[] = {INFINITY, 0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0}; | |||||
| cblas_zscal(9, i, &inf, 1); | |||||
| ASSERT(isnan(inf[0]); | |||||
| ASSERT(isinf(inf[1]); | |||||
| ASSERT(isnan(inf[16]); | |||||
| ASSERT(isinf(inf[17]); | |||||
| } | |||||
| CTEST(zscal, inf_i) | |||||
| { | |||||
| double i[] = {0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1 }; | |||||
| double inf[] = {INFINITY, 0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0}; | |||||
| cblas_zscal(9, &inf, &i, 1); | |||||
| ASSERT(isnan(i[0]); | |||||
| ASSERT(isinf(i[1]); | |||||
| ASSERT(isnan(i[16]); | |||||
| ASSERT(isinf(i[17]); | |||||
| } | |||||
| int main(int argc, const char ** argv){ | int main(int argc, const char ** argv){ | ||||
| CTEST_ADD (amax, samax); | CTEST_ADD (amax, samax); | ||||
| @@ -648,7 +693,10 @@ int main(int argc, const char ** argv){ | |||||
| CTEST_ADD (swap,zswap_inc_0); | CTEST_ADD (swap,zswap_inc_0); | ||||
| CTEST_ADD (swap,sswap_inc_0); | CTEST_ADD (swap,sswap_inc_0); | ||||
| CTEST_ADD (swap,cswap_inc_0); | CTEST_ADD (swap,cswap_inc_0); | ||||
| CTEST_ADD (zscal, i_nan); | |||||
| CTEST_ADD (zscal, nan_i); | |||||
| CTEST_ADD (zscal, i_inf); | |||||
| CTEST_ADD (zscal, inf_i); | |||||
| int num_fail=0; | int num_fail=0; | ||||
| num_fail=ctest_main(argc, argv); | num_fail=ctest_main(argc, argv); | ||||