Mercurial > octave-nkf
diff src/DLD-FUNCTIONS/chol.cc @ 9715:9f27172fbd1e
auto-set MatrixType from certain functions
author | Jaroslav Hajek <highegg@gmail.com> |
---|---|
date | Mon, 12 Oct 2009 14:23:20 +0200 |
parents | 5fcf008c7c41 |
children | 09da0bd91412 |
line wrap: on
line diff
--- a/src/DLD-FUNCTIONS/chol.cc Mon Oct 12 11:50:12 2009 +0200 +++ b/src/DLD-FUNCTIONS/chol.cc Mon Oct 12 14:23:20 2009 +0200 @@ -45,6 +45,14 @@ #include "oct-obj.h" #include "utils.h" +template <class CHOLT> +static octave_value +get_chol_r (const CHOLT& fact) +{ + return octave_value (fact.chol_matrix (), + MatrixType (MatrixType::Upper)); +} + DEFUN_DLD (chol, args, nargout, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{r} =} chol (@var{a})\n\ @@ -247,7 +255,7 @@ if (LLt) retval(0) = fact.chol_matrix ().transpose (); else - retval(0) = fact.chol_matrix (); + retval(0) = get_chol_r (fact); } else error ("chol: matrix not positive definite"); @@ -267,7 +275,7 @@ if (LLt) retval(0) = fact.chol_matrix ().hermitian (); else - retval(0) = fact.chol_matrix (); + retval(0) = get_chol_r (fact); } else error ("chol: matrix not positive definite"); @@ -292,7 +300,7 @@ if (LLt) retval(0) = fact.chol_matrix ().transpose (); else - retval(0) = fact.chol_matrix (); + retval(0) = get_chol_r (fact); } else error ("chol: matrix not positive definite"); @@ -312,7 +320,7 @@ if (LLt) retval(0) = fact.chol_matrix ().hermitian (); else - retval(0) = fact.chol_matrix (); + retval(0) = get_chol_r (fact); } else error ("chol: matrix not positive definite"); @@ -648,7 +656,7 @@ else fact.update (u); - retval(0) = fact.chol_matrix (); + retval(0) = get_chol_r (fact); } else { @@ -664,7 +672,7 @@ else fact.update (u); - retval(0) = fact.chol_matrix (); + retval(0) = get_chol_r (fact); } } else @@ -683,7 +691,7 @@ else fact.update (u); - retval(0) = fact.chol_matrix (); + retval(0) = get_chol_r (fact); } else { @@ -699,7 +707,7 @@ else fact.update (u); - retval(0) = fact.chol_matrix (); + retval(0) = get_chol_r (fact); } } @@ -853,7 +861,7 @@ fact.set (R); err = fact.insert_sym (u, j-1); - retval(0) = fact.chol_matrix (); + retval(0) = get_chol_r (fact); } else { @@ -865,7 +873,7 @@ fact.set (R); err = fact.insert_sym (u, j-1); - retval(0) = fact.chol_matrix (); + retval(0) = get_chol_r (fact); } } else @@ -880,7 +888,7 @@ fact.set (R); err = fact.insert_sym (u, j-1); - retval(0) = fact.chol_matrix (); + retval(0) = get_chol_r (fact); } else { @@ -892,7 +900,7 @@ fact.set (R); err = fact.insert_sym (u, j-1); - retval(0) = fact.chol_matrix (); + retval(0) = get_chol_r (fact); } } @@ -1023,7 +1031,7 @@ fact.set (R); fact.delete_sym (j-1); - retval(0) = fact.chol_matrix (); + retval(0) = get_chol_r (fact); } else { @@ -1034,7 +1042,7 @@ fact.set (R); fact.delete_sym (j-1); - retval(0) = fact.chol_matrix (); + retval(0) = get_chol_r (fact); } } else @@ -1048,7 +1056,7 @@ fact.set (R); fact.delete_sym (j-1); - retval(0) = fact.chol_matrix (); + retval(0) = get_chol_r (fact); } else { @@ -1059,7 +1067,7 @@ fact.set (R); fact.delete_sym (j-1); - retval(0) = fact.chol_matrix (); + retval(0) = get_chol_r (fact); } } } @@ -1164,7 +1172,7 @@ fact.set (R); fact.shift_sym (i-1, j-1); - retval(0) = fact.chol_matrix (); + retval(0) = get_chol_r (fact); } else { @@ -1175,7 +1183,7 @@ fact.set (R); fact.shift_sym (i-1, j-1); - retval(0) = fact.chol_matrix (); + retval(0) = get_chol_r (fact); } } else @@ -1189,7 +1197,7 @@ fact.set (R); fact.shift_sym (i-1, j-1); - retval(0) = fact.chol_matrix (); + retval(0) = get_chol_r (fact); } else { @@ -1200,7 +1208,7 @@ fact.set (R); fact.shift_sym (i-1, j-1); - retval(0) = fact.chol_matrix (); + retval(0) = get_chol_r (fact); } } }