| @@ -49,6 +49,140 @@ CTEST(amax, samax){ | |||||
| 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 (drotmg,rotmg){ | |||||
| double te_d1, tr_d1; | |||||
| double te_d2, tr_d2; | |||||
| double te_x1, tr_x1; | |||||
| double te_y1, tr_y1; | |||||
| double te_param[5]; | |||||
| double tr_param[5]; | |||||
| int i=0; | |||||
| // original test case for libGoto bug fixed by feb2014 rewrite | |||||
| te_d1= 0.21149573940783739; | |||||
| te_d2= 0.046892057172954082; | |||||
| te_x1= -0.42272687517106533; | |||||
| te_y1= 0.42211309121921659; | |||||
| for(i=0; i<5; i++){ | |||||
| te_param[i]=tr_param[i]=0.0; | |||||
| } | |||||
| //reference values as calulated by netlib blas | |||||
| tr_d1= 0.1732048; | |||||
| tr_d2= 0.03840234; | |||||
| tr_x1= -0.516180; | |||||
| tr_y1= 0.422113; | |||||
| tr_d1= 0.17320483687975; | |||||
| tr_d2= 0.03840233915037; | |||||
| tr_x1= -0.51618034832329; | |||||
| tr_y1= 0.42211309121922; | |||||
| tr_param[0]= 0.0; | |||||
| tr_param[1]= 0.0; | |||||
| tr_param[2]= 0.99854803659786; | |||||
| tr_param[3]= -0.22139439665872; | |||||
| tr_param[4]= 0.0; | |||||
| BLASFUNC(drotmg)(&te_d1, &te_d2, &te_x1, &te_y1, te_param); | |||||
| ASSERT_DBL_NEAR_TOL(te_d1, tr_d1, DOUBLE_EPS); | |||||
| ASSERT_DBL_NEAR_TOL(te_d2, tr_d2, DOUBLE_EPS); | |||||
| ASSERT_DBL_NEAR_TOL(te_x1, tr_x1, DOUBLE_EPS); | |||||
| ASSERT_DBL_NEAR_TOL(te_y1, tr_y1, DOUBLE_EPS); | |||||
| for(i=0; i<5; i++){ | |||||
| ASSERT_DBL_NEAR_TOL(te_param[i], tr_param[i], DOUBLE_EPS); | |||||
| } | |||||
| } | |||||
| CTEST (drotmg,rotmg_issue1452){ | |||||
| double te_d1, tr_d1; | |||||
| double te_d2, tr_d2; | |||||
| double te_x1, tr_x1; | |||||
| double te_y1, tr_y1; | |||||
| double te_param[5]; | |||||
| double tr_param[5]; | |||||
| int i=0; | |||||
| // from issue #1452, buggy version returned 0.000244 for param[3] | |||||
| te_d1 = 5.9e-8; | |||||
| te_d2 = 5.960464e-8; | |||||
| te_x1 = 1.0; | |||||
| te_y1 = 150.0; | |||||
| for(i=0; i<5; i++){ | |||||
| te_param[i]=tr_param[i]=0.0; | |||||
| } | |||||
| //reference values as calulated by netlib blas | |||||
| tr_d1= 0.99995592822897; | |||||
| tr_d2= 0.98981219860583; | |||||
| tr_x1= 0.03662270484346; | |||||
| tr_y1= 150.000000000000; | |||||
| tr_param[0]= -1.0; | |||||
| tr_param[1]= 0.00000161109346; | |||||
| tr_param[2]= -0.00024414062500; | |||||
| tr_param[3]= 1.0; | |||||
| tr_param[4]= 0.00000162760417; | |||||
| //OpenBLAS | |||||
| BLASFUNC(drotmg)(&te_d1, &te_d2, &te_x1, &te_y1, te_param); | |||||
| ASSERT_DBL_NEAR_TOL(te_d1, tr_d1, DOUBLE_EPS); | |||||
| ASSERT_DBL_NEAR_TOL(te_d2, tr_d2, DOUBLE_EPS); | |||||
| ASSERT_DBL_NEAR_TOL(te_x1, tr_x1, DOUBLE_EPS); | |||||
| ASSERT_DBL_NEAR_TOL(te_y1, tr_y1, DOUBLE_EPS); | |||||
| for(i=0; i<5; i++){ | |||||
| ASSERT_DBL_NEAR_TOL(te_param[i], tr_param[i], DOUBLE_EPS); | |||||
| } | |||||
| } | |||||
| CTEST(drotmg, rotmg_D1eqD2_X1eqX2){ | |||||
| double te_d1, tr_d1; | |||||
| double te_d2, tr_d2; | |||||
| double te_x1, tr_x1; | |||||
| double te_y1, tr_y1; | |||||
| double te_param[5]; | |||||
| double tr_param[5]; | |||||
| int i=0; | |||||
| te_d1= tr_d1=2.; | |||||
| te_d2= tr_d2=2.; | |||||
| te_x1= tr_x1=8.; | |||||
| te_y1= tr_y1=8.; | |||||
| for(i=0; i<5; i++){ | |||||
| te_param[i]=tr_param[i]=0.0; | |||||
| } | |||||
| //reference values as calulated by netlib blas | |||||
| tr_d1= 1.0; | |||||
| tr_d2= 1.0; | |||||
| tr_x1= 16.0; | |||||
| tr_y1= 8.0; | |||||
| tr_param[0]=1.0; | |||||
| tr_param[1]=1.0; | |||||
| tr_param[2]=0.0; | |||||
| tr_param[3]=0.0; | |||||
| tr_param[4]=1.0; | |||||
| //OpenBLAS | |||||
| BLASFUNC(drotmg)(&te_d1, &te_d2, &te_x1, &te_y1, te_param); | |||||
| ASSERT_DBL_NEAR_TOL(te_d1, tr_d1, DOUBLE_EPS); | |||||
| ASSERT_DBL_NEAR_TOL(te_d2, tr_d2, DOUBLE_EPS); | |||||
| ASSERT_DBL_NEAR_TOL(te_x1, tr_x1, DOUBLE_EPS); | |||||
| ASSERT_DBL_NEAR_TOL(te_y1, tr_y1, DOUBLE_EPS); | |||||
| for(i=0; i<5; i++){ | |||||
| ASSERT_DBL_NEAR_TOL(te_param[i], tr_param[i], DOUBLE_EPS); | |||||
| } | |||||
| } | |||||
| int main(int argc, const char ** argv){ | int main(int argc, const char ** argv){ | ||||
| CTEST_ADD(amax, samax); | CTEST_ADD(amax, samax); | ||||