Skip to content

Commit a1efb03

Browse files
authored
Update cscal.c
1 parent 80bf765 commit a1efb03

File tree

1 file changed

+34
-2
lines changed

1 file changed

+34
-2
lines changed

kernel/zarch/cscal.c

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -209,8 +209,8 @@ int CNAME(BLASLONG n, BLASLONG dummy0, BLASLONG dummy1, FLOAT da_r, FLOAT da_i,
209209

210210
BLASLONG n1 = n & -2;
211211

212-
if (da_i == 0.0 && dummy2 == 0) {
213-
212+
if (da_i == 0.0) {
213+
if (dummy2 == 0) {
214214
while (j < n1) {
215215

216216
x[i] = 0.0;
@@ -230,7 +230,39 @@ int CNAME(BLASLONG n, BLASLONG dummy0, BLASLONG dummy1, FLOAT da_r, FLOAT da_i,
230230
j++;
231231

232232
}
233+
} else {
234+
while (j < n1) {
235+
if (isnan(x[i]) || isinf(x[i]) || isnan(x[i+1])) {
236+
x[i] = NAN;
237+
x[i+1] = NAN;
238+
}else{
239+
x[i] = 0.0;
240+
x[i + 1] = 0.0;
241+
}
242+
if (isnan(x[i+incx]) || isinf(x[i+incx]) || isnan(x[i+1+incx])) {
243+
x[i + inc_x] = NAN;
244+
x[i + 1 + inc_x] = NAN;
245+
} else {
246+
x[i + inc_x] = 0.0;
247+
x[i + 1 + inc_x] = 0.0;
248+
}
249+
i += 2 * inc_x;
250+
j += 2;
233251

252+
}
253+
254+
while (j < n) {
255+
if (isnan(x[i]) || isinf(x[i]) || isnan(x[i+1])) {
256+
x[i] = NAN;
257+
x[i+1] = NAN;
258+
}else{
259+
x[i] = 0.0;
260+
x[i + 1] = 0.0;
261+
}
262+
i += inc_x;
263+
j++;
264+
265+
}
234266
} else {
235267

236268
while (j < n1) {

0 commit comments

Comments
 (0)