Fix integer overflow in threshold calculation

Related to lapack issue 135, the threshold calculation can overflow as well as the multiplication is evaluated from left to right.
Without explicit parentheses, the calculation would overflow for N >= 18919
This commit is contained in:
Martin Kroeker 2017-03-24 15:49:55 +01:00 committed by GitHub
parent 0ada2c02e2
commit ca89a16a72
1 changed files with 3 additions and 3 deletions

View File

@ -410,12 +410,12 @@
40 CONTINUE 40 CONTINUE
50 CONTINUE 50 CONTINUE
SMINOA = SMINOA / SQRT( DBLE( N ) ) SMINOA = SMINOA / SQRT( DBLE( N ) )
THRESH = MAX( TOL*SMINOA, MAXITR*N*N*UNFL ) THRESH = MAX( TOL*SMINOA, MAXITR*(N*(N*UNFL)) )
ELSE ELSE
* *
* Absolute accuracy desired * Absolute accuracy desired
* *
THRESH = MAX( ABS( TOL )*SMAX, MAXITR*N*N*UNFL ) THRESH = MAX( ABS( TOL )*SMAX, MAXITR*(N*(N*UNFL)) )
END IF END IF
* *
* Prepare for main iteration loop for the singular values * Prepare for main iteration loop for the singular values