@@ -31,9 +31,9 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
3131
3232**********************************************************************************/
3333
34- #include "common_utest .h"
34+ #include "openblas_utest .h"
3535
36- void test_drotmg ( )
36+ CTEST ( drotmg , rotmg )
3737{
3838 double te_d1 , tr_d1 ;
3939 double te_d2 , tr_d2 ;
@@ -42,31 +42,92 @@ void test_drotmg()
4242 double te_param [5 ];
4343 double tr_param [5 ];
4444 int i = 0 ;
45- te_d1 = tr_d1 = 0.21149573940783739 ;
46- te_d2 = tr_d2 = 0.046892057172954082 ;
47- te_x1 = tr_x1 = -0.42272687517106533 ;
48- te_y1 = tr_y1 = 0.42211309121921659 ;
45+ // original test case for libGoto bug fixed by feb2014 rewrite
46+ te_d1 = 0.21149573940783739 ;
47+ te_d2 = 0.046892057172954082 ;
48+ te_x1 = -0.42272687517106533 ;
49+ te_y1 = 0.42211309121921659 ;
50+
4951
5052 for (i = 0 ; i < 5 ; i ++ ){
5153 te_param [i ]= tr_param [i ]= 0.0 ;
5254 }
5355
56+ //reference values as calulated by netlib blas
57+
58+ tr_d1 = 0.1732048 ;
59+ tr_d2 = 0.03840234 ;
60+ tr_x1 = -0.516180 ;
61+ tr_y1 = 0.422113 ;
62+ tr_d1 = 0.17320483687975 ;
63+ tr_d2 = 0.03840233915037 ;
64+ tr_x1 = -0.51618034832329 ;
65+ tr_y1 = 0.42211309121922 ;
66+
67+ tr_param [0 ]= 0.0 ;
68+ tr_param [1 ]= 0.0 ;
69+ tr_param [2 ]= 0.99854803659786 ;
70+ tr_param [3 ]= -0.22139439665872 ;
71+ tr_param [4 ]= 0.0 ;
72+
73+ BLASFUNC (drotmg )(& te_d1 , & te_d2 , & te_x1 , & te_y1 , te_param );
74+ ASSERT_DBL_NEAR_TOL (te_d1 , tr_d1 , DOUBLE_EPS );
75+ ASSERT_DBL_NEAR_TOL (te_d2 , tr_d2 , DOUBLE_EPS );
76+ ASSERT_DBL_NEAR_TOL (te_x1 , tr_x1 , DOUBLE_EPS );
77+ ASSERT_DBL_NEAR_TOL (te_y1 , tr_y1 , DOUBLE_EPS );
78+
79+ for (i = 0 ; i < 5 ; i ++ ){
80+ ASSERT_DBL_NEAR_TOL (te_param [i ], tr_param [i ], DOUBLE_EPS );
81+ }
82+ }
83+
84+ CTEST (drotmg ,rotmg_issue1452 )
85+ {
86+ double te_d1 , tr_d1 ;
87+ double te_d2 , tr_d2 ;
88+ double te_x1 , tr_x1 ;
89+ double te_y1 , tr_y1 ;
90+ double te_param [5 ];
91+ double tr_param [5 ];
92+ int i = 0 ;
93+
94+ // from issue #1452, buggy version returned 0.000244 for param[3]
95+ te_d1 = 5.9e-8 ;
96+ te_d2 = 5.960464e-8 ;
97+ te_x1 = 1.0 ;
98+ te_y1 = 150.0 ;
99+
100+ for (i = 0 ; i < 5 ; i ++ ){
101+ te_param [i ]= tr_param [i ]= 0.0 ;
102+ }
103+
104+ //reference values as calulated by netlib blas
105+ tr_d1 = 0.99995592822897 ;
106+ tr_d2 = 0.98981219860583 ;
107+ tr_x1 = 0.03662270484346 ;
108+ tr_y1 = 150.000000000000 ;
109+
110+ tr_param [0 ]= -1.0 ;
111+ tr_param [1 ]= 0.00000161109346 ;
112+ tr_param [2 ]= -0.00024414062500 ;
113+ tr_param [3 ]= 1.0 ;
114+ tr_param [4 ]= 0.00000162760417 ;
115+
54116 //OpenBLAS
55117 BLASFUNC (drotmg )(& te_d1 , & te_d2 , & te_x1 , & te_y1 , te_param );
56- //reference
57- BLASFUNC_REF (drotmg )(& tr_d1 , & tr_d2 , & tr_x1 , & tr_y1 , tr_param );
58118
59- CU_ASSERT_DOUBLE_EQUAL (te_d1 , tr_d1 , CHECK_EPS );
60- CU_ASSERT_DOUBLE_EQUAL (te_d2 , tr_d2 , CHECK_EPS );
61- CU_ASSERT_DOUBLE_EQUAL (te_x1 , tr_x1 , CHECK_EPS );
62- CU_ASSERT_DOUBLE_EQUAL (te_y1 , tr_y1 , CHECK_EPS );
119+ ASSERT_DBL_NEAR_TOL (te_d1 , tr_d1 , DOUBLE_EPS );
120+ ASSERT_DBL_NEAR_TOL (te_d2 , tr_d2 , DOUBLE_EPS );
121+ ASSERT_DBL_NEAR_TOL (te_x1 , tr_x1 , DOUBLE_EPS );
122+ ASSERT_DBL_NEAR_TOL (te_y1 , tr_y1 , DOUBLE_EPS );
63123
64124 for (i = 0 ; i < 5 ; i ++ ){
65- CU_ASSERT_DOUBLE_EQUAL (te_param [i ], tr_param [i ], CHECK_EPS );
125+ ASSERT_DBL_NEAR_TOL (te_param [i ], tr_param [i ], DOUBLE_EPS );
66126 }
127+
67128}
68129
69- void test_drotmg_D1eqD2_X1eqX2 ( )
130+ CTEST ( drotmg , rotmg_D1eqD2_X1eqX2 )
70131{
71132 double te_d1 , tr_d1 ;
72133 double te_d2 , tr_d2 ;
@@ -83,18 +144,28 @@ void test_drotmg_D1eqD2_X1eqX2()
83144 for (i = 0 ; i < 5 ; i ++ ){
84145 te_param [i ]= tr_param [i ]= 0.0 ;
85146 }
147+
148+ //reference values as calulated by netlib blas
149+ tr_d1 = 1.0 ;
150+ tr_d2 = 1.0 ;
151+ tr_x1 = 16.0 ;
152+ tr_y1 = 8.0 ;
153+
154+ tr_param [0 ]= 1.0 ;
155+ tr_param [1 ]= 1.0 ;
156+ tr_param [2 ]= 0.0 ;
157+ tr_param [3 ]= 0.0 ;
158+ tr_param [4 ]= 1.0 ;
86159
87160 //OpenBLAS
88161 BLASFUNC (drotmg )(& te_d1 , & te_d2 , & te_x1 , & te_y1 , te_param );
89- //reference
90- BLASFUNC_REF (drotmg )(& tr_d1 , & tr_d2 , & tr_x1 , & tr_y1 , tr_param );
91162
92- CU_ASSERT_DOUBLE_EQUAL (te_d1 , tr_d1 , CHECK_EPS );
93- CU_ASSERT_DOUBLE_EQUAL (te_d2 , tr_d2 , CHECK_EPS );
94- CU_ASSERT_DOUBLE_EQUAL (te_x1 , tr_x1 , CHECK_EPS );
95- CU_ASSERT_DOUBLE_EQUAL (te_y1 , tr_y1 , CHECK_EPS );
163+ ASSERT_DBL_NEAR_TOL (te_d1 , tr_d1 , DOUBLE_EPS );
164+ ASSERT_DBL_NEAR_TOL (te_d2 , tr_d2 , DOUBLE_EPS );
165+ ASSERT_DBL_NEAR_TOL (te_x1 , tr_x1 , DOUBLE_EPS );
166+ ASSERT_DBL_NEAR_TOL (te_y1 , tr_y1 , DOUBLE_EPS );
96167
97168 for (i = 0 ; i < 5 ; i ++ ){
98- CU_ASSERT_DOUBLE_EQUAL (te_param [i ], tr_param [i ], CHECK_EPS );
169+ ASSERT_DBL_NEAR_TOL (te_param [i ], tr_param [i ], DOUBLE_EPS );
99170 }
100171}
0 commit comments