changeset 11397:57868a21170e

lo-mappers.h (xrem, xmod): prevent use of extra precision
author John W. Eaton <jwe@octave.org>
date Mon, 20 Dec 2010 02:19:04 -0500
parents 7b563cf94d8d
children f1a4db353da5
files liboctave/ChangeLog liboctave/lo-mappers.h
diffstat 2 files changed, 13 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/liboctave/ChangeLog	Sun Dec 19 20:27:17 2010 -0800
+++ b/liboctave/ChangeLog	Mon Dec 20 02:19:04 2010 -0500
@@ -1,3 +1,8 @@
+2010-12-20  John W. Eaton  <jwe@octave.org>
+
+	* lo-mappers.h (xrem, xmod): Declare temporary result from
+	multiplication volatile.
+
 2010-12-15  John W. Eaton  <jwe@octave.org>
 
 	Bug #31883.
--- a/liboctave/lo-mappers.h	Sun Dec 19 20:27:17 2010 -0800
+++ b/liboctave/lo-mappers.h	Mon Dec 20 02:19:04 2010 -0500
@@ -341,7 +341,10 @@
             }
         }
 
-      retval = x - y * n;
+      // Prevent use of extra precision.
+      volatile T tmp = y * n;
+
+      retval = x - tmp;
     }
 
   if (x != y && y != 0 && retval != 0)
@@ -386,7 +389,10 @@
             }
         }
 
-      retval = x - y * n;
+      // Prevent use of extra precision.
+      volatile T tmp = y * n;
+
+      retval = x - tmp;
     }
 
   if (x != y && y != 0 && retval != 0)