diff src/ops.h @ 7922:935be827eaf8

error for NaN values in & and | expressions
author John W. Eaton <jwe@octave.org>
date Fri, 11 Jul 2008 14:56:30 -0400
parents a1dbe9d80eee
children 2b8952e133c9
line wrap: on
line diff
--- a/src/ops.h	Thu Jul 10 17:36:20 2008 -0400
+++ b/src/ops.h	Fri Jul 11 14:56:30 2008 -0400
@@ -293,6 +293,20 @@
       (v1.t1 ## _value () op v2.t2 ## _value ()); \
   }
 
+#define DEFSCALARBOOLOP_OP(name, t1, t2, op) \
+  BINOPDECL (name, a1, a2) \
+  { \
+    CAST_BINOP_ARGS (const octave_ ## t1&, const octave_ ## t2&); \
+    if (xisnan (v1.t1 ## _value ()) || xisnan (v2.t2 ## _value ())) \
+      { \
+        error ("invalid conversion from NaN to logical"); \
+        return octave_value (); \
+      } \
+    else \
+      return octave_value \
+        (v1.t1 ## _value () op v2.t2 ## _value ()); \
+  }
+
 #define DEFNDBINOP_OP(name, t1, t2, e1, e2, op) \
   BINOPDECL (name, a1, a2) \
   { \