33 : count (1), nrows (0)
48 A.x =
const_cast<double *
>(a.
data ());
51 #if defined (CS_VER) && (CS_VER >= 2)
60 (*current_liboctave_error_handler)
61 (
"SparseQR: sparse matrix QR factorization filled");
64 (*current_liboctave_error_handler)
65 (
"SparseQR: sparse matrix QR factorization not implemented");
95 ret.
xcidx (j) =
N->L->p[j];
98 ret.
xridx (j) =
N->L->i[j];
99 ret.
xdata (j) =
N->L->x[j];
113 #
if defined (CS_VER) && (CS_VER >= 2)
114 ret.
xelem (i) =
S->pinv[i];
116 ret.
xelem (i) =
S->Pinv[i];
130 #
if defined (CS_VER) && (CS_VER >= 2)
131 ret.
xelem (
S->pinv[i]) = i;
133 ret.
xelem (
S->Pinv[i]) = i;
158 SparseMatrix ret ((econ ? (nc > nrows ? nrows : nc) : nrows), nc, nz);
161 ret.
xcidx (j) =
N->U->p[j];
164 ret.
xridx (j) =
N->U->i[j];
165 ret.
xdata (j) =
N->U->x[j];
184 if (nr < 0 || nc < 0 || nr != b_nr)
185 (*current_liboctave_error_handler) (
"matrix dimension mismatch");
186 else if (nr == 0 || nc == 0 || b_nc == 0)
187 ret =
Matrix (nc, b_nc, 0.0);
191 for (
volatile octave_idx_type j = 0, idx = 0; j < b_nc; j++, idx+=b_nr)
198 #if defined (CS_VER) && (CS_VER >= 2)
230 if (nr < 0 || nc < 0)
231 (*current_liboctave_error_handler) (
"matrix dimension mismatch");
232 else if (nr == 0 || nc == 0)
233 ret =
Matrix (nc, nr, 0.0);
248 #if defined (CS_VER) && (CS_VER >= 2)
285 if (nr < 0 || nc < 0 || nr != b_nr)
286 (*current_liboctave_error_handler)
287 (
"matrix dimension mismatch in solution of minimum norm problem");
288 else if (nr == 0 || nc == 0 || b_nc == 0)
289 x =
Matrix (nc, b_nc, 0.0);
299 i++, idx+=nc, bidx+=b_nr)
305 #if defined (CS_VER) && (CS_VER >= 2)
320 #if defined (CS_VER) && (CS_VER >= 2)
340 i++, idx+=nc, bidx+=b_nr)
346 #if defined (CS_VER) && (CS_VER >= 2)
361 #if defined (CS_VER) && (CS_VER >= 2)
389 if (nr < 0 || nc < 0 || nr != b_nr)
390 (*current_liboctave_error_handler)
391 (
"matrix dimension mismatch in solution of minimum norm problem");
392 else if (nr == 0 || nc == 0 || b_nc == 0)
409 Xx[j] = b.
xelem (j,i);
413 #if defined (CS_VER) && (CS_VER >= 2)
428 #if defined (CS_VER) && (CS_VER >= 2)
444 sz = (sz > 10 ? sz : 10) + x_nz;
473 Xx[j] = b.
xelem (j,i);
477 #if defined (CS_VER) && (CS_VER >= 2)
492 #if defined (CS_VER) && (CS_VER >= 2)
508 sz = (sz > 10 ? sz : 10) + x_nz;
539 if (nr < 0 || nc < 0 || nr != b_nr)
540 (*current_liboctave_error_handler)
541 (
"matrix dimension mismatch in solution of minimum norm problem");
542 else if (nr == 0 || nc == 0 || b_nc == 0)
566 #if defined (CS_VER) && (CS_VER >= 2)
581 #if defined (CS_VER) && (CS_VER >= 2)
588 #if defined (CS_VER) && (CS_VER >= 2)
603 #if defined (CS_VER) && (CS_VER >= 2)
610 vec[j+idx] =
Complex (Xx[j], Xz[j]);
638 #if defined (CS_VER) && (CS_VER >= 2)
653 #if defined (CS_VER) && (CS_VER >= 2)
662 #if defined (CS_VER) && (CS_VER >= 2)
677 #if defined (CS_VER) && (CS_VER >= 2)
684 vec[j+idx] =
Complex (Xx[j], Xz[j]);
708 if (nr < 0 || nc < 0 || nr != b_nr)
709 (*current_liboctave_error_handler)
710 (
"matrix dimension mismatch in solution of minimum norm problem");
711 else if (nr == 0 || nc == 0 || b_nc == 0)
737 #if defined (CS_VER) && (CS_VER >= 2)
752 #if defined (CS_VER) && (CS_VER >= 2)
761 #if defined (CS_VER) && (CS_VER >= 2)
776 #if defined (CS_VER) && (CS_VER >= 2)
792 sz = (sz > 10 ? sz : 10) + x_nz;
830 #if defined (CS_VER) && (CS_VER >= 2)
845 #if defined (CS_VER) && (CS_VER >= 2)
854 #if defined (CS_VER) && (CS_VER >= 2)
869 #if defined (CS_VER) && (CS_VER >= 2)
885 sz = (sz > 10 ? sz : 10) + x_nz;
octave_idx_type * xridx(void)
octave_idx_type cols(void) const
octave_idx_type rows(void) const
SparseMatrix R(const bool econ) const
void resize(octave_idx_type nr, octave_idx_type nc, double rfv=0)
T & xelem(octave_idx_type n)
ColumnVector Pinv(void) const
F77_RET_T const octave_idx_type Complex * A
octave_idx_type * xcidx(void)
SparseQR_rep(const SparseMatrix &a, int order)
SparseMatrix hermitian(void) const
octave_idx_type * cidx(void)
octave_idx_type rows(void) const
octave_idx_type nnz(void) const
#define CXSPARSE_DNAME(name)
void change_capacity(octave_idx_type nz)
friend Matrix qrsolve(const SparseMatrix &a, const Matrix &b, octave_idx_type &info)
Sparse< T > maybe_compress(bool remove_zeros=false)
Matrix transpose(void) const
Matrix C(const Matrix &b) const
octave_refcount< int > count
T & xelem(octave_idx_type n)
octave_idx_type * ridx(void)
F77_RET_T const octave_idx_type & N
#define END_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE
void resize(octave_idx_type nr, octave_idx_type nc, const Complex &rfv=Complex(0))
#define OCTAVE_LOCAL_BUFFER(T, buf, size)
SparseMatrix V(void) const
ColumnVector imag(const ComplexColumnVector &a)
#define BEGIN_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE
std::complex< double > Complex
const T * fortran_vec(void) const
ColumnVector real(const ComplexColumnVector &a)
octave_idx_type cols(void) const
ColumnVector P(void) const
F77_RET_T const double * x