45 FloatComplex*, FloatComplex*,
46 const octave_idx_type&, octave_idx_type&);
49 F77_FUNC (cungqr, CUNGQR) (
const octave_idx_type&,
const octave_idx_type&,
50 const octave_idx_type&, FloatComplex*,
51 const octave_idx_type&, FloatComplex*,
52 FloatComplex*,
const octave_idx_type&,
58 F77_FUNC (cqr1up, CQR1UP) (
const octave_idx_type&,
const octave_idx_type&,
59 const octave_idx_type&, FloatComplex*,
60 const octave_idx_type&, FloatComplex*,
61 const octave_idx_type&, FloatComplex*,
62 FloatComplex*, FloatComplex*,
float*);
65 F77_FUNC (cqrinc, CQRINC) (
const octave_idx_type&,
const octave_idx_type&,
66 const octave_idx_type&, FloatComplex*,
67 const octave_idx_type&, FloatComplex*,
68 const octave_idx_type&,
const octave_idx_type&,
69 const FloatComplex*,
float*);
72 F77_FUNC (cqrdec, CQRDEC) (
const octave_idx_type&,
const octave_idx_type&,
73 const octave_idx_type&, FloatComplex*,
74 const octave_idx_type&, FloatComplex*,
75 const octave_idx_type&,
const octave_idx_type&,
79 F77_FUNC (cqrinr, CQRINR) (
const octave_idx_type&,
const octave_idx_type&,
80 FloatComplex*,
const octave_idx_type&,
81 FloatComplex*,
const octave_idx_type&,
82 const octave_idx_type&,
const FloatComplex*,
86 F77_FUNC (cqrder, CQRDER) (
const octave_idx_type&,
const octave_idx_type&,
87 FloatComplex*,
const octave_idx_type&,
88 FloatComplex*,
const octave_idx_type&,
89 const octave_idx_type&, FloatComplex*,
float*);
92 F77_FUNC (cqrshc, CQRSHC) (
const octave_idx_type&,
const octave_idx_type&,
93 const octave_idx_type&, FloatComplex*,
94 const octave_idx_type&, FloatComplex*,
95 const octave_idx_type&,
const octave_idx_type&,
96 const octave_idx_type&, FloatComplex*,
131 lwork =
std::max (lwork, static_cast<octave_idx_type> (1));
137 form (n, afact, tau, qr_type);
153 afact.
elem (i, j) *= tau[j];
185 afact.
xelem (i, j) = 0;
201 lwork =
std::max (lwork, static_cast<octave_idx_type> (1));
270 else if (j < 0 || j > n)
271 (*current_liboctave_error_handler) (
"qrinsert: index out of range");
305 dups = dups && js(i) == js(i+1);
308 (*current_liboctave_error_handler) (
"qrinsert: duplicate index detected");
311 else if (nj > 0 && (js(0) < 0 || js(nj-1) > n))
312 (*current_liboctave_error_handler) (
"qrinsert: index out of range");
345 if (j < 0 || j > n-1)
346 (*current_liboctave_error_handler) (
"qrdelete: index out of range");
377 dups = dups && js(i) == js(i+1);
380 (*current_liboctave_error_handler) (
"qrinsert: duplicate index detected");
381 else if (nj > 0 && (js(0) > n-1 || js(nj-1) < 0))
389 F77_XFCN (cqrdec, CQRDEC, (m, n - ii, k == m ? k : k - ii,
416 else if (j < 0 || j > m)
417 (*current_liboctave_error_handler) (
"qrinsert: index out of range");
439 else if (j < 0 || j > m-1)
440 (*current_liboctave_error_handler) (
"qrdelete: index out of range");
461 if (i < 0 || i > n-1 || j < 0 || j > n-1)
462 (*current_liboctave_error_handler) (
"qrshift: index out of range");
470 i + 1, j + 1,
w, rw));
482 warn_qrupdate_once ();
500 warn_qrupdate_once ();
580 warn_qrupdate_once ();
587 else if (j < 0 || j > n)
588 (*current_liboctave_error_handler) (
"qrinsert: index out of range");
599 warn_qrupdate_once ();
609 dups = dups && js(i) == js(i+1);
612 (*current_liboctave_error_handler) (
"qrinsert: duplicate index detected");
615 else if (nj > 0 && (js(0) < 0 || js(nj-1) > n))
616 (*current_liboctave_error_handler) (
"qrinsert: index out of range");
629 warn_qrupdate_once ();
633 if (j < 0 || j > n-1)
634 (*current_liboctave_error_handler) (
"qrdelete: index out of range");
644 warn_qrupdate_once ();
653 dups = dups && js(i) == js(i+1);
656 (*current_liboctave_error_handler) (
"qrinsert: duplicate index detected");
657 else if (nj > 0 && (js(0) > n-1 || js(nj-1) < 0))
671 warn_qrupdate_once ();
678 else if (j < 0 || j > m)
679 (*current_liboctave_error_handler) (
"qrinsert: index out of range");
689 warn_qrupdate_once ();
695 else if (j < 0 || j > m-1)
696 (*current_liboctave_error_handler) (
"qrdelete: index out of range");
706 warn_qrupdate_once ();
710 if (i < 0 || i > n-1 || j < 0 || j > n-1)
711 (*current_liboctave_error_handler) (
"qrshift: index out of range");
void resize(octave_idx_type nr, octave_idx_type nc, const FloatComplex &rfv=FloatComplex(0))
FloatComplexMatrix hermitian(void) const
static const idx_vector colon
void delete_elements(const idx_vector &i)
Deleting elements.
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
FloatComplexColumnVector column(octave_idx_type i) const
ComplexMatrix hermitian(void) const
Array< T > sort(int dim=0, sortmode mode=ASCENDING) const
std::complex< double > w(std::complex< double > z, double relerr=0)
F77_RET_T F77_FUNC(cgeqrf, CGEQRF)(const octave_idx_type &
const T * data(void) const
void shift_cols(octave_idx_type i, octave_idx_type j)
bool is_square(void) const
void delete_col(octave_idx_type j)
void insert_col(const FloatComplexColumnVector &u, octave_idx_type j)
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 delete_row(octave_idx_type j)
void insert_row(const FloatComplexRowVector &u, 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< float > FloatComplex
void init(const FloatComplexMatrix &, qr_type_t=qr_type_std)
const T * fortran_vec(void) const
octave_idx_type cols(void) const
void form(octave_idx_type n, FloatComplexMatrix &afact, FloatComplex *tau, qr_type_t qr_type)
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)
void update(const FloatComplexColumnVector &u, const FloatComplexColumnVector &v)