21 int *vali =
NULL, m, n;
26 if ((c = fgetc(f)) !=
'%') {
33 printf(
"Could not process Matrix Market banner.\n");
52 for (
size_t i = 0; i < nz; i++) {
53 int num = fscanf(f,
"%d %d %lg\n", &
I[i], &J[i], &val[i]);
64 const size_t nzold = nz;
65 for (
size_t i = 0; i < nzold; i++) {
76 const size_t nzold = nz;
77 for (
size_t i = 0; i < nzold; i++) {
92 for (
size_t i = 0; i < nz; i++) {
93 int num = fscanf(f,
"%d %d %d\n", &
I[i], &J[i], &vali[i]);
104 const size_t nzold = nz;
105 for (
size_t i = 0; i < nzold; i++) {
109 vali[nz++] = vali[i];
116 const size_t nzold = nz;
117 for (
size_t i = 0; i < nzold; i++) {
123 vali[nz++] = -vali[i];
131 for (
size_t i = 0; i < nz; i++) {
132 int num = fscanf(f,
"%d %d\n", &
I[i], &J[i]);
142 const size_t nzold = nz;
143 for (
size_t i = 0; i < nzold; i++) {
155 double *
const v = val;
156 for (
size_t i = 0; i < nz; i++) {
158 fscanf(f,
"%d %d %lg %lg\n", &
I[i], &J[i], &v[2 * i], &v[2 * i + 1]);
168 val =
gv_recalloc(val, 2 * nz, 4 * nz,
sizeof(
double));
169 const size_t nzold = nz;
170 for (
size_t i = 0; i < nzold; i++) {
174 val[2 * nz] = val[2 * i];
175 val[2 * nz + 1] = val[2 * i + 1];
182 val =
gv_recalloc(val, 2 * nz, 4 * nz,
sizeof(
double));
183 const size_t nzold = nz;
184 for (
size_t i = 0; i < nzold; i++) {
190 val[2 * nz] = -val[2 * i];
191 val[2 * nz + 1] = -val[2 * i + 1];
197 val =
gv_recalloc(val, 2 * nz, 4 * nz,
sizeof(
double));
198 const size_t nzold = nz;
199 for (
size_t i = 0; i < nzold; i++) {
203 val[2 * nz] = val[2 * i];
204 val[2 * nz + 1] = -val[2 * i + 1];
225 A->is_symmetric =
true;
226 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