changeset 10816:7fa044155982

fix diag() with complex scalars
author Jaroslav Hajek <highegg@gmail.com>
date Fri, 23 Jul 2010 08:36:31 +0200
parents 0eb323b71957
children d9147775da54
files src/ChangeLog src/ov-base-scalar.cc src/ov-base-scalar.h
diffstat 3 files changed, 13 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/ChangeLog	Fri Jul 23 08:20:39 2010 +0200
+++ b/src/ChangeLog	Fri Jul 23 08:36:31 2010 +0200
@@ -1,3 +1,8 @@
+2010-07-23  Jaroslav Hajek  <highegg@gmail.com>
+
+	* ov-base-scalar.cc (octave_base_scalar::diag): Implement here. Fix.
+	* ov-base-scalar.h: Only declare here.
+
 2010-07-23  Jaroslav Hajek  <highegg@gmail.com>
 
 	* ov-re-diag.cc (octave_diag_matrix::try_narrowing_conversion): Remove
--- a/src/ov-base-scalar.cc	Fri Jul 23 08:20:39 2010 +0200
+++ b/src/ov-base-scalar.cc	Fri Jul 23 08:36:31 2010 +0200
@@ -115,6 +115,13 @@
 }
 
 template <class ST>
+octave_value
+octave_base_scalar<ST>::diag (octave_idx_type k) const
+{
+  return Array<ST> (1, 1, scalar).diag (k);
+}
+
+template <class ST>
 bool
 octave_base_scalar<ST>::is_true (void) const
 {
--- a/src/ov-base-scalar.h	Fri Jul 23 08:20:39 2010 +0200
+++ b/src/ov-base-scalar.h	Fri Jul 23 08:36:31 2010 +0200
@@ -94,8 +94,7 @@
 
   octave_value any (int = 0) const { return (scalar != ST ()); }
 
-  octave_value diag (octave_idx_type k = 0) const 
-    { return octave_value (matrix_value (). diag (k)); }
+  octave_value diag (octave_idx_type k = 0) const;
 
   octave_value sort (octave_idx_type, sortmode) const
     { return octave_value (scalar); }