Mercurial > hg > octave-nkf
diff liboctave/fDiagMatrix.cc @ 10363:a0728e81ed25
improve diag matrix interface & implementation
author | Jaroslav Hajek <highegg@gmail.com> |
---|---|
date | Fri, 26 Feb 2010 11:44:38 +0100 |
parents | 07ebe522dac2 |
children | fd0a3ac60b0e |
line wrap: on
line diff
--- a/liboctave/fDiagMatrix.cc +++ b/liboctave/fDiagMatrix.cc @@ -142,32 +142,19 @@ FloatDiagMatrix FloatDiagMatrix::abs (void) const { - FloatDiagMatrix retval (rows (), cols ()); - for (octave_idx_type i = 0; i < rows (); i++) - retval(i, i) = std::abs (elem (i, i)); - return retval; + return FloatDiagMatrix (diag ().abs (), rows (), columns ()); } FloatDiagMatrix real (const FloatComplexDiagMatrix& a) { - FloatDiagMatrix retval; - octave_idx_type a_len = a.length (); - if (a_len > 0) - retval = FloatDiagMatrix (mx_inline_real_dup (a.data (), a_len), a.rows (), - a.cols ()); - return retval; + return FloatDiagMatrix (real (a.diag ()), a.rows (), a.columns ()); } FloatDiagMatrix imag (const FloatComplexDiagMatrix& a) { - FloatDiagMatrix retval; - octave_idx_type a_len = a.length (); - if (a_len > 0) - retval = FloatDiagMatrix (mx_inline_imag_dup (a.data (), a_len), a.rows (), - a.cols ()); - return retval; + return FloatDiagMatrix (imag (a.diag ()), a.rows (), a.columns ()); } FloatMatrix