This is similar to fixes in gh-1929, but there was one remaining
occurance of this type of pattern in the driver/level2/*_thread.c
files.
if (nthreads - num_cpu > 1) {
double di = (double)i;
- width = ((BLASLONG)(sqrt(di * di + dnum) - di) + mask) & ~mask;
+ if (di * di - dnum > 0) {
+ width = ((BLASLONG)(-sqrt(di * di - dnum) + di) + mask) & ~mask;
+ } else {
+ width = m - i;
+ }
if (width < 4) width = 4;
if (width > m - i) width = m - i;
double di = (double)(m - i);
if (di * di - dnum > 0) {
- width = ((BLASLONG)(-sqrt(di * di - dnum) + di) + mask) & ~mask;
+ width = ((BLASLONG)(-sqrt(di * di - dnum) + di) + mask) & ~mask;
} else {
- width = m - i;
+ width = m - i;
}
if (width < 4) width = 4;