Mercurial > hg > octave-lyh
comparison liboctave/CSparse.cc @ 10142:829e69ec3110
make OCTAVE_QUIT a function
author | Jaroslav Hajek <highegg@gmail.com> |
---|---|
date | Wed, 20 Jan 2010 10:38:00 +0100 |
parents | 7483fe200fab |
children | 4c0cdbe0acca |
comparison
equal
deleted
inserted
replaced
10141:e409546ac0a8 | 10142:829e69ec3110 |
---|---|
822 octave_idx_type nz2 = nz; | 822 octave_idx_type nz2 = nz; |
823 retval = SparseComplexMatrix (nr, nc, nz2); | 823 retval = SparseComplexMatrix (nr, nc, nz2); |
824 | 824 |
825 for (octave_idx_type i = 0; i < nr; i++) | 825 for (octave_idx_type i = 0; i < nr; i++) |
826 { | 826 { |
827 OCTAVE_QUIT; | 827 octave_quit (); |
828 // place the 1 in the identity position | 828 // place the 1 in the identity position |
829 octave_idx_type cx_colstart = cx; | 829 octave_idx_type cx_colstart = cx; |
830 | 830 |
831 if (cx == nz2) | 831 if (cx == nz2) |
832 { | 832 { |
855 goto inverse_singular; | 855 goto inverse_singular; |
856 } | 856 } |
857 | 857 |
858 do | 858 do |
859 { | 859 { |
860 OCTAVE_QUIT; | 860 octave_quit (); |
861 rpX = retval.xridx(colXp); | 861 rpX = retval.xridx(colXp); |
862 rpU = ridx(colUp); | 862 rpU = ridx(colUp); |
863 | 863 |
864 if (rpX < rpU) | 864 if (rpX < rpU) |
865 colXp++; | 865 colXp++; |
946 perm[rperm[i]] = i; | 946 perm[rperm[i]] = i; |
947 } | 947 } |
948 | 948 |
949 for (octave_idx_type i = 0; i < nr; i++) | 949 for (octave_idx_type i = 0; i < nr; i++) |
950 { | 950 { |
951 OCTAVE_QUIT; | 951 octave_quit (); |
952 octave_idx_type iidx = rperm[i]; | 952 octave_idx_type iidx = rperm[i]; |
953 | 953 |
954 for (octave_idx_type j = 0; j < nr; j++) | 954 for (octave_idx_type j = 0; j < nr; j++) |
955 work[j] = 0.; | 955 work[j] = 0.; |
956 | 956 |
964 octave_idx_type jidx = perm[j]; | 964 octave_idx_type jidx = perm[j]; |
965 // iterate to calculate sum | 965 // iterate to calculate sum |
966 for (octave_idx_type k = cidx(jidx); | 966 for (octave_idx_type k = cidx(jidx); |
967 k < cidx(jidx+1); k++) | 967 k < cidx(jidx+1); k++) |
968 { | 968 { |
969 OCTAVE_QUIT; | 969 octave_quit (); |
970 v -= work[ridx(k)] * data(k); | 970 v -= work[ridx(k)] * data(k); |
971 } | 971 } |
972 | 972 |
973 // get A(m,m) | 973 // get A(m,m) |
974 Complex pivot; | 974 Complex pivot; |
7429 octave_idx_type nc = a.cols (); | 7429 octave_idx_type nc = a.cols (); |
7430 | 7430 |
7431 // add one to the printed indices to go from | 7431 // add one to the printed indices to go from |
7432 // zero-based to one-based arrays | 7432 // zero-based to one-based arrays |
7433 for (octave_idx_type j = 0; j < nc; j++) { | 7433 for (octave_idx_type j = 0; j < nc; j++) { |
7434 OCTAVE_QUIT; | 7434 octave_quit (); |
7435 for (octave_idx_type i = a.cidx(j); i < a.cidx(j+1); i++) { | 7435 for (octave_idx_type i = a.cidx(j); i < a.cidx(j+1); i++) { |
7436 os << a.ridx(i) + 1 << " " << j + 1 << " "; | 7436 os << a.ridx(i) + 1 << " " << j + 1 << " "; |
7437 octave_write_complex (os, a.data(i)); | 7437 octave_write_complex (os, a.data(i)); |
7438 os << "\n"; | 7438 os << "\n"; |
7439 } | 7439 } |
7709 octave_idx_type jb_max = b.cidx(i+1); | 7709 octave_idx_type jb_max = b.cidx(i+1); |
7710 bool jb_lt_max = jb < jb_max; | 7710 bool jb_lt_max = jb < jb_max; |
7711 | 7711 |
7712 while (ja_lt_max || jb_lt_max ) | 7712 while (ja_lt_max || jb_lt_max ) |
7713 { | 7713 { |
7714 OCTAVE_QUIT; | 7714 octave_quit (); |
7715 if ((! jb_lt_max) || | 7715 if ((! jb_lt_max) || |
7716 (ja_lt_max && (a.ridx(ja) < b.ridx(jb)))) | 7716 (ja_lt_max && (a.ridx(ja) < b.ridx(jb)))) |
7717 { | 7717 { |
7718 Complex tmp = xmin (a.data(ja), 0.); | 7718 Complex tmp = xmin (a.data(ja), 0.); |
7719 if (tmp != 0.) | 7719 if (tmp != 0.) |
7833 octave_idx_type jb_max = b.cidx(i+1); | 7833 octave_idx_type jb_max = b.cidx(i+1); |
7834 bool jb_lt_max = jb < jb_max; | 7834 bool jb_lt_max = jb < jb_max; |
7835 | 7835 |
7836 while (ja_lt_max || jb_lt_max ) | 7836 while (ja_lt_max || jb_lt_max ) |
7837 { | 7837 { |
7838 OCTAVE_QUIT; | 7838 octave_quit (); |
7839 if ((! jb_lt_max) || | 7839 if ((! jb_lt_max) || |
7840 (ja_lt_max && (a.ridx(ja) < b.ridx(jb)))) | 7840 (ja_lt_max && (a.ridx(ja) < b.ridx(jb)))) |
7841 { | 7841 { |
7842 Complex tmp = xmax (a.data(ja), 0.); | 7842 Complex tmp = xmax (a.data(ja), 0.); |
7843 if (tmp != 0.) | 7843 if (tmp != 0.) |