void test_io(FILE *inStream, FILE *outStream) { gsl_spmatrix *m; int status; m = gsl_spmatrix_fscanf(inStream, 1); status = gsl_spmatrix_fprintf(outStream, m, "%.3lf"); gsl_spmatrix_free(m); return; }
static void test_io_ascii(const size_t M, const size_t N, const double density, const gsl_rng *r) { int status; gsl_spmatrix *A = create_random_sparse_int(M, N, density, r); char filename[] = "test.XXXXXX"; #if !defined( _WIN32 ) int fd = mkstemp(filename); #else char * fd = _mktemp(filename); # define fdopen fopen #endif /* test triplet I/O */ { FILE *f = fdopen(fd, "w"); gsl_spmatrix_fprintf(f, A, "%lg"); fclose(f); } { FILE *f = fopen(filename, "r"); gsl_spmatrix *B = gsl_spmatrix_fscanf(f); status = gsl_spmatrix_equal(A, B) != 1; gsl_test(status, "test_io_ascii: fprintf/fscanf M="F_ZU" N="F_ZU" triplet format", M, N); fclose(f); gsl_spmatrix_free(B); } /* test CCS I/O */ { FILE *f = fopen(filename, "w"); gsl_spmatrix *A_ccs = gsl_spmatrix_ccs(A); gsl_spmatrix_fprintf(f, A_ccs, "%lg"); fclose(f); gsl_spmatrix_free(A_ccs); } { FILE *f = fopen(filename, "r"); gsl_spmatrix *B = gsl_spmatrix_fscanf(f); status = gsl_spmatrix_equal(A, B) != 1; gsl_test(status, "test_io_ascii: fprintf/fscanf M="F_ZU" N="F_ZU" CCS format", M, N); fclose(f); gsl_spmatrix_free(B); } /* test CRS I/O */ { FILE *f = fopen(filename, "w"); gsl_spmatrix *A_crs = gsl_spmatrix_crs(A); gsl_spmatrix_fprintf(f, A_crs, "%lg"); fclose(f); gsl_spmatrix_free(A_crs); } { FILE *f = fopen(filename, "r"); gsl_spmatrix *B = gsl_spmatrix_fscanf(f); status = gsl_spmatrix_equal(A, B) != 1; gsl_test(status, "test_io_ascii: fprintf/fscanf M="F_ZU" N="F_ZU" CRS format", M, N); fclose(f); gsl_spmatrix_free(B); } unlink(filename); gsl_spmatrix_free(A); }