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.)