23 int *vali =
NULL, m, n;
28 if ((c = fgetc(f)) !=
'%') {
35 printf(
"Could not process Matrix Market banner.\n");
54 for (
size_t i = 0; i < nz; i++) {
55 int num = fscanf(f,
"%d %d %lg\n", &
I[i], &J[i], &val[i]);
66 const size_t nzold = nz;
67 for (
size_t i = 0; i < nzold; i++) {
78 const size_t nzold = nz;
79 for (
size_t i = 0; i < nzold; i++) {
94 for (
size_t i = 0; i < nz; i++) {
95 int num = fscanf(f,
"%d %d %d\n", &
I[i], &J[i], &vali[i]);
106 const size_t nzold = nz;
107 for (
size_t i = 0; i < nzold; i++) {
111 vali[nz++] = vali[i];
118 const size_t nzold = nz;
119 for (
size_t i = 0; i < nzold; i++) {
125 vali[nz++] = -vali[i];
133 for (
size_t i = 0; i < nz; i++) {
134 int num = fscanf(f,
"%d %d\n", &
I[i], &J[i]);
144 const size_t nzold = nz;
145 for (
size_t i = 0; i < nzold; i++) {
157 double *
const v = val;
158 for (
size_t i = 0; i < nz; i++) {
160 fscanf(f,
"%d %d %lg %lg\n", &
I[i], &J[i], &v[2 * i], &v[2 * i + 1]);
170 val =
gv_recalloc(val, 2 * nz, 4 * nz,
sizeof(
double));
171 const size_t nzold = nz;
172 for (
size_t i = 0; i < nzold; i++) {
176 val[2 * nz] = val[2 * i];
177 val[2 * nz + 1] = val[2 * i + 1];
184 val =
gv_recalloc(val, 2 * nz, 4 * nz,
sizeof(
double));
185 const size_t nzold = nz;
186 for (
size_t i = 0; i < nzold; i++) {
192 val[2 * nz] = -val[2 * i];
193 val[2 * nz + 1] = -val[2 * i + 1];
199 val =
gv_recalloc(val, 2 * nz, 4 * nz,
sizeof(
double));
200 const size_t nzold = nz;
201 for (
size_t i = 0; i < nzold; i++) {
205 val[2 * nz] = val[2 * i];
206 val[2 * nz + 1] = -val[2 * i + 1];
227 A->is_symmetric =
true;
228 A->is_pattern_symmetric =
true;
SparseMatrix SparseMatrix_from_coordinate_arrays(size_t 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, size_t *nz)
int mm_read_banner(FILE *f, MM_typecode *matcode)
int type
one of the MATRIX_TYPE_* values from lib/sparse