static inline int writemm( char const* const filename, matrix_t* AA, char const * const comment, enum sparse_matrix_file_format_t ext ) { // make sure we're in the right format (COO) and base 0 int ret; if (( ret = convert_matrix( AA, SM_COO, FIRST_INDEX_ZERO ) ) != 0 ) return ret; assert( AA->format == SM_COO ); assert( AA->base == FIRST_INDEX_ZERO ); assert( AA->sym == SM_UNSYMMETRIC ); assert( AA->data_type == REAL_DOUBLE ); // copy data into the BeBOP format struct sparse_matrix_t A; struct coo_matrix_t Acoo; A.format = COO; A.repr = &Acoo; Acoo.m = AA->m; Acoo.n = AA->n; Acoo.nnz = AA->nz; Acoo.II = ( signed int* ) AA->ii; Acoo.JJ = ( signed int* ) AA->jj; Acoo.val = AA->dd; Acoo.index_base = ZERO; Acoo.symmetry_type = UNSYMMETRIC; Acoo.value_type = REAL; Acoo.ownership = USER_DEALLOCATES; // don't let BeBOP blow away our data save_sparse_matrix( filename, &A, ext ); return 0; // success }
void save(Archive& ar, const unsigned Integer) const { save_sparse_matrix(ar, reduce_A_); save_vector(ar, W_); ar & R_; ar & G_; ar & C_; ar & ins_; ar & iter_; ar & time_; }