Skip to content

Commit b57627c

Browse files
authored
Handle NAN and INF
1 parent d1ead06 commit b57627c

File tree

1 file changed

+15
-3
lines changed

1 file changed

+15
-3
lines changed

kernel/zarch/zscal.c

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -233,9 +233,15 @@ int CNAME(BLASLONG n, BLASLONG dummy0, BLASLONG dummy1, FLOAT da_r, FLOAT da_i,
233233

234234
while (j < n1) {
235235

236-
temp0 = -da_i * x[i + 1];
236+
if (isnan(x[i]) || isinf(x[i]))
237+
temp0 = NAN;
238+
else
239+
temp0 = -da_i * x[i + 1];
237240
x[i + 1] = da_i * x[i];
238241
x[i] = temp0;
242+
if (isnan(x[i + inc_x]) || isinf(x[i + inc_x]))
243+
temp1 = NAN;
244+
else
239245
temp1 = -da_i * x[i + 1 + inc_x];
240246
x[i + 1 + inc_x] = da_i * x[i + inc_x];
241247
x[i + inc_x] = temp1;
@@ -246,7 +252,10 @@ int CNAME(BLASLONG n, BLASLONG dummy0, BLASLONG dummy1, FLOAT da_r, FLOAT da_i,
246252

247253
while (j < n) {
248254

249-
temp0 = -da_i * x[i + 1];
255+
if (isnan(x[i]) || isinf(x[i]))
256+
temp0 = NAN;
257+
else
258+
temp0 = -da_i * x[i + 1];
250259
x[i + 1] = da_i * x[i];
251260
x[i] = temp0;
252261
i += inc_x;
@@ -347,7 +356,10 @@ int CNAME(BLASLONG n, BLASLONG dummy0, BLASLONG dummy1, FLOAT da_r, FLOAT da_i,
347356

348357
while (j < n) {
349358

350-
temp0 = -da_i * x[i + 1];
359+
if (isnan(x[i]) || isinf(x[i]))
360+
temp0 = NAN;
361+
else
362+
temp0 = -da_i * x[i + 1];
351363
x[i + 1] = da_i * x[i];
352364
x[i] = temp0;
353365
i += 2;

0 commit comments

Comments
 (0)