Mercurial > octave-nkf
diff src/DLD-FUNCTIONS/chol.cc @ 9862:c0aeedd8fb86
improve chol Matlab compatibility
author | Jaroslav Hajek <highegg@gmail.com> |
---|---|
date | Wed, 25 Nov 2009 07:31:59 +0100 |
parents | 09da0bd91412 |
children | 40dfc0c99116 |
line wrap: on
line diff
--- a/src/DLD-FUNCTIONS/chol.cc Tue Nov 24 11:57:01 2009 -0800 +++ b/src/DLD-FUNCTIONS/chol.cc Wed Nov 25 07:31:59 2009 +0100 @@ -53,6 +53,14 @@ MatrixType (MatrixType::Upper)); } +template <class CHOLT> +static octave_value +get_chol_l (const CHOLT& fact) +{ + return octave_value (fact.chol_matrix ().transpose (), + MatrixType (MatrixType::Lower)); +} + DEFUN_DLD (chol, args, nargout, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{r} =} chol (@var{a})\n\ @@ -243,9 +251,9 @@ FloatCHOL fact (m, info); if (nargout == 2 || info == 0) { - retval(1) = static_cast<float> (info); + retval(1) = info; if (LLt) - retval(0) = fact.chol_matrix ().transpose (); + retval(0) = get_chol_l (fact); else retval(0) = get_chol_r (fact); } @@ -263,9 +271,9 @@ FloatComplexCHOL fact (m, info); if (nargout == 2 || info == 0) { - retval(1) = static_cast<float> (info); + retval(1) = info; if (LLt) - retval(0) = fact.chol_matrix ().hermitian (); + retval(0) = get_chol_l (fact); else retval(0) = get_chol_r (fact); } @@ -288,9 +296,9 @@ CHOL fact (m, info); if (nargout == 2 || info == 0) { - retval(1) = static_cast<double> (info); + retval(1) = info; if (LLt) - retval(0) = fact.chol_matrix ().transpose (); + retval(0) = get_chol_l (fact); else retval(0) = get_chol_r (fact); } @@ -308,9 +316,9 @@ ComplexCHOL fact (m, info); if (nargout == 2 || info == 0) { - retval(1) = static_cast<double> (info); + retval(1) = info; if (LLt) - retval(0) = fact.chol_matrix ().hermitian (); + retval(0) = get_chol_l (fact); else retval(0) = get_chol_r (fact); }