| @@ -237,13 +237,19 @@ int CNAME(BLASLONG n, BLASLONG dummy0, BLASLONG dummy1, FLOAT da_r, FLOAT da_i, | |||||
| temp0 = NAN; | temp0 = NAN; | ||||
| else | else | ||||
| temp0 = -da_i * x[i + 1]; | temp0 = -da_i * x[i + 1]; | ||||
| x[i + 1] = da_i * x[i]; | |||||
| if (!isinf(x[i + 1])) | |||||
| x[i + 1] = da_i * x[i]; | |||||
| else | |||||
| x[i + 1] = NAN; | |||||
| x[i] = temp0; | x[i] = temp0; | ||||
| if (isnan(x[i + inc_x]) || isinf(x[i + inc_x])) | if (isnan(x[i + inc_x]) || isinf(x[i + inc_x])) | ||||
| temp1 = NAN; | temp1 = NAN; | ||||
| else | else | ||||
| temp1 = -da_i * x[i + 1 + inc_x]; | temp1 = -da_i * x[i + 1 + inc_x]; | ||||
| x[i + 1 + inc_x] = da_i * x[i + inc_x]; | |||||
| if (!isinf(x[i + 1 + inc_x])) | |||||
| x[i + 1 + inc_x] = da_i * x[i + inc_x]; | |||||
| else | |||||
| x[i + 1 + inc_x] = NAN; | |||||
| x[i + inc_x] = temp1; | x[i + inc_x] = temp1; | ||||
| i += 2 * inc_x; | i += 2 * inc_x; | ||||
| j += 2; | j += 2; | ||||
| @@ -256,7 +262,10 @@ int CNAME(BLASLONG n, BLASLONG dummy0, BLASLONG dummy1, FLOAT da_r, FLOAT da_i, | |||||
| temp0 = NAN; | temp0 = NAN; | ||||
| else | else | ||||
| temp0 = -da_i * x[i + 1]; | temp0 = -da_i * x[i + 1]; | ||||
| x[i + 1] = da_i * x[i]; | |||||
| if (!isinf(x[i +1])) | |||||
| x[i + 1] = da_i * x[i]; | |||||
| else | |||||
| x[i + 1] = NAN; | |||||
| x[i] = temp0; | x[i] = temp0; | ||||
| i += inc_x; | i += inc_x; | ||||
| j++; | j++; | ||||
| @@ -330,7 +339,7 @@ int CNAME(BLASLONG n, BLASLONG dummy0, BLASLONG dummy1, FLOAT da_r, FLOAT da_i, | |||||
| zscal_kernel_8_zero(n1, x); | zscal_kernel_8_zero(n1, x); | ||||
| else | else | ||||
| zscal_kernel_8(n1, da_r, da_i, x); | zscal_kernel_8(n1, da_r, da_i, x); | ||||
| else if (da_i == 0) | |||||
| else if (da_i == 0 && !isnan(da_r)) | |||||
| zscal_kernel_8_zero_i(n1, alpha, x); | zscal_kernel_8_zero_i(n1, alpha, x); | ||||
| else | else | ||||
| zscal_kernel_8(n1, da_r, da_i, x); | zscal_kernel_8(n1, da_r, da_i, x); | ||||
| @@ -339,14 +348,15 @@ int CNAME(BLASLONG n, BLASLONG dummy0, BLASLONG dummy1, FLOAT da_r, FLOAT da_i, | |||||
| j = n1; | j = n1; | ||||
| } | } | ||||
| if (da_r == 0.0) { | |||||
| if (da_r == 0.0 || isnan(da_r)) { | |||||
| if (da_i == 0.0) { | if (da_i == 0.0) { | ||||
| double res= 0.0; | |||||
| if (isnan(da_r)) res = da_r; | |||||
| while (j < n) { | while (j < n) { | ||||
| x[i] = 0.0; | |||||
| x[i + 1] = 0.0; | |||||
| x[i] = res; | |||||
| x[i + 1] = res; | |||||
| i += 2; | i += 2; | ||||
| j++; | j++; | ||||
| @@ -360,7 +370,10 @@ int CNAME(BLASLONG n, BLASLONG dummy0, BLASLONG dummy1, FLOAT da_r, FLOAT da_i, | |||||
| temp0 = NAN; | temp0 = NAN; | ||||
| else | else | ||||
| temp0 = -da_i * x[i + 1]; | temp0 = -da_i * x[i + 1]; | ||||
| x[i + 1] = da_i * x[i]; | |||||
| if (!isinf(x[i + 1])) | |||||
| x[i + 1] = da_i * x[i]; | |||||
| else | |||||
| x[i + 1] = NAN; | |||||
| x[i] = temp0; | x[i] = temp0; | ||||
| i += 2; | i += 2; | ||||
| j++; | j++; | ||||