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;
         }