Skip to content

Commit 85c868f

Browse files
committed
utest: Add utest for {c/z}scal and {c/z}gemv
1 parent 2effbb1 commit 85c868f

File tree

2 files changed

+188
-0
lines changed

2 files changed

+188
-0
lines changed

utest/test_gemv.c

+134
Original file line numberDiff line numberDiff line change
@@ -128,3 +128,137 @@ CTEST(dgemv, 0_nan_inf_incy_2)
128128
}
129129

130130
#endif
131+
132+
#ifdef BUILD_COMPLEX
133+
134+
CTEST(cgemv, 0_nan_inf)
135+
{
136+
int i;
137+
blasint N = 17;
138+
blasint incX = 1;
139+
blasint incY = 1;
140+
float alpha[2] = {0.0, 0.0};
141+
float beta[2] = {0.0, 0.0};
142+
char trans = 'N';
143+
float A[17 * 17 * 4];
144+
float X[17 * 2];
145+
float Y[17 * 2];
146+
147+
memset(A, 0, sizeof(A));
148+
memset(X, 0, sizeof(X));
149+
for (i = 0; i < (2 * N - 2); i += 4)
150+
{
151+
Y[i] = NAN;
152+
Y[i + 1] = NAN;
153+
154+
Y[i + 2] = INFINITY;
155+
Y[i + 3] = INFINITY;
156+
}
157+
Y[2 * N - 1] = NAN;
158+
Y[2 * N - 2] = NAN;
159+
BLASFUNC(cgemv)(&trans, &N, &N, alpha, A, &N, X, &incX, beta, Y, &incY);
160+
for (i = 0; i < 2 * N; i ++)
161+
ASSERT_TRUE(Y[i] == 0.0);
162+
}
163+
164+
CTEST(cgemv, 0_nan_inf_incy_2)
165+
{
166+
int i;
167+
blasint N = 17;
168+
blasint incX = 1;
169+
blasint incY = 2;
170+
float alpha[2] = {0.0, 0.0};
171+
float beta[2] = {0.0, 0.0};
172+
char trans = 'N';
173+
float A[17 * 17 * 4];
174+
float X[17];
175+
float Y[17 * 2 * 2];
176+
float *ay = Y;
177+
178+
memset(A, 0, sizeof(A));
179+
memset(X, 0, sizeof(X));
180+
memset(Y, 0, sizeof(Y));
181+
for (i = 0; i < (2 * N - 2); i += 4)
182+
{
183+
ay[0] = NAN;
184+
ay[1] = NAN;
185+
ay += 4;
186+
ay[0] = INFINITY;
187+
ay[1] = INFINITY;
188+
ay += 4;
189+
}
190+
Y[4 * N - 4] = NAN;
191+
Y[4 * N - 3] = NAN;
192+
BLASFUNC(cgemv)(&trans, &N, &N, alpha, A, &N, X, &incX, beta, Y, &incY);
193+
for (i = 0; i < 4 * N; i ++)
194+
ASSERT_TRUE(Y[i] == 0.0);
195+
}
196+
197+
#endif
198+
199+
#ifdef BUILD_COMPLEX16
200+
201+
CTEST(zgemv, 0_nan_inf)
202+
{
203+
int i;
204+
blasint N = 17;
205+
blasint incX = 1;
206+
blasint incY = 1;
207+
double alpha[2] = {0.0, 0.0};
208+
double beta[2] = {0.0, 0.0};
209+
char trans = 'N';
210+
double A[17 * 17 * 4];
211+
double X[17 * 2];
212+
double Y[17 * 2];
213+
214+
memset(A, 0, sizeof(A));
215+
memset(X, 0, sizeof(X));
216+
for (i = 0; i < (2 * N - 2); i += 4)
217+
{
218+
Y[i] = NAN;
219+
Y[i + 1] = NAN;
220+
221+
Y[i + 2] = INFINITY;
222+
Y[i + 3] = INFINITY;
223+
}
224+
Y[2 * N - 1] = NAN;
225+
Y[2 * N - 2] = NAN;
226+
BLASFUNC(zgemv)(&trans, &N, &N, alpha, A, &N, X, &incX, beta, Y, &incY);
227+
for (i = 0; i < 2 * N; i ++)
228+
ASSERT_TRUE(Y[i] == 0.0);
229+
}
230+
231+
CTEST(zgemv, 0_nan_inf_incy_2)
232+
{
233+
int i;
234+
blasint N = 17;
235+
blasint incX = 1;
236+
blasint incY = 2;
237+
double alpha[2] = {0.0, 0.0};
238+
double beta[2] = {0.0, 0.0};
239+
char trans = 'N';
240+
double A[17 * 17 * 4];
241+
double X[17];
242+
double Y[17 * 2 * 2];
243+
double *ay = Y;
244+
245+
memset(A, 0, sizeof(A));
246+
memset(X, 0, sizeof(X));
247+
memset(Y, 0, sizeof(Y));
248+
for (i = 0; i < (2 * N - 2); i += 4)
249+
{
250+
ay[0] = NAN;
251+
ay[1] = NAN;
252+
ay += 4;
253+
ay[0] = INFINITY;
254+
ay[1] = INFINITY;
255+
ay += 4;
256+
}
257+
Y[4 * N - 4] = NAN;
258+
Y[4 * N - 3] = NAN;
259+
BLASFUNC(zgemv)(&trans, &N, &N, alpha, A, &N, X, &incX, beta, Y, &incY);
260+
for (i = 0; i < 4 * N; i ++)
261+
ASSERT_TRUE(Y[i] == 0.0);
262+
}
263+
264+
#endif

utest/test_zscal.c

+54
Original file line numberDiff line numberDiff line change
@@ -442,6 +442,33 @@ CTEST(cscal, i_0inf_inc_2)
442442
ASSERT_TRUE(isnan(inf[17]));
443443
}
444444

445+
CTEST(cscal, i00_NAN)
446+
{
447+
blasint N=9;
448+
blasint incX=1;
449+
float i[] = {0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0 };
450+
float nan[] = {NAN, 0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0};
451+
BLASFUNC(cscal)(&N, i, nan, &incX);
452+
ASSERT_TRUE(isnan(nan[0]));
453+
ASSERT_TRUE(isnan(nan[1]));
454+
ASSERT_TRUE(isnan(nan[16]));
455+
ASSERT_TRUE(isnan(nan[17]));
456+
}
457+
458+
CTEST(cscal, i00_NAN_incx_2)
459+
{
460+
blasint N=9;
461+
blasint incX=2;
462+
float i[] = {0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0 };
463+
float nan[] = {0,NAN, 0,NAN, 0,NAN, 0,NAN, 0,NAN, 0,NAN, 0,NAN, 0,NAN, 0,NAN,
464+
0,NAN, 0,NAN, 0,NAN, 0,NAN, 0,NAN, 0,NAN, 0,NAN, 0,NAN, 0,NAN};
465+
BLASFUNC(cscal)(&N, i, nan, &incX);
466+
ASSERT_TRUE(isnan(nan[0]));
467+
ASSERT_TRUE(isnan(nan[1]));
468+
ASSERT_TRUE(isnan(nan[16]));
469+
ASSERT_TRUE(isnan(nan[17]));
470+
}
471+
445472
#endif
446473

447474
#ifdef BUILD_COMPLEX16
@@ -588,4 +615,31 @@ CTEST(zscal, i_0inf_inc_2)
588615
ASSERT_TRUE(isnan(inf[17]));
589616
}
590617

618+
CTEST(zscal, i00_NAN)
619+
{
620+
blasint N=9;
621+
blasint incX=1;
622+
double i[] = {0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0 };
623+
double nan[] = {NAN, 0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0};
624+
BLASFUNC(zscal)(&N, i, nan, &incX);
625+
ASSERT_TRUE(isnan(nan[0]));
626+
ASSERT_TRUE(isnan(nan[1]));
627+
ASSERT_TRUE(isnan(nan[16]));
628+
ASSERT_TRUE(isnan(nan[17]));
629+
}
630+
631+
CTEST(zscal, i00_NAN_incx_2)
632+
{
633+
blasint N=9;
634+
blasint incX=2;
635+
double i[] = {0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0 };
636+
double nan[] = {0,NAN, 0,NAN, 0,NAN, 0,NAN, 0,NAN, 0,NAN, 0,NAN, 0,NAN, 0,NAN,
637+
0,NAN, 0,NAN, 0,NAN, 0,NAN, 0,NAN, 0,NAN, 0,NAN, 0,NAN, 0,NAN};
638+
BLASFUNC(zscal)(&N, i, nan, &incX);
639+
ASSERT_TRUE(isnan(nan[0]));
640+
ASSERT_TRUE(isnan(nan[1]));
641+
ASSERT_TRUE(isnan(nan[16]));
642+
ASSERT_TRUE(isnan(nan[17]));
643+
}
644+
591645
#endif

0 commit comments

Comments
 (0)