BLASLONG width, i, j, k;
BLASLONG n, n_from, n_to;
int mode, mask;
- double dnum;
+ double dnum, di, dinum;
if ((nthreads == 1) || (args -> n < nthreads * SWITCH_RATIO)) {
SYRK_LOCAL(args, range_m, range_n, sa, sb, 0);
if (nthreads - num_cpu > 1) {
- double di = (double)i;
+ di = (double)i;
- width = (((BLASLONG)((sqrt(di * di + dnum) - di) + mask)/(mask+1)) * (mask+1) );
+ dinum = di * di + dnum;
+
+ if (dinum > 0)
+ width = (((BLASLONG)((sqrt(dinum) - di) + mask)/(mask+1)) * (mask+1) );
+ else
+ width = (((BLASLONG)(- di + mask)/(mask+1)) * (mask+1) );
if (num_cpu == 0) width = n - (((n - width)/(mask+1)) * (mask+1) );
if (nthreads - num_cpu > 1) {
- double di = (double)i;
+ di = (double)i;
- width = (((BLASLONG)((sqrt(di * di + dnum) - di) + mask)/(mask+1)) * (mask+1));
+ dinum = di * di +dnum;
+ if (dinum > 0)
+ width = (((BLASLONG)((sqrt(di * di + dnum) - di) + mask)/(mask+1)) * (mask+1));
+ else
+ width = (((BLASLONG)(- di + mask)/(mask+1)) * (mask+1));
+
if ((width > n - i) || (width < mask)) width = n - i;
} else {