diff --git a/common_reference.h b/common_reference.h index 27a27a638..04b11f80f 100644 --- a/common_reference.h +++ b/common_reference.h @@ -55,4 +55,9 @@ void BLASFUNC_REF(daxpy) (blasint *, double *, double *, blasint *, double *, bl void BLASFUNC_REF(caxpy) (blasint *, float *, float *, blasint *, float *, blasint *); void BLASFUNC_REF(zaxpy) (blasint *, double *, double *, blasint *, double *, blasint *); +float _Complex BLASFUNC_REF(cdotu) (blasint *, float *, blasint *, float *, blasint *); +float _Complex BLASFUNC_REF(cdotc) (blasint *, float *, blasint *, float *, blasint *); +double _Complex BLASFUNC_REF(zdotu) (blasint *, double *, blasint *, double *, blasint *); +double _Complex BLASFUNC_REF(zdotc) (blasint *, double *, blasint *, double *, blasint *); + #endif diff --git a/utest/Makefile b/utest/Makefile index defa2a7db..9d512b877 100644 --- a/utest/Makefile +++ b/utest/Makefile @@ -5,7 +5,7 @@ include $(TOPDIR)/Makefile.system TARGET=openblas_utest CUNIT_LIB=/usr/local/lib/libcunit.a -OBJS=main.o test_rot.o test_swap.o test_axpy.o +OBJS=main.o test_rot.o test_swap.o test_axpy.o test_dotu.o all : run_test diff --git a/utest/common_utest.h b/utest/common_utest.h index 43c7f7f82..613003307 100644 --- a/utest/common_utest.h +++ b/utest/common_utest.h @@ -54,4 +54,6 @@ void test_zaxpy_inc_0(void); void test_saxpy_inc_0(void); void test_caxpy_inc_0(void); +void test_zdotu_n_1(void); + #endif diff --git a/utest/main.c b/utest/main.c index ef4232dbe..c6fbd48e2 100644 --- a/utest/main.c +++ b/utest/main.c @@ -52,6 +52,7 @@ CU_TestInfo test_level1[]={ {"Testing caxpy with incx || incy == 0",test_caxpy_inc_0}, {"Testing zaxpy with incx || incy == 0",test_zaxpy_inc_0}, + {"Testing zdotu with n == 1",test_zdotu_n_1}, CU_TEST_INFO_NULL, }; diff --git a/utest/test_dotu.c b/utest/test_dotu.c new file mode 100644 index 000000000..bb720c85a --- /dev/null +++ b/utest/test_dotu.c @@ -0,0 +1,56 @@ +/***************************************************************************** +Copyright (c) 2011, Lab of Parallel Software and Computational Science,ICSAS +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + 3. Neither the name of the ISCAS nor the names of its contributors may + be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE +USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +**********************************************************************************/ + +#include "common_utest.h" +#include + +void test_zdotu_n_1(void) +{ + int N=1,incX=1,incY=1; + double x1[]={1.0,1.0}; + double y1[]={1.0,2.0}; + double x2[]={1.0,1.0}; + double y2[]={1.0,2.0}; + double _Complex result1=0.0; + double _Complex result2=0.0; + //OpenBLAS + result1=BLASFUNC(zdotu)(&N,x1,&incX,y1,&incY); + //reference + result2=BLASFUNC_REF(zdotu)(&N,x2,&incX,y2,&incY); + + CU_ASSERT_DOUBLE_EQUAL(creal(result1), creal(result2), CHECK_EPS); + CU_ASSERT_DOUBLE_EQUAL(cimag(result1), cimag(result2), CHECK_EPS); +// printf("\%lf,%lf\n",creal(result1),cimag(result1)); + +} + +