changeset 33045:486c3ce9e49b bytecode-interpreter

maint: merge default to bytecode-interpreter
author John W. Eaton <jwe@octave.org>
date Sat, 17 Feb 2024 22:36:19 -0500
parents 4c9dc46fae39 (current diff) 359f922209d4 (diff)
children 651bee56d638
files configure.ac libinterp/corefcn/toplev.cc
diffstat 12 files changed, 133 insertions(+), 112 deletions(-) [+]
line wrap: on
line diff
--- a/configure.ac	Sat Feb 17 12:42:40 2024 -0500
+++ b/configure.ac	Sat Feb 17 22:36:19 2024 -0500
@@ -944,28 +944,6 @@
 AC_SUBST(MKOCTFILE_F77)
 AC_SUBST(MKOCTFILE_RANLIB)
 
-### Enable float truncation to work around issues with x87 co-processors
-
-dnl When compiling math for x87, problems may arise in some code comparing
-dnl floating-point intermediate results.  The root cause is the extra precision
-dnl (~80 bits) of x87 co-processor registers versus the IEEE standard 64 bits.
-dnl Generally, storing the result in a local volatile variable forces a
-dnl truncation back to 64 bits, but it also degrades performance.
-dnl However, this performance degradation is very minimal, if indeed measurable.
-dnl Therefore, it has been enabled for all platforms and compilers.
-dnl Reported bugs indicate that --enable-float-truncate is required for MinGW
-dnl and Cygwin platforms and for GCC compilers >= 5.0.  It should not be
-dnl necessary for non-x87 targets or when using modern SSE math.
-ENABLE_FLOAT_TRUNCATE=yes
-AC_ARG_ENABLE([float-truncate],
-  [AS_HELP_STRING([--disable-float-truncate],
-    [truncate intermediate FP results])],
-  [if test "$enableval" = no; then ENABLE_FLOAT_TRUNCATE=no; fi], [])
-if test $ENABLE_FLOAT_TRUNCATE = yes; then
-  AC_DEFINE(OCTAVE_ENABLE_FLOAT_TRUNCATE, 1,
-    [Define to 1 to truncate intermediate FP results.])
-fi
-
 ### Enable internal checks
 
 ## The checks slow down the execution and are redundant,
--- a/libinterp/corefcn/toplev.cc	Sat Feb 17 12:42:40 2024 -0500
+++ b/libinterp/corefcn/toplev.cc	Sat Feb 17 22:36:19 2024 -0500
@@ -386,12 +386,6 @@
         { "ENABLE_DOCS", false },
 #endif
 
-#if defined (OCTAVE_ENABLE_FLOAT_TRUNCATE)
-        { "ENABLE_FLOAT_TRUNCATE", true },
-#else
-        { "ENABLE_FLOAT_TRUNCATE", false },
-#endif
-
 #if defined (OCTAVE_ENABLE_OPENMP)
         { "ENABLE_OPENMP", true },
 #else
--- a/liboctave/array/CMatrix.cc	Sat Feb 17 12:42:40 2024 -0500
+++ b/liboctave/array/CMatrix.cc	Sat Feb 17 22:36:19 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 12:42:40 2024 -0500
+++ b/liboctave/array/CSparse.cc	Sat Feb 17 22:36:19 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 12:42:40 2024 -0500
+++ b/liboctave/array/dMatrix.cc	Sat Feb 17 22:36:19 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 12:42:40 2024 -0500
+++ b/liboctave/array/dSparse.cc	Sat Feb 17 22:36:19 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 12:42:40 2024 -0500
+++ b/liboctave/array/fCMatrix.cc	Sat Feb 17 22:36:19 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 12:42:40 2024 -0500
+++ b/liboctave/array/fMatrix.cc	Sat Feb 17 22:36:19 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 12:42:40 2024 -0500
+++ b/liboctave/numeric/eigs-base.cc	Sat Feb 17 22:36:19 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 12:42:40 2024 -0500
+++ b/liboctave/numeric/lo-mappers.h	Sat Feb 17 22:36:19 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;
         }
--- a/liboctave/util/oct-cmplx.cc	Sat Feb 17 12:42:40 2024 -0500
+++ b/liboctave/util/oct-cmplx.cc	Sat Feb 17 22:36:19 2024 -0500
@@ -46,12 +46,12 @@
    template <typename T>                                                     \
    bool operator OP (const std::complex<T>& a, const std::complex<T>& b)     \
    {                                                                         \
-     OCTAVE_FLOAT_TRUNCATE const T ax = std::abs (a);                        \
-     OCTAVE_FLOAT_TRUNCATE const T bx = std::abs (b);                        \
+     const T ax = std::abs (a);                                              \
+     const T bx = std::abs (b);                                              \
      if (ax == bx)                                                           \
        {                                                                     \
-         OCTAVE_FLOAT_TRUNCATE const T ay = std::arg (a);                    \
-         OCTAVE_FLOAT_TRUNCATE const T by = std::arg (b);                    \
+         const T ay = std::arg (a);                                          \
+         const T by = std::arg (b);                                          \
          if (ay == static_cast<T> (-M_PI))                                   \
            {                                                                 \
              if (by != static_cast<T> (-M_PI))                               \
@@ -69,11 +69,11 @@
    template <typename T>                                                     \
    bool operator OP (const std::complex<T>& a, T b)                          \
    {                                                                         \
-     OCTAVE_FLOAT_TRUNCATE const T ax = std::abs (a);                        \
-     OCTAVE_FLOAT_TRUNCATE const T bx = std::abs (b);                        \
+     const T ax = std::abs (a);                                              \
+     const T bx = std::abs (b);                                              \
      if (ax == bx)                                                           \
        {                                                                     \
-         OCTAVE_FLOAT_TRUNCATE const T ay = std::arg (a);                    \
+         const T ay = std::arg (a);                                          \
          if (ay == static_cast<T> (-M_PI))                                   \
            return static_cast<T> (M_PI) OP 0;                                \
          return ay OP 0;                                                     \
@@ -84,11 +84,11 @@
    template <typename T>                                                     \
    bool operator OP (T a, const std::complex<T>& b)                          \
    {                                                                         \
-     OCTAVE_FLOAT_TRUNCATE const T ax = std::abs (a);                        \
-     OCTAVE_FLOAT_TRUNCATE const T bx = std::abs (b);                        \
+     const T ax = std::abs (a);                                              \
+     const T bx = std::abs (b);                                              \
      if (ax == bx)                                                           \
        {                                                                     \
-         OCTAVE_FLOAT_TRUNCATE const T by = std::arg (b);                    \
+         const T by = std::arg (b);                                          \
          if (by == static_cast<T> (-M_PI))                                   \
            return 0 OP static_cast<T> (M_PI);                                \
          return 0 OP by;                                                     \
@@ -116,12 +116,12 @@
      bool operator OP<float> (const std::complex<float>& a,                  \
                               const std::complex<float>& b)                  \
      {                                                                       \
-       OCTAVE_FLOAT_TRUNCATE const float ax = std::abs (a);                  \
-       OCTAVE_FLOAT_TRUNCATE const float bx = std::abs (b);                  \
+       const float ax = std::abs (a);                                        \
+       const float bx = std::abs (b);                                        \
        if (ax == bx)                                                         \
          {                                                                   \
-           OCTAVE_FLOAT_TRUNCATE const float ay = std::arg (a);              \
-           OCTAVE_FLOAT_TRUNCATE const float by = std::arg (b);              \
+           const float ay = std::arg (a);                                    \
+           const float by = std::arg (b);                                    \
            if (ay == -A_PI)                                                  \
              {                                                               \
                if (by != -A_PI)                                              \
@@ -139,11 +139,11 @@
      template <> OCTAVE_API                                                  \
      bool operator OP<float> (const std::complex<float>& a, float b)         \
      {                                                                       \
-       OCTAVE_FLOAT_TRUNCATE const float ax = std::abs (a);                  \
-       OCTAVE_FLOAT_TRUNCATE const float bx = std::abs (b);                  \
+       const float ax = std::abs (a);                                        \
+       const float bx = std::abs (b);                                        \
        if (ax == bx)                                                         \
          {                                                                   \
-           OCTAVE_FLOAT_TRUNCATE const float ay = std::arg (a);              \
+           const float ay = std::arg (a);                                    \
            if (ay == -A_PI)                                                  \
              return static_cast<float> (M_PI) OP 0;                          \
            return ay OP 0;                                                   \
@@ -154,11 +154,11 @@
      template <> OCTAVE_API                                                  \
      bool operator OP<float> (float a, const std::complex<float>& b)         \
      {                                                                       \
-       OCTAVE_FLOAT_TRUNCATE const float ax = std::abs (a);                  \
-       OCTAVE_FLOAT_TRUNCATE const float bx = std::abs (b);                  \
+       const float ax = std::abs (a);                                        \
+       const float bx = std::abs (b);                                        \
        if (ax == bx)                                                         \
          {                                                                   \
-           OCTAVE_FLOAT_TRUNCATE const float by = std::arg (b);              \
+           const float by = std::arg (b);                                    \
            if (by == -A_PI)                                                  \
              return 0 OP static_cast<float> (M_PI);                          \
            return 0 OP by;                                                   \
--- a/oct-conf-post-public.in.h	Sat Feb 17 12:42:40 2024 -0500
+++ b/oct-conf-post-public.in.h	Sat Feb 17 22:36:19 2024 -0500
@@ -419,9 +419,3 @@
 #if defined (OCTAVE_ENABLE_OPENMP)
 #  define HAVE_OPENMP 1
 #endif
-
-#if defined (OCTAVE_ENABLE_FLOAT_TRUNCATE)
-#  define OCTAVE_FLOAT_TRUNCATE volatile
-#else
-#  define OCTAVE_FLOAT_TRUNCATE
-#endif