kusano 2b45e8
/*****************************************************************************
kusano 2b45e8
Copyright (c) 2011, Lab of Parallel Software and Computational Science,ICSAS
kusano 2b45e8
All rights reserved.
kusano 2b45e8
kusano 2b45e8
Redistribution and use in source and binary forms, with or without
kusano 2b45e8
modification, are permitted provided that the following conditions are
kusano 2b45e8
met:
kusano 2b45e8
kusano 2b45e8
   1. Redistributions of source code must retain the above copyright
kusano 2b45e8
      notice, this list of conditions and the following disclaimer.
kusano 2b45e8
kusano 2b45e8
   2. Redistributions in binary form must reproduce the above copyright
kusano 2b45e8
      notice, this list of conditions and the following disclaimer in
kusano 2b45e8
      the documentation and/or other materials provided with the
kusano 2b45e8
      distribution.
kusano 2b45e8
   3. Neither the name of the ISCAS nor the names of its contributors may 
kusano 2b45e8
      be used to endorse or promote products derived from this software 
kusano 2b45e8
      without specific prior written permission.
kusano 2b45e8
kusano 2b45e8
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
kusano 2b45e8
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
kusano 2b45e8
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
kusano 2b45e8
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 
kusano 2b45e8
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
kusano 2b45e8
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
kusano 2b45e8
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
kusano 2b45e8
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 
kusano 2b45e8
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE 
kusano 2b45e8
USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
kusano 2b45e8
kusano 2b45e8
**********************************************************************************/
kusano 2b45e8
kusano 2b45e8
#include "common_utest.h"
kusano 2b45e8
kusano 2b45e8
void test_drot_inc_0(void)
kusano 2b45e8
{
kusano 2b45e8
	int i=0;
kusano 2b45e8
	int N=4,incX=0,incY=0;
kusano 2b45e8
	double c=0.25,s=0.5;
kusano 2b45e8
	double x1[]={1.0,3.0,5.0,7.0};
kusano 2b45e8
	double y1[]={2.0,4.0,6.0,8.0};
kusano 2b45e8
	double x2[]={1.0,3.0,5.0,7.0};
kusano 2b45e8
	double y2[]={2.0,4.0,6.0,8.0};
kusano 2b45e8
kusano 2b45e8
	//OpenBLAS
kusano 2b45e8
	BLASFUNC(drot)(&N,x1,&incX,y1,&incY,&c,&s);
kusano 2b45e8
	//reference
kusano 2b45e8
	BLASFUNC_REF(drot)(&N,x2,&incX,y2,&incY,&c,&s);
kusano 2b45e8
kusano 2b45e8
	for(i=0; i
kusano 2b45e8
		CU_ASSERT_DOUBLE_EQUAL(x1[i], x2[i], CHECK_EPS);
kusano 2b45e8
		CU_ASSERT_DOUBLE_EQUAL(y1[i], y2[i], CHECK_EPS);
kusano 2b45e8
	}
kusano 2b45e8
}
kusano 2b45e8
kusano 2b45e8
void test_zdrot_inc_0(void)
kusano 2b45e8
{
kusano 2b45e8
	int i=0;
kusano 2b45e8
	int N=4,incX=0,incY=0;
kusano 2b45e8
	double c=0.25,s=0.5;
kusano 2b45e8
	double x1[]={1.0,3.0,5.0,7.0,1.0,3.0,5.0,7.0};
kusano 2b45e8
	double y1[]={2.0,4.0,6.0,8.0,2.0,4.0,6.0,8.0};
kusano 2b45e8
	double x2[]={1.0,3.0,5.0,7.0,1.0,3.0,5.0,7.0};
kusano 2b45e8
	double y2[]={2.0,4.0,6.0,8.0,2.0,4.0,6.0,8.0};
kusano 2b45e8
kusano 2b45e8
	//OpenBLAS
kusano 2b45e8
	BLASFUNC(zdrot)(&N,x1,&incX,y1,&incY,&c,&s);
kusano 2b45e8
	//reference
kusano 2b45e8
	BLASFUNC_REF(zdrot)(&N,x2,&incX,y2,&incY,&c,&s);
kusano 2b45e8
kusano 2b45e8
	for(i=0; i<2*N; i++){
kusano 2b45e8
		CU_ASSERT_DOUBLE_EQUAL(x1[i], x2[i], CHECK_EPS);
kusano 2b45e8
		CU_ASSERT_DOUBLE_EQUAL(y1[i], y2[i], CHECK_EPS);
kusano 2b45e8
	}
kusano 2b45e8
}
kusano 2b45e8
kusano 2b45e8
void test_srot_inc_0(void)
kusano 2b45e8
{
kusano 2b45e8
	int i=0;
kusano 2b45e8
	int N=4,incX=0,incY=0;
kusano 2b45e8
	float c=0.25,s=0.5;
kusano 2b45e8
	float x1[]={1.0,3.0,5.0,7.0};
kusano 2b45e8
	float y1[]={2.0,4.0,6.0,8.0};
kusano 2b45e8
	float x2[]={1.0,3.0,5.0,7.0};
kusano 2b45e8
	float y2[]={2.0,4.0,6.0,8.0};
kusano 2b45e8
kusano 2b45e8
	//OpenBLAS
kusano 2b45e8
	BLASFUNC(srot)(&N,x1,&incX,y1,&incY,&c,&s);
kusano 2b45e8
	//reference
kusano 2b45e8
	BLASFUNC_REF(srot)(&N,x2,&incX,y2,&incY,&c,&s);
kusano 2b45e8
kusano 2b45e8
	for(i=0; i
kusano 2b45e8
		CU_ASSERT_DOUBLE_EQUAL(x1[i], x2[i], CHECK_EPS);
kusano 2b45e8
		CU_ASSERT_DOUBLE_EQUAL(y1[i], y2[i], CHECK_EPS);
kusano 2b45e8
	}
kusano 2b45e8
}
kusano 2b45e8
kusano 2b45e8
void test_csrot_inc_0(void)
kusano 2b45e8
{
kusano 2b45e8
	int i=0;
kusano 2b45e8
	int N=4,incX=0,incY=0;
kusano 2b45e8
	float c=0.25,s=0.5;
kusano 2b45e8
	float x1[]={1.0,3.0,5.0,7.0,1.0,3.0,5.0,7.0};
kusano 2b45e8
	float y1[]={2.0,4.0,6.0,8.0,2.0,4.0,6.0,8.0};
kusano 2b45e8
	float x2[]={1.0,3.0,5.0,7.0,1.0,3.0,5.0,7.0};
kusano 2b45e8
	float y2[]={2.0,4.0,6.0,8.0,2.0,4.0,6.0,8.0};
kusano 2b45e8
kusano 2b45e8
	//OpenBLAS
kusano 2b45e8
	BLASFUNC(csrot)(&N,x1,&incX,y1,&incY,&c,&s);
kusano 2b45e8
	//reference
kusano 2b45e8
	BLASFUNC_REF(csrot)(&N,x2,&incX,y2,&incY,&c,&s);
kusano 2b45e8
kusano 2b45e8
	for(i=0; i<2*N; i++){
kusano 2b45e8
		CU_ASSERT_DOUBLE_EQUAL(x1[i], x2[i], CHECK_EPS);
kusano 2b45e8
		CU_ASSERT_DOUBLE_EQUAL(y1[i], y2[i], CHECK_EPS);
kusano 2b45e8
	}
kusano 2b45e8
}