Mercurial > octave
changeset 33043:147c69ad945d
eliminate volatile from declaration of temporary used to force float truncation
With modern C++, a separate assignment to a temporary variable should
be sufficient to strip away any extraneous range and precision.
Declaring the temporary "volatile" should not be needed.
Affected files: CMatrix.cc, CSparse.cc, dMatrix.cc, dSparse.cc,
fCMatrix.cc, fMatrix.cc, eigs-base.cc, lo-mappers.h.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Sat, 17 Feb 2024 15:59:36 -0500 |
parents | ebc26cef3096 |
children | 359f922209d4 |
files | liboctave/array/CMatrix.cc liboctave/array/CSparse.cc liboctave/array/dMatrix.cc liboctave/array/dSparse.cc liboctave/array/fCMatrix.cc liboctave/array/fMatrix.cc liboctave/numeric/eigs-base.cc liboctave/numeric/lo-mappers.h |
diffstat | 8 files changed, 113 insertions(+), 58 deletions(-) [+] |
line wrap: on
line diff
--- a/liboctave/array/CMatrix.cc Sat Feb 17 11:51:15 2024 -0500 +++ b/liboctave/array/CMatrix.cc Sat Feb 17 15:59:36 2024 -0500 @@ -1603,7 +1603,8 @@ if (info != 0) info = -2; - volatile double rcond_plus_one = rcon + 1.0; + // Prevent use of extra precision. + double rcond_plus_one = rcon + 1.0; if (rcond_plus_one == 1.0 || octave::math::isnan (rcon)) { @@ -1701,7 +1702,8 @@ if (info != 0) info = -2; - volatile double rcond_plus_one = rcon + 1.0; + // Prevent use of extra precision. + double rcond_plus_one = rcon + 1.0; if (rcond_plus_one == 1.0 || octave::math::isnan (rcon)) { @@ -1793,7 +1795,8 @@ if (info != 0) info = -2; - volatile double rcond_plus_one = rcon + 1.0; + // Prevent use of extra precision. + double rcond_plus_one = rcon + 1.0; if (rcond_plus_one == 1.0 || octave::math::isnan (rcon)) { @@ -1888,7 +1891,8 @@ if (info != 0) info = -2; - volatile double rcond_plus_one = rcon + 1.0; + // Prevent use of extra precision. + double rcond_plus_one = rcon + 1.0; if (rcond_plus_one == 1.0 || octave::math::isnan (rcon)) {
--- a/liboctave/array/CSparse.cc Sat Feb 17 11:51:15 2024 -0500 +++ b/liboctave/array/CSparse.cc Sat Feb 17 15:59:36 2024 -0500 @@ -1723,7 +1723,8 @@ octave::warn_singular_matrix (rcond); } - volatile double rcond_plus_one = rcond + 1.0; + // Prevent use of extra precision. + double rcond_plus_one = rcond + 1.0; if (rcond_plus_one == 1.0 || octave::math::isnan (rcond)) { @@ -2005,7 +2006,8 @@ octave::warn_singular_matrix (rcond); } - volatile double rcond_plus_one = rcond + 1.0; + // Prevent use of extra precision. + double rcond_plus_one = rcond + 1.0; if (rcond_plus_one == 1.0 || octave::math::isnan (rcond)) { @@ -2234,7 +2236,8 @@ octave::warn_singular_matrix (rcond); } - volatile double rcond_plus_one = rcond + 1.0; + // Prevent use of extra precision. + double rcond_plus_one = rcond + 1.0; if (rcond_plus_one == 1.0 || octave::math::isnan (rcond)) { @@ -2516,7 +2519,8 @@ octave::warn_singular_matrix (rcond); } - volatile double rcond_plus_one = rcond + 1.0; + // Prevent use of extra precision. + double rcond_plus_one = rcond + 1.0; if (rcond_plus_one == 1.0 || octave::math::isnan (rcond)) { @@ -2765,7 +2769,8 @@ octave::warn_singular_matrix (rcond); } - volatile double rcond_plus_one = rcond + 1.0; + // Prevent use of extra precision. + double rcond_plus_one = rcond + 1.0; if (rcond_plus_one == 1.0 || octave::math::isnan (rcond)) { @@ -3066,7 +3071,8 @@ octave::warn_singular_matrix (rcond); } - volatile double rcond_plus_one = rcond + 1.0; + // Prevent use of extra precision. + double rcond_plus_one = rcond + 1.0; if (rcond_plus_one == 1.0 || octave::math::isnan (rcond)) { @@ -3318,7 +3324,8 @@ octave::warn_singular_matrix (rcond); } - volatile double rcond_plus_one = rcond + 1.0; + // Prevent use of extra precision. + double rcond_plus_one = rcond + 1.0; if (rcond_plus_one == 1.0 || octave::math::isnan (rcond)) { @@ -3618,7 +3625,8 @@ octave::warn_singular_matrix (rcond); } - volatile double rcond_plus_one = rcond + 1.0; + // Prevent use of extra precision. + double rcond_plus_one = rcond + 1.0; if (rcond_plus_one == 1.0 || octave::math::isnan (rcond)) { @@ -4405,7 +4413,8 @@ if (err != 0) err = -2; - volatile double rcond_plus_one = rcond + 1.0; + // Prevent use of extra precision. + double rcond_plus_one = rcond + 1.0; if (rcond_plus_one == 1.0 || octave::math::isnan (rcond)) { @@ -4538,7 +4547,8 @@ if (err != 0) err = -2; - volatile double rcond_plus_one = rcond + 1.0; + // Prevent use of extra precision. + double rcond_plus_one = rcond + 1.0; if (rcond_plus_one == 1.0 || octave::math::isnan (rcond)) { @@ -4674,7 +4684,8 @@ if (err != 0) err = -2; - volatile double rcond_plus_one = rcond + 1.0; + // Prevent use of extra precision. + double rcond_plus_one = rcond + 1.0; if (rcond_plus_one == 1.0 || octave::math::isnan (rcond)) { @@ -4840,7 +4851,8 @@ if (err != 0) err = -2; - volatile double rcond_plus_one = rcond + 1.0; + // Prevent use of extra precision. + double rcond_plus_one = rcond + 1.0; if (rcond_plus_one == 1.0 || octave::math::isnan (rcond)) { @@ -5015,7 +5027,8 @@ if (err != 0) err = -2; - volatile double rcond_plus_one = rcond + 1.0; + // Prevent use of extra precision. + double rcond_plus_one = rcond + 1.0; if (rcond_plus_one == 1.0 || octave::math::isnan (rcond)) { @@ -5145,7 +5158,8 @@ if (err != 0) err = -2; - volatile double rcond_plus_one = rcond + 1.0; + // Prevent use of extra precision. + double rcond_plus_one = rcond + 1.0; if (rcond_plus_one == 1.0 || octave::math::isnan (rcond)) {
--- a/liboctave/array/dMatrix.cc Sat Feb 17 11:51:15 2024 -0500 +++ b/liboctave/array/dMatrix.cc Sat Feb 17 15:59:36 2024 -0500 @@ -1274,8 +1274,8 @@ if (info != 0) info = -2; - // FIXME: Why calculate this, rather than just compare to 0.0? - volatile double rcond_plus_one = rcon + 1.0; + // Prevent use of extra precision. + double rcond_plus_one = rcon + 1.0; if (rcond_plus_one == 1.0 || octave::math::isnan (rcon)) { @@ -1372,7 +1372,8 @@ if (info != 0) info = -2; - volatile double rcond_plus_one = rcon + 1.0; + // Prevent use of extra precision. + double rcond_plus_one = rcon + 1.0; if (rcond_plus_one == 1.0 || octave::math::isnan (rcon)) { @@ -1460,7 +1461,8 @@ if (info != 0) info = -2; - volatile double rcond_plus_one = rcon + 1.0; + // Prevent use of extra precision. + double rcond_plus_one = rcon + 1.0; if (rcond_plus_one == 1.0 || octave::math::isnan (rcon)) { @@ -1549,7 +1551,8 @@ if (info != 0) info = -2; - volatile double rcond_plus_one = rcon + 1.0; + // Prevent use of extra precision. + double rcond_plus_one = rcon + 1.0; if (rcond_plus_one == 1.0 || octave::math::isnan (rcon)) {
--- a/liboctave/array/dSparse.cc Sat Feb 17 11:51:15 2024 -0500 +++ b/liboctave/array/dSparse.cc Sat Feb 17 15:59:36 2024 -0500 @@ -1657,7 +1657,8 @@ octave::warn_singular_matrix (rcond); } - volatile double rcond_plus_one = rcond + 1.0; + // Prevent use of extra precision. + double rcond_plus_one = rcond + 1.0; if (rcond_plus_one == 1.0 || octave::math::isnan (rcond)) { @@ -1939,7 +1940,8 @@ octave::warn_singular_matrix (rcond); } - volatile double rcond_plus_one = rcond + 1.0; + // Prevent use of extra precision. + double rcond_plus_one = rcond + 1.0; if (rcond_plus_one == 1.0 || octave::math::isnan (rcond)) { @@ -2170,7 +2172,8 @@ octave::warn_singular_matrix (rcond); } - volatile double rcond_plus_one = rcond + 1.0; + // Prevent use of extra precision. + double rcond_plus_one = rcond + 1.0; if (rcond_plus_one == 1.0 || octave::math::isnan (rcond)) { @@ -2454,7 +2457,8 @@ octave::warn_singular_matrix (rcond); } - volatile double rcond_plus_one = rcond + 1.0; + // Prevent use of extra precision. + double rcond_plus_one = rcond + 1.0; if (rcond_plus_one == 1.0 || octave::math::isnan (rcond)) { @@ -2707,7 +2711,8 @@ octave::warn_singular_matrix (rcond); } - volatile double rcond_plus_one = rcond + 1.0; + // Prevent use of extra precision. + double rcond_plus_one = rcond + 1.0; if (rcond_plus_one == 1.0 || octave::math::isnan (rcond)) { @@ -3007,7 +3012,8 @@ octave::warn_singular_matrix (rcond); } - volatile double rcond_plus_one = rcond + 1.0; + // Prevent use of extra precision. + double rcond_plus_one = rcond + 1.0; if (rcond_plus_one == 1.0 || octave::math::isnan (rcond)) { @@ -3261,7 +3267,8 @@ octave::warn_singular_matrix (rcond); } - volatile double rcond_plus_one = rcond + 1.0; + // Prevent use of extra precision. + double rcond_plus_one = rcond + 1.0; if (rcond_plus_one == 1.0 || octave::math::isnan (rcond)) { @@ -3563,7 +3570,8 @@ octave::warn_singular_matrix (rcond); } - volatile double rcond_plus_one = rcond + 1.0; + // Prevent use of extra precision. + double rcond_plus_one = rcond + 1.0; if (rcond_plus_one == 1.0 || octave::math::isnan (rcond)) { @@ -4355,7 +4363,8 @@ if (err != 0) err = -2; - volatile double rcond_plus_one = rcond + 1.0; + // Prevent use of extra precision. + double rcond_plus_one = rcond + 1.0; if (rcond_plus_one == 1.0 || octave::math::isnan (rcond)) { @@ -4487,7 +4496,8 @@ if (err != 0) err = -2; - volatile double rcond_plus_one = rcond + 1.0; + // Prevent use of extra precision. + double rcond_plus_one = rcond + 1.0; if (rcond_plus_one == 1.0 || octave::math::isnan (rcond)) { @@ -4623,7 +4633,8 @@ if (err != 0) err = -2; - volatile double rcond_plus_one = rcond + 1.0; + // Prevent use of extra precision. + double rcond_plus_one = rcond + 1.0; if (rcond_plus_one == 1.0 || octave::math::isnan (rcond)) { @@ -4789,7 +4800,8 @@ if (err != 0) err = -2; - volatile double rcond_plus_one = rcond + 1.0; + // Prevent use of extra precision. + double rcond_plus_one = rcond + 1.0; if (rcond_plus_one == 1.0 || octave::math::isnan (rcond)) { @@ -4965,7 +4977,8 @@ if (err != 0) err = -2; - volatile double rcond_plus_one = rcond + 1.0; + // Prevent use of extra precision. + double rcond_plus_one = rcond + 1.0; if (rcond_plus_one == 1.0 || octave::math::isnan (rcond)) { @@ -5129,7 +5142,8 @@ if (err != 0) err = -2; - volatile double rcond_plus_one = rcond + 1.0; + // Prevent use of extra precision. + double rcond_plus_one = rcond + 1.0; if (rcond_plus_one == 1.0 || octave::math::isnan (rcond)) { @@ -5290,7 +5304,8 @@ if (err != 0) err = -2; - volatile double rcond_plus_one = rcond + 1.0; + // Prevent use of extra precision. + double rcond_plus_one = rcond + 1.0; if (rcond_plus_one == 1.0 || octave::math::isnan (rcond)) { @@ -5483,7 +5498,8 @@ if (err != 0) err = -2; - volatile double rcond_plus_one = rcond + 1.0; + // Prevent use of extra precision. + double rcond_plus_one = rcond + 1.0; if (rcond_plus_one == 1.0 || octave::math::isnan (rcond)) { @@ -5657,7 +5673,9 @@ rcond = Info (UMFPACK_RCOND); else rcond = 1.; - volatile double rcond_plus_one = rcond + 1.0; + + // Prevent use of extra precision. + double rcond_plus_one = rcond + 1.0; if (status == UMFPACK_WARNING_singular_matrix || rcond_plus_one == 1.0 || octave::math::isnan (rcond)) @@ -5808,7 +5826,8 @@ } else { - volatile double rcond_plus_one = rcond + 1.0; + // Prevent use of extra precision. + double rcond_plus_one = rcond + 1.0; if (rcond_plus_one == 1.0 || octave::math::isnan (rcond)) { @@ -6029,7 +6048,8 @@ } else { - volatile double rcond_plus_one = rcond + 1.0; + // Prevent use of extra precision. + double rcond_plus_one = rcond + 1.0; if (rcond_plus_one == 1.0 || octave::math::isnan (rcond)) { @@ -6282,7 +6302,8 @@ } else { - volatile double rcond_plus_one = rcond + 1.0; + // Prevent use of extra precision. + double rcond_plus_one = rcond + 1.0; if (rcond_plus_one == 1.0 || octave::math::isnan (rcond)) { @@ -6524,7 +6545,8 @@ } else { - volatile double rcond_plus_one = rcond + 1.0; + // Prevent use of extra precision. + double rcond_plus_one = rcond + 1.0; if (rcond_plus_one == 1.0 || octave::math::isnan (rcond)) {
--- a/liboctave/array/fCMatrix.cc Sat Feb 17 11:51:15 2024 -0500 +++ b/liboctave/array/fCMatrix.cc Sat Feb 17 15:59:36 2024 -0500 @@ -1605,7 +1605,8 @@ if (info != 0) info = -2; - volatile float rcond_plus_one = rcon + 1.0; + // Prevent use of extra precision. + float rcond_plus_one = rcon + 1.0; if (rcond_plus_one == 1.0 || octave::math::isnan (rcon)) { @@ -1707,7 +1708,8 @@ if (info != 0) info = -2; - volatile float rcond_plus_one = rcon + 1.0; + // Prevent use of extra precision. + float rcond_plus_one = rcon + 1.0; if (rcond_plus_one == 1.0 || octave::math::isnan (rcon)) { @@ -1803,7 +1805,8 @@ if (info != 0) info = -2; - volatile float rcond_plus_one = rcon + 1.0; + // Prevent use of extra precision. + float rcond_plus_one = rcon + 1.0; if (rcond_plus_one == 1.0 || octave::math::isnan (rcon)) { @@ -1898,7 +1901,8 @@ if (info != 0) info = -2; - volatile float rcond_plus_one = rcon + 1.0; + // Prevent use of extra precision. + float rcond_plus_one = rcon + 1.0; if (rcond_plus_one == 1.0 || octave::math::isnan (rcon)) {
--- a/liboctave/array/fMatrix.cc Sat Feb 17 11:51:15 2024 -0500 +++ b/liboctave/array/fMatrix.cc Sat Feb 17 15:59:36 2024 -0500 @@ -1284,7 +1284,8 @@ if (info != 0) info = -2; - volatile float rcond_plus_one = rcon + 1.0; + // Prevent use of extra precision. + float rcond_plus_one = rcon + 1.0; if (rcond_plus_one == 1.0 || octave::math::isnan (rcon)) { @@ -1387,7 +1388,8 @@ if (info != 0) info = -2; - volatile float rcond_plus_one = rcon + 1.0; + // Prevent use of extra precision. + float rcond_plus_one = rcon + 1.0; if (rcond_plus_one == 1.0 || octave::math::isnan (rcon)) { @@ -1483,7 +1485,8 @@ if (info != 0) info = -2; - volatile float rcond_plus_one = rcon + 1.0; + // Prevent use of extra precision. + float rcond_plus_one = rcon + 1.0; if (rcond_plus_one == 1.0 || octave::math::isnan (rcon)) { @@ -1569,7 +1572,8 @@ if (info != 0) info = -2; - volatile float rcond_plus_one = rcon + 1.0; + // Prevent use of extra precision. + float rcond_plus_one = rcon + 1.0; if (rcond_plus_one == 1.0 || octave::math::isnan (rcon)) {
--- a/liboctave/numeric/eigs-base.cc Sat Feb 17 11:51:15 2024 -0500 +++ b/liboctave/numeric/eigs-base.cc Sat Feb 17 15:59:36 2024 -0500 @@ -509,7 +509,8 @@ } double rcond = (minU / maxU); - volatile double rcond_plus_one = rcond + 1.0; + // Prevent use of extra precision. + double rcond_plus_one = rcond + 1.0; if (rcond_plus_one == 1.0 || octave::math::isnan (rcond)) warn_convergence (); @@ -591,7 +592,8 @@ } double rcond = (minU / maxU); - volatile double rcond_plus_one = rcond + 1.0; + // Prevent use of extra precision. + double rcond_plus_one = rcond + 1.0; if (rcond_plus_one == 1.0 || octave::math::isnan (rcond)) warn_convergence (); @@ -691,7 +693,8 @@ } double rcond = (minU / maxU); - volatile double rcond_plus_one = rcond + 1.0; + // Prevent use of extra precision. + double rcond_plus_one = rcond + 1.0; if (rcond_plus_one == 1.0 || octave::math::isnan (rcond)) warn_convergence (); @@ -773,7 +776,8 @@ } double rcond = (minU / maxU); - volatile double rcond_plus_one = rcond + 1.0; + // Prevent use of extra precision. + double rcond_plus_one = rcond + 1.0; if (rcond_plus_one == 1.0 || octave::math::isnan (rcond)) warn_convergence ();
--- a/liboctave/numeric/lo-mappers.h Sat Feb 17 11:51:15 2024 -0500 +++ b/liboctave/numeric/lo-mappers.h Sat Feb 17 15:59:36 2024 -0500 @@ -310,7 +310,7 @@ T n = std::floor (q); // Prevent use of extra precision. - volatile T tmp = y * n; + T tmp = y * n; retval = x - tmp; } @@ -343,7 +343,7 @@ T n = std::trunc (q); // Prevent use of extra precision. - volatile T tmp = y * n; + T tmp = y * n; retval = x - tmp; }