diff src/ov-complex.h @ 9853:8d9e4752441a

implement complex built-in logical conversions
author Jaroslav Hajek <highegg@gmail.com>
date Mon, 23 Nov 2009 10:48:31 +0100
parents f80c566bc751
children b3089dba88bf
line wrap: on
line diff
--- a/src/ov-complex.h	Mon Nov 23 10:00:29 2009 +0100
+++ b/src/ov-complex.h	Mon Nov 23 10:48:31 2009 +0100
@@ -34,6 +34,7 @@
 #include "oct-alloc.h"
 #include "str-vec.h"
 
+#include "gripes.h"
 #include "error.h"
 #include "ov-base.h"
 #include "ov-cx-mat.h"
@@ -135,6 +136,26 @@
 
   FloatComplexNDArray float_complex_array_value (bool = false) const;
 
+  bool bool_value (bool warn = false) const
+  {
+    if (xisnan (scalar))
+      error ("invalid conversion from NaN to logical");
+    else if (warn && scalar != 0.0 && scalar != 1.0)
+      gripe_logical_conversion ();
+
+    return scalar != 0.0;
+  }
+
+  boolNDArray bool_array_value (bool warn = false) const
+  {
+    if (xisnan (scalar))
+      error ("invalid conversion from NaN to logical");
+    else if (warn && scalar != 0.0 && scalar != 1.0)
+      gripe_logical_conversion ();
+
+    return boolNDArray (dim_vector (1, 1), scalar != 0.0);
+  }
+
   void increment (void) { scalar += 1.0; }
 
   void decrement (void) { scalar -= 1.0; }