21 int *vali =
NULL, m, n, nz;
26 if ((c = fgetc(f)) !=
'%') {
33 printf(
"Could not process Matrix Market banner.\n");
51 for (
int i = 0; i < nz; i++) {
52 int num = fscanf(f,
"%d %d %lg\n", &
I[i], &J[i], &val[i]);
64 for (
int i = 0; i < nzold; i++) {
76 for (
int i = 0; i < nzold; i++) {
91 for (
int i = 0; i < nz; i++) {
92 int num = fscanf(f,
"%d %d %d\n", &
I[i], &J[i], &vali[i]);
103 const int nzold = nz;
104 for (
int i = 0; i < nzold; i++) {
108 vali[nz++] = vali[i];
115 const int nzold = nz;
116 for (
int i = 0; i < nzold; i++) {
122 vali[nz++] = -vali[i];
130 for (
int i = 0; i < nz; i++) {
131 int num = fscanf(f,
"%d %d\n", &
I[i], &J[i]);
141 const int nzold = nz;
142 for (
int i = 0; i < nzold; i++) {
154 double *
const v = val;
155 for (
int i = 0; i < nz; i++) {
157 fscanf(f,
"%d %d %lg %lg\n", &
I[i], &J[i], &v[2 * i], &v[2 * i + 1]);
167 val =
gv_recalloc(val, 2 * nz, 4 * nz,
sizeof(
double));
168 const int nzold = nz;
169 for (
int i = 0; i < nzold; i++) {
173 val[2 * nz] = val[2 * i];
174 val[2 * nz + 1] = val[2 * i + 1];
181 val =
gv_recalloc(val, 2 * nz, 4 * nz,
sizeof(
double));
182 const int nzold = nz;
183 for (
int i = 0; i < nzold; i++) {
189 val[2 * nz] = -val[2 * i];
190 val[2 * nz + 1] = -val[2 * i + 1];
196 val =
gv_recalloc(val, 2 * nz, 4 * nz,
sizeof(
double));
197 const int nzold = nz;
198 for (
int i = 0; i < nzold; i++) {
202 val[2 * nz] = val[2 * i];
203 val[2 * nz + 1] = -val[2 * i + 1];
224 A->is_symmetric =
true;
225 A->is_pattern_symmetric =
true;
SparseMatrix SparseMatrix_from_coordinate_arrays(int nz, int m, int n, int *irn, int *jcn, const void *val, int type, size_t sz)
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)
int mm_read_mtx_crd_size(FILE *f, int *M, int *N, int *nz)
int mm_read_banner(FILE *f, MM_typecode *matcode)
int type
one of the MATRIX_TYPE_* values from lib/sparse