diff liboctave/array/fCMatrix.cc @ 19586:385499581a5e

allow disabling of permutation and diagonal matrices * ov.cc (Vdisable_diagonal_matrix, Vdisable_permutation_matrix): New static variables. Use them in octave_value constructors to determine whether to create diagonal and permutation matrices. (Fdisable_diagonal_matrix, Fdisable_permutation_matrix): New functions. * octave.cc (maximum_braindamage): Disable permutation and diagonal matrices for --traditional option. * CMatrix.cc, CMatrix.h, dMatrix.cc, dMatrix.h, fCMatrix.cc, fCMatrix.h, fMatrix.cc, fMatrix.h: New conversion constructors. * basics.txi, diagperm.txi: Update docs for change.
author John W. Eaton <jwe@octave.org>
date Mon, 08 Dec 2014 10:14:00 -0500
parents 3746b92739f7
children a0c7001cf1a8
line wrap: on
line diff
--- a/liboctave/array/fCMatrix.cc
+++ b/liboctave/array/fCMatrix.cc
@@ -290,6 +290,20 @@
     elem (i, i) = a.elem (i, i);
 }
 
+FloatComplexMatrix::FloatComplexMatrix (const MDiagArray2<float>& a)
+  : FloatComplexNDArray (a.dims (), 0.0)
+{
+  for (octave_idx_type i = 0; i < a.length (); i++)
+    elem (i, i) = a.elem (i, i);
+}
+
+FloatComplexMatrix::FloatComplexMatrix (const DiagArray2<float>& a)
+  : FloatComplexNDArray (a.dims (), 0.0)
+{
+  for (octave_idx_type i = 0; i < a.length (); i++)
+    elem (i, i) = a.elem (i, i);
+}
+
 FloatComplexMatrix::FloatComplexMatrix (const FloatComplexRowVector& rv)
   : FloatComplexNDArray (rv)
 {
@@ -307,6 +321,20 @@
     elem (i, i) = a.elem (i, i);
 }
 
+FloatComplexMatrix::FloatComplexMatrix (const MDiagArray2<FloatComplex>& a)
+  : FloatComplexNDArray (a.dims (), 0.0)
+{
+  for (octave_idx_type i = 0; i < a.length (); i++)
+    elem (i, i) = a.elem (i, i);
+}
+
+FloatComplexMatrix::FloatComplexMatrix (const DiagArray2<FloatComplex>& a)
+  : FloatComplexNDArray (a.dims (), 0.0)
+{
+  for (octave_idx_type i = 0; i < a.length (); i++)
+    elem (i, i) = a.elem (i, i);
+}
+
 // FIXME: could we use a templated mixed-type copy function
 // here?