44 Complex*,
const octave_idx_type&, Complex*,
45 Complex*,
const octave_idx_type&,
49 F77_FUNC (zungqr, ZUNGQR) (
const octave_idx_type&,
const octave_idx_type&,
50 const octave_idx_type&, Complex*,
51 const octave_idx_type&, Complex*, Complex*,
52 const octave_idx_type&, octave_idx_type&);
57 F77_FUNC (zqr1up, ZQR1UP) (
const octave_idx_type&,
const octave_idx_type&,
58 const octave_idx_type&, Complex*,
59 const octave_idx_type&, Complex*,
60 const octave_idx_type&, Complex*,
61 Complex*, Complex*,
double*);
64 F77_FUNC (zqrinc, ZQRINC) (
const octave_idx_type&,
const octave_idx_type&,
65 const octave_idx_type&, Complex*,
66 const octave_idx_type&, Complex*,
67 const octave_idx_type&,
const octave_idx_type&,
68 const Complex*,
double*);
71 F77_FUNC (zqrdec, ZQRDEC) (
const octave_idx_type&,
const octave_idx_type&,
72 const octave_idx_type&, Complex*,
73 const octave_idx_type&, Complex*,
74 const octave_idx_type&,
const octave_idx_type&,
78 F77_FUNC (zqrinr, ZQRINR) (
const octave_idx_type&,
const octave_idx_type&,
79 Complex*,
const octave_idx_type&, Complex*,
80 const octave_idx_type&,
const octave_idx_type&,
81 const Complex*,
double*);
84 F77_FUNC (zqrder, ZQRDER) (
const octave_idx_type&,
const octave_idx_type&,
85 Complex*,
const octave_idx_type&, Complex*,
86 const octave_idx_type&,
const octave_idx_type&,
90 F77_FUNC (zqrshc, ZQRSHC) (
const octave_idx_type&,
const octave_idx_type&,
91 const octave_idx_type&, Complex*,
92 const octave_idx_type&, Complex*,
93 const octave_idx_type&,
const octave_idx_type&,
94 const octave_idx_type&, Complex*,
double*);
128 lwork =
std::max (lwork, static_cast<octave_idx_type> (1));
134 form (n, afact, tau, qr_type);
150 afact.
elem (i, j) *= tau[j];
182 afact.
xelem (i, j) = 0;
198 lwork =
std::max (lwork, static_cast<octave_idx_type> (1));
264 else if (j < 0 || j > n)
265 (*current_liboctave_error_handler) (
"qrinsert: index out of range");
298 dups = dups && js(i) == js(i+1);
301 (*current_liboctave_error_handler) (
"qrinsert: duplicate index detected");
304 else if (nj > 0 && (js(0) < 0 || js(nj-1) > n))
305 (*current_liboctave_error_handler) (
"qrinsert: index out of range");
339 if (j < 0 || j > n-1)
340 (*current_liboctave_error_handler) (
"qrdelete: index out of range");
371 dups = dups && js(i) == js(i+1);
374 (*current_liboctave_error_handler) (
"qrinsert: duplicate index detected");
375 else if (nj > 0 && (js(0) > n-1 || js(nj-1) < 0))
383 F77_XFCN (zqrdec, ZQRDEC, (m, n - ii, k == m ? k : k - ii,
410 else if (j < 0 || j > m)
411 (*current_liboctave_error_handler) (
"qrinsert: index out of range");
433 else if (j < 0 || j > m-1)
434 (*current_liboctave_error_handler) (
"qrdelete: index out of range");
455 if (i < 0 || i > n-1 || j < 0 || j > n-1)
456 (*current_liboctave_error_handler) (
"qrshift: index out of range");
464 i + 1, j + 1,
w, rw));
475 warn_qrupdate_once ();
492 warn_qrupdate_once ();
571 warn_qrupdate_once ();
578 else if (j < 0 || j > n)
579 (*current_liboctave_error_handler) (
"qrinsert: index out of range");
589 warn_qrupdate_once ();
599 dups = dups && js(i) == js(i+1);
602 (*current_liboctave_error_handler) (
"qrinsert: duplicate index detected");
605 else if (nj > 0 && (js(0) < 0 || js(nj-1) > n))
606 (*current_liboctave_error_handler) (
"qrinsert: index out of range");
619 warn_qrupdate_once ();
623 if (j < 0 || j > n-1)
624 (*current_liboctave_error_handler) (
"qrdelete: index out of range");
634 warn_qrupdate_once ();
643 dups = dups && js(i) == js(i+1);
646 (*current_liboctave_error_handler) (
"qrinsert: duplicate index detected");
647 else if (nj > 0 && (js(0) > n-1 || js(nj-1) < 0))
661 warn_qrupdate_once ();
668 else if (j < 0 || j > m)
669 (*current_liboctave_error_handler) (
"qrinsert: index out of range");
679 warn_qrupdate_once ();
685 else if (j < 0 || j > m-1)
686 (*current_liboctave_error_handler) (
"qrdelete: index out of range");
696 warn_qrupdate_once ();
700 if (i < 0 || i > n-1 || j < 0 || j > n-1)
701 (*current_liboctave_error_handler) (
"qrshift: index out of range");
static const idx_vector colon
void delete_elements(const idx_vector &i)
Deleting elements.
void shift_cols(octave_idx_type i, octave_idx_type j)
void update(const ComplexColumnVector &u, const ComplexColumnVector &v)
void delete_row(octave_idx_type j)
T & elem(octave_idx_type n)
qr_type_t get_type(void) const
#define F77_XFCN(f, F, args)
octave_idx_type rows(void) const
liboctave_error_handler current_liboctave_error_handler
ComplexMatrix hermitian(void) const
Array< T > sort(int dim=0, sortmode mode=ASCENDING) const
void form(octave_idx_type n, ComplexMatrix &afact, Complex *tau, qr_type_t qr_type)
F77_RET_T F77_FUNC(zgeqrf, ZGEQRF)(const octave_idx_type &
std::complex< double > w(std::complex< double > z, double relerr=0)
const T * data(void) const
bool is_square(void) const
void insert_row(const ComplexRowVector &u, octave_idx_type j)
void init(const ComplexMatrix &, qr_type_t=qr_type_std)
T & xelem(octave_idx_type n)
charNDArray max(char d, const charNDArray &m)
octave_idx_type length(void) const
Number of elements in the array.
void insert_col(const ComplexColumnVector &u, octave_idx_type j)
void resize(octave_idx_type nr, octave_idx_type nc, const Complex &rfv=Complex(0))
void delete_col(octave_idx_type j)
#define OCTAVE_LOCAL_BUFFER(T, buf, size)
void assign(const idx_vector &i, const Array< T > &rhs, const T &rfv)
Indexed assignment (always with resize & fill).
std::complex< double > Complex
const T * fortran_vec(void) const
octave_idx_type cols(void) const
ComplexColumnVector column(octave_idx_type i) const
octave_idx_type columns(void) const
Array< T > index(const idx_vector &i) const
Indexing without resizing.
F77_RET_T const double * x
charNDArray min(char d, const charNDArray &m)