50 const octave_idx_type&,
double*,
51 const octave_idx_type&, octave_idx_type&
56 const octave_idx_type&,
double*,
57 const octave_idx_type&,
const double&,
58 double&,
double*, octave_idx_type*,
64 F77_FUNC (dch1up, DCH1UP) (
const octave_idx_type&,
double*,
65 const octave_idx_type&,
double*,
double*);
68 F77_FUNC (dch1dn, DCH1DN) (
const octave_idx_type&,
double*,
69 const octave_idx_type&,
double*,
double*,
73 F77_FUNC (dchinx, DCHINX) (
const octave_idx_type&,
double*,
74 const octave_idx_type&,
const octave_idx_type&,
75 double*,
double*, octave_idx_type&);
78 F77_FUNC (dchdex, DCHDEX) (
const octave_idx_type&,
double*,
79 const octave_idx_type&,
const octave_idx_type&,
83 F77_FUNC (dchshx, DCHSHX) (
const octave_idx_type&,
double*,
84 const octave_idx_type&,
const octave_idx_type&,
85 const octave_idx_type&,
double*);
97 (*current_liboctave_error_handler) (
"CHOL requires square matrix");
117 anorm =
xnorm (a, 1);
136 n, anorm,
xrcond, pz, piz, dpocon_info
139 if (dpocon_info != 0)
252 else if (j < 0 || j > n)
253 (*current_liboctave_error_handler) (
"cholinsert: index out of range");
274 if (j < 0 || j > n-1)
275 (*current_liboctave_error_handler) (
"choldelete: index out of range");
292 if (i < 0 || i > n-1 || j < 0 || j > n-1)
293 (*current_liboctave_error_handler) (
"cholshift: index out of range");
308 warn_qrupdate_once ();
322 singular (
const Matrix& a)
325 if (a(i,i) == 0.0)
return true;
332 warn_qrupdate_once ();
358 warn_qrupdate_once ();
366 else if (j < 0 || j > n)
367 (*current_liboctave_error_handler) (
"cholinsert: index out of range");
384 a1(k, l) = a(k < j ? k : k-1, l < j ? l : l-1);
386 info =
init (a1,
false);
397 warn_qrupdate_once ();
401 if (j < 0 || j > n-1)
402 (*current_liboctave_error_handler) (
"choldelete: index out of range");
415 warn_qrupdate_once ();
419 if (i < 0 || i > n-1 || j < 0 || j > n-1)
420 (*current_liboctave_error_handler) (
"cholshift: index out of range");
F77_RET_T const octave_idx_type double const octave_idx_type octave_idx_type & F77_CHAR_ARG_LEN_DECL
void shift_sym(octave_idx_type i, octave_idx_type j)
#define F77_CHAR_ARG_LEN(l)
octave_idx_type downdate(const ColumnVector &u)
void resize(octave_idx_type nr, octave_idx_type nc, double rfv=0)
void delete_elements(const idx_vector &i)
Deleting elements.
void update(const ColumnVector &u)
Matrix chol2inv(const Matrix &r)
#define F77_XFCN(f, F, args)
octave_idx_type rows(void) const
void delete_sym(octave_idx_type j)
octave_idx_type insert_sym(const ColumnVector &u, octave_idx_type j)
#define F77_CONST_CHAR_ARG2(x, l)
liboctave_error_handler current_liboctave_error_handler
F77_RET_T F77_FUNC(dpotrf, DPOTRF)(F77_CONST_CHAR_ARG_DECL
octave_idx_type init(const Matrix &a, bool calc_cond)
std::complex< double > w(std::complex< double > z, double relerr=0)
Matrix inverse(void) const
Matrix transpose(void) const
bool is_square(void) const
OCTAVE_API double xnorm(const ColumnVector &x, double p)
T & xelem(octave_idx_type n)
octave_idx_type length(void) const
Number of elements in the array.
#define F77_CONST_CHAR_ARG_DECL
#define OCTAVE_LOCAL_BUFFER(T, buf, size)
const T * fortran_vec(void) const
octave_idx_type cols(void) const
void set(const Matrix &R)
Array< T > index(const idx_vector &i) const
Indexing without resizing.
static Matrix chol2inv_internal(const Matrix &r)