diff --git a/kernel/mips/zscal.c b/kernel/mips/zscal.c index 7bb261941..ae1c87fce 100644 --- a/kernel/mips/zscal.c +++ b/kernel/mips/zscal.c @@ -48,7 +48,9 @@ int CNAME(BLASLONG n, BLASLONG dummy0, BLASLONG dummy1, FLOAT da_r,FLOAT da_i, F { temp = - da_i * x[ip+1] ; if (isnan(x[ip]) || isinf(x[ip])) temp = NAN; - x[ip+1] = da_i * x[ip] ; + if (!isinf(x[ip+1])) + x[ip+1] = da_i * x[ip] ; + else x[ip+1] = NAN; } } else @@ -56,12 +58,16 @@ int CNAME(BLASLONG n, BLASLONG dummy0, BLASLONG dummy1, FLOAT da_r,FLOAT da_i, F if ( da_i == 0.0 ) { temp = da_r * x[ip] ; - x[ip+1] = da_r * x[ip+1]; + if (!isinf(x[ip+1])) + x[ip+1] = da_r * x[ip+1]; + else x[ip+1] = NAN; } else { temp = da_r * x[ip] - da_i * x[ip+1] ; - x[ip+1] = da_r * x[ip+1] + da_i * x[ip] ; + if (!isinf(x[ip+1])) + x[ip+1] = da_r * x[ip+1] + da_i * x[ip] ; + else x[ip+1] = NAN; } } if ( da_r != da_r )