#include <complex>
#include <iostream>
#include "blis.hh"
#include "test.hh"
using namespace blis;
using namespace std;
template< typename T>
void test_rotg()
{
T a, b, c, s;
T a_ref, b_ref, c_ref, s_ref;
if(is_same<T , float>::value)
{
a = 1.0f;
b = 1.0f;
a_ref = 1.41421356237f;
b_ref = 1.41421356237f;
c_ref = 0.707106781187f;
s_ref = 0.707106781187f;
}else{
a = 1;
b = 0;
a_ref = 1;
b_ref = 0;
c_ref = 1;
s_ref = 0;
}
#ifdef PRINT
cout<< "Before blis::rotg \na Value : " << a << "\n" ;
cout<< "b Value : " << b << "\n" ;
#endif
blis::rotg<T>(
&a,
&b,
&c,
&s
);
#ifdef PRINT
cout<< "After blis::rotg \na Value : " << a << "\n" ;
cout<< "b Value : " << b << "\n" ;
cout<< "c Value : " << c << "\n" ;
cout<< "s Value : " << s << "\n" ;
#endif
#ifdef PRINT
cout<< "Expected Output\na Value : " << a_ref << "\n" ;
cout<< "b Value : " << b_ref << "\n" ;
cout<< "c Value : " << c_ref << "\n" ;
cout<< "s Value : " << s_ref << "\n" ;
#endif
if( (a != a_ref ) || (b != b_ref ) || (c != c_ref ) || (s != s_ref ))
printf("%s TEST FAIL\n" , __PRETTY_FUNCTION__);
else
printf("%s TEST PASS\n" , __PRETTY_FUNCTION__);
}
int main( int argc, char** argv )
{
test_rotg<float>( );
test_rotg<double>( );
return 0;
}