44 float*,
const octave_idx_type&,
float*,
float*,
45 const octave_idx_type&, octave_idx_type&);
48 F77_FUNC (sorgqr, SORGQR) (
const octave_idx_type&,
const octave_idx_type&,
49 const octave_idx_type&,
float*,
50 const octave_idx_type&,
float*,
float*,
51 const octave_idx_type&, octave_idx_type&);
56 F77_FUNC (sqr1up, SQR1UP) (
const octave_idx_type&,
const octave_idx_type&,
57 const octave_idx_type&,
float*,
58 const octave_idx_type&,
float*,
59 const octave_idx_type&,
float*,
float*,
float*);
62 F77_FUNC (sqrinc, SQRINC) (
const octave_idx_type&,
const octave_idx_type&,
63 const octave_idx_type&,
float*,
64 const octave_idx_type&,
float*,
65 const octave_idx_type&,
66 const octave_idx_type&,
const float*,
float*);
69 F77_FUNC (sqrdec, SQRDEC) (
const octave_idx_type&,
const octave_idx_type&,
70 const octave_idx_type&,
float*,
71 const octave_idx_type&,
float*,
72 const octave_idx_type&,
73 const octave_idx_type&,
float*);
76 F77_FUNC (sqrinr, SQRINR) (
const octave_idx_type&,
const octave_idx_type&,
77 float*,
const octave_idx_type&,
78 float*,
const octave_idx_type&,
79 const octave_idx_type&,
const float*,
float*);
82 F77_FUNC (sqrder, SQRDER) (
const octave_idx_type&,
const octave_idx_type&,
83 float*,
const octave_idx_type&,
84 float*,
const octave_idx_type&,
85 const octave_idx_type&,
float*);
88 F77_FUNC (sqrshc, SQRSHC) (
const octave_idx_type&,
const octave_idx_type&,
89 const octave_idx_type&,
float*,
90 const octave_idx_type&,
float*,
91 const octave_idx_type&,
92 const octave_idx_type&,
const octave_idx_type&,
127 lwork =
std::max (lwork, static_cast<octave_idx_type> (1));
133 form (n, afact, tau, qr_type);
149 afact.
elem (i, j) *= tau[j];
181 afact.
xelem (i, j) = 0;
197 lwork =
std::max (lwork, static_cast<octave_idx_type> (1));
260 else if (j < 0 || j > n)
261 (*current_liboctave_error_handler) (
"qrinsert: index out of range");
294 dups = dups && js(i) == js(i+1);
297 (*current_liboctave_error_handler) (
"qrinsert: duplicate index detected");
300 else if (nj > 0 && (js(0) < 0 || js(nj-1) > n))
301 (*current_liboctave_error_handler) (
"qrinsert: index out of range");
335 if (j < 0 || j > n-1)
336 (*current_liboctave_error_handler) (
"qrdelete: index out of range");
367 dups = dups && js(i) == js(i+1);
370 (*current_liboctave_error_handler) (
"qrinsert: duplicate index detected");
371 else if (nj > 0 && (js(0) > n-1 || js(nj-1) < 0))
379 F77_XFCN (sqrdec, SQRDEC, (m, n - ii, k == m ? k : k - ii,
406 else if (j < 0 || j > m)
407 (*current_liboctave_error_handler) (
"qrinsert: index out of range");
429 else if (j < 0 || j > m-1)
430 (*current_liboctave_error_handler) (
"qrdelete: index out of range");
450 if (i < 0 || i > n-1 || j < 0 || j > n-1)
451 (*current_liboctave_error_handler) (
"qrshift: index out of range");
469 warn_qrupdate_once ();
485 warn_qrupdate_once ();
564 warn_qrupdate_once ();
571 else if (j < 0 || j > n)
572 (*current_liboctave_error_handler) (
"qrinsert: index out of range");
582 warn_qrupdate_once ();
592 dups = dups && js(i) == js(i+1);
595 (*current_liboctave_error_handler) (
"qrinsert: duplicate index detected");
598 else if (nj > 0 && (js(0) < 0 || js(nj-1) > n))
599 (*current_liboctave_error_handler) (
"qrinsert: index out of range");
612 warn_qrupdate_once ();
616 if (j < 0 || j > n-1)
617 (*current_liboctave_error_handler) (
"qrdelete: index out of range");
627 warn_qrupdate_once ();
636 dups = dups && js(i) == js(i+1);
639 (*current_liboctave_error_handler) (
"qrinsert: duplicate index detected");
640 else if (nj > 0 && (js(0) > n-1 || js(nj-1) < 0))
654 warn_qrupdate_once ();
661 else if (j < 0 || j > m)
662 (*current_liboctave_error_handler) (
"qrinsert: index out of range");
672 warn_qrupdate_once ();
678 else if (j < 0 || j > m-1)
679 (*current_liboctave_error_handler) (
"qrdelete: index out of range");
689 warn_qrupdate_once ();
693 if (i < 0 || i > n-1 || j < 0 || j > n-1)
694 (*current_liboctave_error_handler) (
"qrshift: index out of range");
void resize(octave_idx_type nr, octave_idx_type nc, float rfv=0)
static const idx_vector colon
void delete_elements(const idx_vector &i)
Deleting elements.
FloatMatrix transpose(void) const
static void transpose(octave_idx_type N, const octave_idx_type *ridx, const octave_idx_type *cidx, octave_idx_type *ridx2, octave_idx_type *cidx2)
void insert_row(const FloatRowVector &u, octave_idx_type j)
T & elem(octave_idx_type n)
qr_type_t get_type(void) const
#define F77_XFCN(f, F, args)
void shift_cols(octave_idx_type i, octave_idx_type j)
void form(octave_idx_type n, FloatMatrix &afact, float *tau, qr_type_t qr_type)
octave_idx_type rows(void) const
void delete_row(octave_idx_type j)
liboctave_error_handler current_liboctave_error_handler
Array< T > sort(int dim=0, sortmode mode=ASCENDING) const
void init(const FloatMatrix &, qr_type_t)
std::complex< double > w(std::complex< double > z, double relerr=0)
const T * data(void) const
F77_RET_T F77_FUNC(sgeqrf, SGEQRF)(const octave_idx_type &
bool is_square(void) const
FloatColumnVector column(octave_idx_type i) const
T & xelem(octave_idx_type n)
void delete_col(octave_idx_type j)
void insert_col(const FloatColumnVector &u, octave_idx_type j)
charNDArray max(char d, const charNDArray &m)
octave_idx_type length(void) const
Number of elements in the array.
void update(const FloatColumnVector &u, const FloatColumnVector &v)
#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).
const T * fortran_vec(void) const
octave_idx_type cols(void) 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)