Mercurial > hg > octave-jordi
diff src/ov-cx-mat.cc @ 4513:508238e65af7
[project @ 2003-09-19 21:40:57 by jwe]
author | jwe |
---|---|
date | Fri, 19 Sep 2003 21:41:21 +0000 (2003-09-19) |
parents | abbf63293766 |
children | d44675070f1a |
line wrap: on
line diff
--- a/src/ov-cx-mat.cc +++ b/src/ov-cx-mat.cc @@ -45,7 +45,7 @@ #include "ov-scalar.h" #include "pr-output.h" -template class octave_base_matrix<ComplexMatrix>; +template class octave_base_matrix<ComplexNDArray>; DEFINE_OCTAVE_ALLOCATOR (octave_complex_matrix); @@ -56,22 +56,27 @@ { octave_value *retval = 0; - int nr = matrix.rows (); - int nc = matrix.cols (); + if (matrix.ndims () == 2) + { + ComplexMatrix cm = matrix.matrix_value (); - if (nr == 1 && nc == 1) - { - Complex c = matrix (0, 0); + int nr = cm.rows (); + int nc = cm.cols (); + + if (nr == 1 && nc == 1) + { + Complex c = matrix (0, 0); - if (imag (c) == 0.0) - retval = new octave_scalar (std::real (c)); - else - retval = new octave_complex (c); + if (imag (c) == 0.0) + retval = new octave_scalar (std::real (c)); + else + retval = new octave_complex (c); + } + else if (nr == 0 || nc == 0) + retval = new octave_matrix (Matrix (nr, nc)); + else if (cm.all_elements_are_real ()) + retval = new octave_matrix (::real (cm)); } - else if (nr == 0 || nc == 0) - retval = new octave_matrix (Matrix (nr, nc)); - else if (matrix.all_elements_are_real ()) - retval = new octave_matrix (::real (matrix)); return retval; } @@ -80,7 +85,7 @@ octave_complex_matrix::assign (const octave_value_list& idx, const ComplexMatrix& rhs) { - octave_base_matrix<ComplexMatrix>::assign (idx, rhs); + octave_base_matrix<ComplexNDArray>::assign (idx, rhs); } void @@ -89,35 +94,10 @@ { int len = idx.length (); - switch (len) - { - case 2: - { - idx_vector i = idx (0).index_vector (); - idx_vector j = idx (1).index_vector (); - - matrix.set_index (i); - matrix.set_index (j); - - ::assign (matrix, rhs); - } - break; + for (int i = 0; i < len; i++) + matrix.set_index (idx(i).index_vector ()); - case 1: - { - idx_vector i = idx (0).index_vector (); - - matrix.set_index (i); - - ::assign (matrix, rhs); - } - break; - - default: - error ("invalid number of indices (%d) for indexed matrix assignment", - len); - break; - } + ::assign (matrix, rhs); } bool @@ -158,7 +138,7 @@ if (! force_conversion && Vwarn_imag_to_real) gripe_implicit_conversion ("complex matrix", "real matrix"); - retval = ::real (matrix); + retval = ::real (matrix.matrix_value ()); return retval; } @@ -188,7 +168,7 @@ ComplexMatrix octave_complex_matrix::complex_matrix_value (bool) const { - return matrix; + return matrix.matrix_value (); } /*