Mercurial > hg > octave-lyh
diff liboctave/SparseCmplxQR.cc @ 5792:eb90c83b4f91
[project @ 2006-05-04 20:14:49 by dbateman]
author | dbateman |
---|---|
date | Thu, 04 May 2006 20:14:50 +0000 |
parents | ace8d8d26933 |
children | 11fcab4c461d |
line wrap: on
line diff
--- a/liboctave/SparseCmplxQR.cc +++ b/liboctave/SparseCmplxQR.cc @@ -53,7 +53,11 @@ (a.data ())); A.nz = -1; BEGIN_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE; - S = CXSPARSE_ZNAME (_sqr) (&A, order, 1); +#if defined(CS_VER) && (CS_VER >= 2) + S = CXSPARSE_ZNAME (_sqr) (order, &A, 1); +#else + S = CXSPARSE_ZNAME (_sqr) (&A, order - 1, 1); +#endif N = CXSPARSE_ZNAME (_qr) (&A, S); END_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE; if (!N) @@ -110,7 +114,11 @@ #ifdef HAVE_CXSPARSE ColumnVector ret(N->L->m); for (octave_idx_type i = 0; i < N->L->m; i++) +#if defined(CS_VER) && (CS_VER >= 2) + ret.xelem(i) = S->pinv[i]; +#else ret.xelem(i) = S->Pinv[i]; +#endif return ret; #else return ColumnVector (); @@ -123,7 +131,11 @@ #ifdef HAVE_CXSPARSE ColumnVector ret(N->L->m); for (octave_idx_type i = 0; i < N->L->m; i++) +#if defined(CS_VER) && (CS_VER >= 2) + ret.xelem(S->pinv[i]) = i; +#else ret.xelem(S->Pinv[i]) = i; +#endif return ret; #else return ColumnVector (); @@ -182,8 +194,13 @@ OCTAVE_QUIT; volatile octave_idx_type nm = (nr < nc ? nr : nc); BEGIN_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE; - CXSPARSE_ZNAME (_ipvec) (b_nr, S->Pinv, bvec + idx, - reinterpret_cast<double _Complex *>(buf)); +#if defined(CS_VER) && (CS_VER >= 2) + CXSPARSE_ZNAME (_ipvec) + (S->pinv, bvec + idx, reinterpret_cast<double _Complex *>(buf), b_nr); +#else + CXSPARSE_ZNAME (_ipvec) + (b_nr, S->Pinv, bvec + idx, reinterpret_cast<double _Complex *>(buf)); +#endif END_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE; for (volatile octave_idx_type i = 0; i < nm; i++) { @@ -238,8 +255,13 @@ for (octave_idx_type j = nr; j < q.S()->m2; j++) buf[j] = OCTAVE_C99_ZERO; BEGIN_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE; +#if defined(CS_VER) && (CS_VER >= 2) + CXSPARSE_ZNAME (_ipvec) + (q.S()->pinv, reinterpret_cast<double _Complex *>(Xx), buf, nr); +#else CXSPARSE_ZNAME (_ipvec) (nr, q.S()->Pinv, reinterpret_cast<double _Complex *>(Xx), buf); +#endif END_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE; for (volatile octave_idx_type j = 0; j < nc; j++) { @@ -250,7 +272,11 @@ } BEGIN_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE; CXSPARSE_ZNAME (_usolve) (q.N()->U, buf); +#if defined(CS_VER) && (CS_VER >= 2) + CXSPARSE_ZNAME (_ipvec) (q.S()->q, buf, vec + idx, nc); +#else CXSPARSE_ZNAME (_ipvec) (nc, q.S()->Q, buf, vec + idx); +#endif END_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE; } } @@ -280,8 +306,13 @@ for (octave_idx_type j = nr; j < nbuf; j++) buf[j] = OCTAVE_C99_ZERO; BEGIN_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE; +#if defined(CS_VER) && (CS_VER >= 2) + CXSPARSE_ZNAME (_pvec) + (q.S()->q, reinterpret_cast<double _Complex *>(Xx), buf, nr); +#else CXSPARSE_ZNAME (_pvec) (nr, q.S()->Q, reinterpret_cast<double _Complex *>(Xx), buf); +#endif CXSPARSE_ZNAME (_utsolve) (q.N()->U, buf); END_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE; for (volatile octave_idx_type j = nr-1; j >= 0; j--) @@ -294,7 +325,11 @@ END_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE; } BEGIN_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE; +#if defined(CS_VER) && (CS_VER >= 2) + CXSPARSE_ZNAME (_pvec) (q.S()->pinv, buf, vec + idx, nc); +#else CXSPARSE_ZNAME (_pvec) (nc, q.S()->Pinv, buf, vec + idx); +#endif END_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE; } } @@ -342,8 +377,13 @@ for (octave_idx_type j = nr; j < q.S()->m2; j++) buf[j] = OCTAVE_C99_ZERO; BEGIN_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE; +#if defined(CS_VER) && (CS_VER >= 2) + CXSPARSE_ZNAME (_ipvec) + (q.S()->pinv, reinterpret_cast<double _Complex *>(Xx), buf, nr); +#else CXSPARSE_ZNAME (_ipvec) (nr, q.S()->Pinv, reinterpret_cast<double _Complex *>(Xx), buf); +#endif END_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE; for (volatile octave_idx_type j = 0; j < nc; j++) { @@ -354,8 +394,13 @@ } BEGIN_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE; CXSPARSE_ZNAME (_usolve) (q.N()->U, buf); - CXSPARSE_ZNAME (_ipvec) (nc, q.S()->Q, buf, - reinterpret_cast<double _Complex *>(Xx)); +#if defined(CS_VER) && (CS_VER >= 2) + CXSPARSE_ZNAME (_ipvec) + (q.S()->q, buf, reinterpret_cast<double _Complex *>(Xx), nc); +#else + CXSPARSE_ZNAME (_ipvec) + (nc, q.S()->Q, buf, reinterpret_cast<double _Complex *>(Xx)); +#endif END_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE; for (octave_idx_type j = 0; j < nc; j++) @@ -405,8 +450,13 @@ for (octave_idx_type j = nr; j < nbuf; j++) buf[j] = OCTAVE_C99_ZERO; BEGIN_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE; +#if defined(CS_VER) && (CS_VER >= 2) + CXSPARSE_ZNAME (_pvec) + (q.S()->q, reinterpret_cast<double _Complex *>(Xx), buf, nr); +#else CXSPARSE_ZNAME (_pvec) (nr, q.S()->Q, reinterpret_cast<double _Complex *>(Xx), buf); +#endif CXSPARSE_ZNAME (_utsolve) (q.N()->U, buf); END_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE; for (volatile octave_idx_type j = nr-1; j >= 0; j--) @@ -418,8 +468,13 @@ END_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE; } BEGIN_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE; - CXSPARSE_ZNAME (_pvec) (nc, q.S()->Pinv, buf, - reinterpret_cast<double _Complex *>(Xx)); +#if defined(CS_VER) && (CS_VER >= 2) + CXSPARSE_ZNAME (_pvec) + (q.S()->pinv, buf, reinterpret_cast<double _Complex *>(Xx), nc); +#else + CXSPARSE_ZNAME (_pvec) + (nc, q.S()->Pinv, buf, reinterpret_cast<double _Complex *>(Xx)); +#endif END_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE; for (octave_idx_type j = 0; j < nc; j++) @@ -485,7 +540,11 @@ for (octave_idx_type j = nr; j < q.S()->m2; j++) buf[j] = OCTAVE_C99_ZERO; BEGIN_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE; +#if defined(CS_VER) && (CS_VER >= 2) + CXSPARSE_ZNAME (_ipvec) (q.S()->pinv, bvec + bidx, buf, nr); +#else CXSPARSE_ZNAME (_ipvec) (nr, q.S()->Pinv, bvec + bidx, buf); +#endif END_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE; for (volatile octave_idx_type j = 0; j < nc; j++) { @@ -496,7 +555,11 @@ } BEGIN_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE; CXSPARSE_ZNAME (_usolve) (q.N()->U, buf); +#if defined(CS_VER) && (CS_VER >= 2) + CXSPARSE_ZNAME (_ipvec) (q.S()->q, buf, vec + idx, nc); +#else CXSPARSE_ZNAME (_ipvec) (nc, q.S()->Q, buf, vec + idx); +#endif END_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE; } } @@ -524,7 +587,11 @@ for (octave_idx_type j = nr; j < nbuf; j++) buf[j] = OCTAVE_C99_ZERO; BEGIN_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE; +#if defined(CS_VER) && (CS_VER >= 2) + CXSPARSE_ZNAME (_pvec) (q.S()->q, bvec + bidx, buf, nr); +#else CXSPARSE_ZNAME (_pvec) (nr, q.S()->Q, bvec + bidx, buf); +#endif CXSPARSE_ZNAME (_utsolve) (q.N()->U, buf); END_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE; for (volatile octave_idx_type j = nr-1; j >= 0; j--) @@ -536,7 +603,11 @@ END_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE; } BEGIN_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE; +#if defined(CS_VER) && (CS_VER >= 2) + CXSPARSE_ZNAME (_pvec) (q.S()->pinv, buf, vec + idx, nc); +#else CXSPARSE_ZNAME (_pvec) (nc, q.S()->Pinv, buf, vec + idx); +#endif END_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE; } } @@ -584,8 +655,13 @@ for (octave_idx_type j = nr; j < q.S()->m2; j++) buf[j] = OCTAVE_C99_ZERO; BEGIN_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE; +#if defined(CS_VER) && (CS_VER >= 2) + CXSPARSE_ZNAME (_ipvec) + (q.S()->pinv, reinterpret_cast<double _Complex *>(Xx), buf, nr); +#else CXSPARSE_ZNAME (_ipvec) (nr, q.S()->Pinv, reinterpret_cast<double _Complex *>(Xx), buf); +#endif END_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE; for (volatile octave_idx_type j = 0; j < nc; j++) { @@ -596,8 +672,13 @@ } BEGIN_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE; CXSPARSE_ZNAME (_usolve) (q.N()->U, buf); - CXSPARSE_ZNAME (_ipvec) (nc, q.S()->Q, buf, - reinterpret_cast<double _Complex *>(Xx)); +#if defined(CS_VER) && (CS_VER >= 2) + CXSPARSE_ZNAME (_ipvec) + (q.S()->q, buf, reinterpret_cast<double _Complex *>(Xx), nc); +#else + CXSPARSE_ZNAME (_ipvec) + (nc, q.S()->Q, buf, reinterpret_cast<double _Complex *>(Xx)); +#endif END_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE; for (octave_idx_type j = 0; j < nc; j++) @@ -647,8 +728,13 @@ for (octave_idx_type j = nr; j < nbuf; j++) buf[j] = OCTAVE_C99_ZERO; BEGIN_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE; +#if defined(CS_VER) && (CS_VER >= 2) + CXSPARSE_ZNAME (_pvec) + (q.S()->q, reinterpret_cast<double _Complex *>(Xx), buf, nr); +#else CXSPARSE_ZNAME (_pvec) (nr, q.S()->Q, reinterpret_cast<double _Complex *>(Xx), buf); +#endif CXSPARSE_ZNAME (_utsolve) (q.N()->U, buf); END_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE; for (volatile octave_idx_type j = nr-1; j >= 0; j--) @@ -660,8 +746,13 @@ END_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE; } BEGIN_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE; - CXSPARSE_ZNAME (_pvec) (nc, q.S()->Pinv, buf, - reinterpret_cast<double _Complex *>(Xx)); +#if defined(CS_VER) && (CS_VER >= 2) + CXSPARSE_ZNAME (_pvec) + (q.S()->pinv, buf, reinterpret_cast<double _Complex *>(Xx), nc); +#else + CXSPARSE_ZNAME (_pvec) + (nc, q.S()->Pinv, buf, reinterpret_cast<double _Complex *>(Xx)); +#endif END_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE; for (octave_idx_type j = 0; j < nc; j++)