diff --git a/kernel/power/dscal.c b/kernel/power/dscal.c index 2bbc1ea6d..da8083976 100644 --- a/kernel/power/dscal.c +++ b/kernel/power/dscal.c @@ -73,6 +73,15 @@ static void dscal_kernel_8_zero (BLASLONG n, FLOAT *x) for( i=0; i= 16 ) { BLASLONG align = ((32 - ((uintptr_t)x & (uintptr_t)0x1F)) >> 3) & 0x3; + if (dummy2 == 0) + for (j = 0; j < align; j++) { + x [j] = 0.0; + } + else for (j = 0; j < align; j++) { if (isfinite(x[j])) x[j] = 0.0; @@ -151,7 +166,13 @@ int CNAME(BLASLONG n, BLASLONG dummy0, BLASLONG dummy1, FLOAT da, FLOAT *x, BLAS j=n1; } #endif - + if (dummy2 == 0) + while(j < n) + { + x[j]=0.0; + j++; + } + else while(j < n) { if (!isfinite(x[j])) @@ -202,7 +223,14 @@ int CNAME(BLASLONG n, BLASLONG dummy0, BLASLONG dummy1, FLOAT da, FLOAT *x, BLAS if ( da == 0.0 ) { - + if (dummy2 == 0) + while(j < n) + { + x[i]=0.0; + i += inc_x; + j++; + } + else while(j < n) { if (!isfinite(x[i])) diff --git a/kernel/power/sscal.c b/kernel/power/sscal.c index 12246b0a3..54047a856 100644 --- a/kernel/power/sscal.c +++ b/kernel/power/sscal.c @@ -74,7 +74,24 @@ static void sscal_kernel_16_zero( BLASLONG n, FLOAT *x ) for( i=0; i= 32 ) { BLASLONG align = ((32 - ((uintptr_t)x & (uintptr_t)0x1F)) >> 2) & 0x7; + if (dummy2 == 0) + for (j = 0; j < align; j++){ + x[j] = 0.0; + } + else for (j = 0; j < align; j++) { if (isfinite(x[j])) x[j] = 0.0; @@ -153,9 +176,15 @@ int CNAME(BLASLONG n, BLASLONG dummy0, BLASLONG dummy1, FLOAT da, FLOAT *x, BLAS j=n1; } #endif - + if (dummy2 == 0) while(j < n) { + x[j] = 0.0; + j++; + } + else + while(j < n) + { if (isfinite(x[j])) x[j]=0.0; else @@ -204,7 +233,14 @@ int CNAME(BLASLONG n, BLASLONG dummy0, BLASLONG dummy1, FLOAT da, FLOAT *x, BLAS if ( da == 0.0 ) { - + if (dummy2 == 0) + while(j < n) + { + x[i]=0.0; + i += inc_x; + j++; + } + else while(j < n) { if (isfinite(x[i]))