Skip to content

Commit fe16a94

Browse files
authored
Add rotmg tests for CMAKE MSVC+CLANG build
1 parent 632b8e0 commit fe16a94

File tree

1 file changed

+134
-0
lines changed

1 file changed

+134
-0
lines changed

utest/utest_main2.c

Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,140 @@ CTEST(amax, samax){
4949
ASSERT_DBL_NEAR_TOL((double)(tr_max), (double)(te_max), SINGLE_EPS);
5050
}
5151

52+
CTEST (drotmg,rotmg){
53+
double te_d1, tr_d1;
54+
double te_d2, tr_d2;
55+
double te_x1, tr_x1;
56+
double te_y1, tr_y1;
57+
double te_param[5];
58+
double tr_param[5];
59+
int i=0;
60+
// original test case for libGoto bug fixed by feb2014 rewrite
61+
te_d1= 0.21149573940783739;
62+
te_d2= 0.046892057172954082;
63+
te_x1= -0.42272687517106533;
64+
te_y1= 0.42211309121921659;
65+
66+
67+
for(i=0; i<5; i++){
68+
te_param[i]=tr_param[i]=0.0;
69+
}
70+
71+
//reference values as calulated by netlib blas
72+
73+
tr_d1= 0.1732048;
74+
tr_d2= 0.03840234;
75+
tr_x1= -0.516180;
76+
tr_y1= 0.422113;
77+
tr_d1= 0.17320483687975;
78+
tr_d2= 0.03840233915037;
79+
tr_x1= -0.51618034832329;
80+
tr_y1= 0.42211309121922;
81+
82+
tr_param[0]= 0.0;
83+
tr_param[1]= 0.0;
84+
tr_param[2]= 0.99854803659786;
85+
tr_param[3]= -0.22139439665872;
86+
tr_param[4]= 0.0;
87+
88+
BLASFUNC(drotmg)(&te_d1, &te_d2, &te_x1, &te_y1, te_param);
89+
ASSERT_DBL_NEAR_TOL(te_d1, tr_d1, DOUBLE_EPS);
90+
ASSERT_DBL_NEAR_TOL(te_d2, tr_d2, DOUBLE_EPS);
91+
ASSERT_DBL_NEAR_TOL(te_x1, tr_x1, DOUBLE_EPS);
92+
ASSERT_DBL_NEAR_TOL(te_y1, tr_y1, DOUBLE_EPS);
93+
94+
for(i=0; i<5; i++){
95+
ASSERT_DBL_NEAR_TOL(te_param[i], tr_param[i], DOUBLE_EPS);
96+
}
97+
}
98+
99+
CTEST (drotmg,rotmg_issue1452){
100+
double te_d1, tr_d1;
101+
double te_d2, tr_d2;
102+
double te_x1, tr_x1;
103+
double te_y1, tr_y1;
104+
double te_param[5];
105+
double tr_param[5];
106+
int i=0;
107+
108+
// from issue #1452, buggy version returned 0.000244 for param[3]
109+
te_d1 = 5.9e-8;
110+
te_d2 = 5.960464e-8;
111+
te_x1 = 1.0;
112+
te_y1 = 150.0;
113+
114+
for(i=0; i<5; i++){
115+
te_param[i]=tr_param[i]=0.0;
116+
}
117+
118+
//reference values as calulated by netlib blas
119+
tr_d1= 0.99995592822897;
120+
tr_d2= 0.98981219860583;
121+
tr_x1= 0.03662270484346;
122+
tr_y1= 150.000000000000;
123+
124+
tr_param[0]= -1.0;
125+
tr_param[1]= 0.00000161109346;
126+
tr_param[2]= -0.00024414062500;
127+
tr_param[3]= 1.0;
128+
tr_param[4]= 0.00000162760417;
129+
130+
//OpenBLAS
131+
BLASFUNC(drotmg)(&te_d1, &te_d2, &te_x1, &te_y1, te_param);
132+
133+
ASSERT_DBL_NEAR_TOL(te_d1, tr_d1, DOUBLE_EPS);
134+
ASSERT_DBL_NEAR_TOL(te_d2, tr_d2, DOUBLE_EPS);
135+
ASSERT_DBL_NEAR_TOL(te_x1, tr_x1, DOUBLE_EPS);
136+
ASSERT_DBL_NEAR_TOL(te_y1, tr_y1, DOUBLE_EPS);
137+
138+
for(i=0; i<5; i++){
139+
ASSERT_DBL_NEAR_TOL(te_param[i], tr_param[i], DOUBLE_EPS);
140+
}
141+
142+
}
143+
144+
CTEST(drotmg, rotmg_D1eqD2_X1eqX2){
145+
double te_d1, tr_d1;
146+
double te_d2, tr_d2;
147+
double te_x1, tr_x1;
148+
double te_y1, tr_y1;
149+
double te_param[5];
150+
double tr_param[5];
151+
int i=0;
152+
te_d1= tr_d1=2.;
153+
te_d2= tr_d2=2.;
154+
te_x1= tr_x1=8.;
155+
te_y1= tr_y1=8.;
156+
157+
for(i=0; i<5; i++){
158+
te_param[i]=tr_param[i]=0.0;
159+
}
160+
161+
//reference values as calulated by netlib blas
162+
tr_d1= 1.0;
163+
tr_d2= 1.0;
164+
tr_x1= 16.0;
165+
tr_y1= 8.0;
166+
167+
tr_param[0]=1.0;
168+
tr_param[1]=1.0;
169+
tr_param[2]=0.0;
170+
tr_param[3]=0.0;
171+
tr_param[4]=1.0;
172+
173+
//OpenBLAS
174+
BLASFUNC(drotmg)(&te_d1, &te_d2, &te_x1, &te_y1, te_param);
175+
176+
ASSERT_DBL_NEAR_TOL(te_d1, tr_d1, DOUBLE_EPS);
177+
ASSERT_DBL_NEAR_TOL(te_d2, tr_d2, DOUBLE_EPS);
178+
ASSERT_DBL_NEAR_TOL(te_x1, tr_x1, DOUBLE_EPS);
179+
ASSERT_DBL_NEAR_TOL(te_y1, tr_y1, DOUBLE_EPS);
180+
181+
for(i=0; i<5; i++){
182+
ASSERT_DBL_NEAR_TOL(te_param[i], tr_param[i], DOUBLE_EPS);
183+
}
184+
}
185+
52186
int main(int argc, const char ** argv){
53187

54188
CTEST_ADD(amax, samax);

0 commit comments

Comments
 (0)