36 double *val =
NULL, *v;
43 if ((c = fgetc(f)) !=
'%') {
50 printf(
"Could not process Matrix Market banner.\n");
80 for (i = 0; i < nz; i++) {
81 int num = fscanf(f,
"%d %d %lg\n", &
I[i], &J[i], &val[i]);
92 for (i = 0; i < nzold; i++) {
102 val =
gv_recalloc(val, nz, 2 * nz,
sizeof(
double));
104 for (i = 0; i < nzold; i++) {
105 assert(
I[i] != J[i]);
117 for (i = 0; i < nz; i++) {
118 int num = fscanf(f,
"%d %d %d\n", &
I[i], &J[i], &vali[i]);
129 for (i = 0; i < nzold; i++) {
133 vali[nz++] = vali[i];
141 for (i = 0; i < nzold; i++) {
142 assert(
I[i] != J[i]);
145 vali[nz++] = -vali[i];
153 for (i = 0; i < nz; i++) {
154 int num = fscanf(f,
"%d %d\n", &
I[i], &J[i]);
164 for (i = 0; i < nzold; i++) {
177 for (i = 0; i < nz; i++) {
178 int num = fscanf(f,
"%d %d %lg %lg\n", &
I[i], &J[i], &v[0], &v[1]);
188 val =
gv_recalloc(val, 2 * nz, 4 * nz,
sizeof(
double));
190 for (i = 0; i < nzold; i++) {
194 val[2 * nz] = val[2 * i];
195 val[2 * nz + 1] = val[2 * i + 1];
202 val =
gv_recalloc(val, 2 * nz, 4 * nz,
sizeof(
double));
204 for (i = 0; i < nzold; i++) {
205 assert(
I[i] != J[i]);
208 val[2 * nz] = -val[2 * i];
209 val[2 * nz + 1] = -val[2 * i + 1];
216 val =
gv_recalloc(val, 2 * nz, 4 * nz,
sizeof(
double));
218 for (i = 0; i < nzold; i++) {
222 val[2 * nz] = val[2 * i];
223 val[2 * nz + 1] = -val[2 * i + 1];
235 type,
sizeof(
double));
SparseMatrix SparseMatrix_from_coordinate_arrays(int nz, int m, int n, int *irn, int *jcn, void *val0, int type, size_t sz)
#define SparseMatrix_set_pattern_symmetric(A)
#define SparseMatrix_set_symmetric(A)
Memory allocation wrappers that exit on failure.
static void * gv_recalloc(void *ptr, size_t old_nmemb, size_t new_nmemb, size_t size)
static void * gv_calloc(size_t nmemb, size_t size)
SparseMatrix SparseMatrix_import_matrix_market(FILE *f)
static int mm_get_type(MM_typecode typecode)
int mm_read_mtx_crd_size(FILE *f, int *M, int *N, int *nz)
int mm_read_banner(FILE *f, MM_typecode *matcode)
#define mm_is_complex(typecode)
#define mm_is_matrix(typecode)
#define mm_is_hermitian(typecode)
#define mm_is_real(typecode)
#define mm_is_skew(typecode)
#define mm_is_pattern(typecode)
#define mm_is_integer(typecode)
#define mm_is_symmetric(typecode)
#define mm_is_sparse(typecode)