From: andy a. <aa...@us...> - 2004-07-27 20:56:53
|
Update of /cvsroot/octave/octave-forge/main/sparse In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18946/main/sparse Modified Files: Makefile complex_sparse_ops.cc make_sparse.h sparse_ops.cc Log Message: first steps to concatenation working Index: sparse_ops.cc =================================================================== RCS file: /cvsroot/octave/octave-forge/main/sparse/sparse_ops.cc,v retrieving revision 1.19 retrieving revision 1.20 diff -u -d -r1.19 -r1.20 --- sparse_ops.cc 27 Jul 2004 18:24:10 -0000 1.19 +++ sparse_ops.cc 27 Jul 2004 20:56:44 -0000 1.20 @@ -49,6 +49,7 @@ // assemble a sparse matrix from elements // called by > 1 args for sparse // NOTE: index vectors are 1 based! +// m= rows, n=cols SuperMatrix assemble_sparse( int n, int m, ColumnVector& coefA, ColumnVector& ridxA, @@ -459,10 +460,22 @@ } #if HAVE_OCTAVE_CONCAT +octave_sparse concat (const octave_sparse& ra, + const octave_sparse& rb, + const Array<int>& ra_idx) +{ + octave_sparse retval (ra); + if (ra.numel() > 0) + retval.insert (rb, ra_idx(0), ra_idx(1)); + return retval; +} + octave_sparse& octave_sparse::insert( const octave_sparse& b, int r, int c) { - printf("doing sp_cat with r=%d c=%d", r, c); + DEBUGMSG("sparse - insert"); + fprintf(stderr,"doing sp_cat with r=%d c=%d\n", r, c); + error("can't do this"); return *this; } #endif @@ -480,7 +493,6 @@ os << "# rows: " << Xnr << "\n"; os << "# columns: " << Xnc << "\n"; - os << "\n# sparse: vert-idx, horz-idx, value\n"; // add one to the printed indices to go from // zero-based to one-based arrays for (int j=0; j< Xnc; j++) { @@ -497,8 +509,23 @@ bool octave_sparse::load_ascii (std::istream& is) { - int mord, prim, mdims; bool success = true; + int nnz, cols, rows; + if ( extract_keyword (is, "nnz", nnz) && + extract_keyword (is, "rows", rows) && + extract_keyword (is, "columns", cols) ) { + Matrix tmp( nnz, 3); + is >> tmp; + ColumnVector ridxA= tmp.column(0); + ColumnVector cidxA= tmp.column(1); + ColumnVector coefA= tmp.column(2); + X= assemble_sparse( cols, rows, coefA, ridxA, cidxA, 0); + } + else { + error("load: failed to load sparse value"); + success= false; + } + return success; } #endif @@ -1358,6 +1385,9 @@ /* * $Log$ + * Revision 1.20 2004/07/27 20:56:44 aadler + * first steps to concatenation working + * * Revision 1.19 2004/07/27 18:24:10 aadler * save_ascii * Index: complex_sparse_ops.cc =================================================================== RCS file: /cvsroot/octave/octave-forge/main/sparse/complex_sparse_ops.cc,v retrieving revision 1.25 retrieving revision 1.26 diff -u -d -r1.25 -r1.26 --- complex_sparse_ops.cc 27 Jul 2004 18:24:10 -0000 1.25 +++ complex_sparse_ops.cc 27 Jul 2004 20:56:44 -0000 1.26 @@ -538,8 +538,9 @@ for (int j=0; j< Xnc; j++) { OCTAVE_QUIT; for (int i= cidxX[j]; i< cidxX[j+1]; i++) { - os << ridxX[i]+1 << " " << j+1 << " " - << coefX[i] << "\n"; + doublecomplex * dc= (doublecomplex *) &coefX[i]; + os << ridxX[i]+1 << " " << j+1 << " " + << dc->r << " " << dc->i << "\n"; } } @@ -1650,6 +1651,9 @@ /* * $Log$ + * Revision 1.26 2004/07/27 20:56:44 aadler + * first steps to concatenation working + * * Revision 1.25 2004/07/27 18:24:10 aadler * save_ascii * Index: Makefile =================================================================== RCS file: /cvsroot/octave/octave-forge/main/sparse/Makefile,v retrieving revision 1.21 retrieving revision 1.22 diff -u -d -r1.21 -r1.22 --- Makefile 27 Jul 2004 16:05:55 -0000 1.21 +++ Makefile 27 Jul 2004 20:56:44 -0000 1.22 @@ -51,6 +51,7 @@ HAVE_ND_ARRAYS = -DHAVE_ND_ARRAYS TYPEID_HAS_CLASS = -DTYPEID_HAS_CLASS CLASS_HAS_LOAD_SAVE = -DCLASS_HAS_LOAD_SAVE + HAVE_OCTAVE_CONCAT = -DHAVE_OCTAVE_CONCAT endif @@ -77,6 +78,10 @@ -D"USER_ABORT=oct_sparse_fatalerr" \ -D"USER_FREE=oct_sparse_free" +OCT_DEFS= $(CCDEFS) $(HAVE_ND_ARRAYS) \ + $(TYPEID_HAS_CLASS) $(CLASS_HAS_LOAD_SAVE) \ + $(HAVE_OCTAVE_CONCAT) + OCTOBJ= sparse_ops.o make_sparse.o sparse_full.o sparse_inv.o \ complex_sparse_ops.o @@ -140,7 +145,7 @@ sparse_ops.o complex_sparse_ops.o: sparse_ops.h $(OCTOBJ): %.o: %.cc - $(MKOCTFILE) -c $< $(S_INC) $(CCDEFS) $(HAVE_ND_ARRAYS) $(TYPEID_HAS_CLASS) $(CLASS_HAS_LOAD_SAVE) -o $@ + $(MKOCTFILE) -c $< $(S_INC) $(OCT_DEFS) -o $@ $(LIBSUPERLU): $(S_DOUBLE) $(AR) $(ARFLAGS) $(LIBSUPERLU) $(S_DOUBLE) Index: make_sparse.h =================================================================== RCS file: /cvsroot/octave/octave-forge/main/sparse/make_sparse.h,v retrieving revision 1.24 retrieving revision 1.25 diff -u -d -r1.24 -r1.25 --- make_sparse.h 27 Jul 2004 18:24:10 -0000 1.24 +++ make_sparse.h 27 Jul 2004 20:56:44 -0000 1.25 @@ -19,6 +19,9 @@ $Id$ $Log$ +Revision 1.25 2004/07/27 20:56:44 aadler +first steps to concatenation working + Revision 1.24 2004/07/27 18:24:10 aadler save_ascii @@ -219,6 +222,12 @@ #include <octave/utils.h> +#ifdef CLASS_HAS_LOAD_SAVE +#include <octave/byte-swap.h> +#include <octave/ls-oct-ascii.h> +#endif + + class Octave_map; class octave_value_list; @@ -324,6 +333,7 @@ // sparse class definition // class +//octave_sparse : public octave_base_value octave_sparse : public octave_base_value { public: @@ -378,9 +388,10 @@ octave_value_list find( void ) const; #ifdef HAVE_OCTAVE_CONCAT + friend octave_sparse concat (const octave_sparse& ra, + const octave_sparse& rb, + const Array<int>& ra_idx); #if 0 - octave_sparse concat (const octave_sparse& ra, const octave_sparse& rb, - const Array<int>& ra_idx); octave_sparse concat (const octave_sparse& ra, const Matrix& rb, const Array<int>& ra_idx); octave_sparse concat (const Matrix& ra, const octave_sparse& rb, |