comparison src/DLD-FUNCTIONS/chol.cc @ 3243:dd00769643ae

[project @ 1999-05-28 04:19:00 by jwe]
author jwe
date Fri, 28 May 1999 04:19:24 +0000
parents 38de16594cb4
children 7f8827f4040a
comparison
equal deleted inserted replaced
3242:8c5ad0b49742 3243:dd00769643ae
32 #include "gripes.h" 32 #include "gripes.h"
33 #include "oct-obj.h" 33 #include "oct-obj.h"
34 #include "utils.h" 34 #include "utils.h"
35 35
36 DEFUN_DLD (chol, args, nargout, 36 DEFUN_DLD (chol, args, nargout,
37 "R = chol (X): cholesky factorization") 37 "[R, p] = chol (X): cholesky factorization")
38 { 38 {
39 octave_value_list retval; 39 octave_value_list retval;
40 40
41 int nargin = args.length (); 41 int nargin = args.length ();
42 42
43 if (nargin != 1 || nargout > 1) 43 if (nargin != 1 || nargout > 2)
44 { 44 {
45 print_usage ("chol"); 45 print_usage ("chol");
46 return retval; 46 return retval;
47 } 47 }
48 48
67 int info; 67 int info;
68 CHOL fact (m, info); 68 CHOL fact (m, info);
69 if (info != 0) 69 if (info != 0)
70 error ("chol: matrix not positive definite"); 70 error ("chol: matrix not positive definite");
71 else 71 else
72 retval = fact.chol_matrix (); 72 {
73 retval(1) = static_cast<double> (info);
74 retval(0) = fact.chol_matrix ();
75 }
73 } 76 }
74 } 77 }
75 else if (arg.is_complex_type ()) 78 else if (arg.is_complex_type ())
76 { 79 {
77 ComplexMatrix m = arg.complex_matrix_value (); 80 ComplexMatrix m = arg.complex_matrix_value ();
81 int info; 84 int info;
82 ComplexCHOL fact (m, info); 85 ComplexCHOL fact (m, info);
83 if (info != 0) 86 if (info != 0)
84 error ("chol: matrix not positive definite"); 87 error ("chol: matrix not positive definite");
85 else 88 else
86 retval = fact.chol_matrix (); 89 {
90 retval(1) = static_cast<double> (info);
91 retval(0) = fact.chol_matrix ();
92 }
87 } 93 }
88 } 94 }
89 else 95 else
90 { 96 {
91 gripe_wrong_type_arg ("chol", arg); 97 gripe_wrong_type_arg ("chol", arg);