Dist m4ri 0.0.1.alpha
Computing distance of a classical or quantum CSS code
Loading...
Searching...
No Matches
Macros | Typedefs | Functions
mmio.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define MM_MAX_LINE_LENGTH   1025
 
#define MatrixMarketBanner   "%%MatrixMarket"
 
#define MM_MAX_TOKEN_LENGTH   64
 
#define mm_is_matrix(typecode)   ((typecode)[0]=='M')
 
#define mm_is_sparse(typecode)   ((typecode)[1]=='C')
 
#define mm_is_coordinate(typecode)   ((typecode)[1]=='C')
 
#define mm_is_dense(typecode)   ((typecode)[1]=='A')
 
#define mm_is_array(typecode)   ((typecode)[1]=='A')
 
#define mm_is_complex(typecode)   ((typecode)[2]=='C')
 
#define mm_is_real(typecode)   ((typecode)[2]=='R')
 
#define mm_is_pattern(typecode)   ((typecode)[2]=='P')
 
#define mm_is_integer(typecode)   ((typecode)[2]=='I')
 
#define mm_is_symmetric(typecode)   ((typecode)[3]=='S')
 
#define mm_is_general(typecode)   ((typecode)[3]=='G')
 
#define mm_is_skew(typecode)   ((typecode)[3]=='K')
 
#define mm_is_hermitian(typecode)   ((typecode)[3]=='H')
 
#define mm_set_matrix(typecode)   ((*typecode)[0]='M')
 
#define mm_set_coordinate(typecode)   ((*typecode)[1]='C')
 
#define mm_set_array(typecode)   ((*typecode)[1]='A')
 
#define mm_set_dense(typecode)   mm_set_array(typecode)
 
#define mm_set_sparse(typecode)   mm_set_coordinate(typecode)
 
#define mm_set_complex(typecode)   ((*typecode)[2]='C')
 
#define mm_set_real(typecode)   ((*typecode)[2]='R')
 
#define mm_set_pattern(typecode)   ((*typecode)[2]='P')
 
#define mm_set_integer(typecode)   ((*typecode)[2]='I')
 
#define mm_set_symmetric(typecode)   ((*typecode)[3]='S')
 
#define mm_set_general(typecode)   ((*typecode)[3]='G')
 
#define mm_set_skew(typecode)   ((*typecode)[3]='K')
 
#define mm_set_hermitian(typecode)   ((*typecode)[3]='H')
 
#define mm_clear_typecode(typecode)
 
#define mm_initialize_typecode(typecode)   mm_clear_typecode(typecode)
 
#define MM_COULD_NOT_READ_FILE   11
 
#define MM_PREMATURE_EOF   12
 
#define MM_NOT_MTX   13
 
#define MM_NO_HEADER   14
 
#define MM_UNSUPPORTED_TYPE   15
 
#define MM_LINE_TOO_LONG   16
 
#define MM_COULD_NOT_WRITE_FILE   17
 
#define MM_MTX_STR   "matrix"
 
#define MM_ARRAY_STR   "array"
 
#define MM_DENSE_STR   "array"
 
#define MM_COORDINATE_STR   "coordinate"
 
#define MM_SPARSE_STR   "coordinate"
 
#define MM_COMPLEX_STR   "complex"
 
#define MM_REAL_STR   "real"
 
#define MM_INT_STR   "integer"
 
#define MM_GENERAL_STR   "general"
 
#define MM_SYMM_STR   "symmetric"
 
#define MM_HERM_STR   "hermitian"
 
#define MM_SKEW_STR   "skew-symmetric"
 
#define MM_PATTERN_STR   "pattern"
 

Typedefs

typedef char MM_typecode[4]
 

Functions

char * mm_typecode_to_str (MM_typecode matcode)
 Convert a Matrix Market typecode to a human-readable string.
 
int mm_read_banner (FILE *f, MM_typecode *matcode)
 Read the Matrix Market banner from a file.
 
int mm_read_mtx_crd_size (FILE *f, int *M, int *N, int *nz)
 Read dimensions and number of non-zero entries for a coordinate matrix.
 
int mm_read_mtx_array_size (FILE *f, int *M, int *N)
 Read dimensions for an array (dense) matrix.
 
int mm_write_banner (FILE *f, MM_typecode matcode)
 Write the Matrix Market banner to a file.
 
int mm_write_mtx_crd_size (FILE *f, int M, int N, int nz)
 Write dimensions and number of non-zero entries for a coordinate matrix.
 
int mm_write_mtx_array_size (FILE *f, int M, int N)
 Write dimensions for an array (dense) matrix.
 
int mm_is_valid (MM_typecode matcode)
 
int mm_write_mtx_crd (char fname[], int M, int N, int nz, int I[], int J[], double val[], MM_typecode matcode)
 Write a coordinate matrix to a file.
 
int mm_read_mtx_crd_data (FILE *f, int M, int N, int nz, int I[], int J[], double val[], MM_typecode matcode)
 Read coordinate matrix data from a file into arrays.
 
int mm_read_mtx_crd_entry (FILE *f, int *I, int *J, double *real, double *img, MM_typecode matcode)
 Read a single coordinate entry from a file.
 
int mm_read_unsymmetric_sparse (const char *fname, int *M_, int *N_, int *nz_, double **val_, int **I_, int **J_)
 High-level routine to read an unsymmetric sparse matrix in coordinate format.
 

Macro Definition Documentation

◆ MatrixMarketBanner

#define MatrixMarketBanner   "%%MatrixMarket"

Definition at line 13 of file mmio.h.

◆ MM_ARRAY_STR

#define MM_ARRAY_STR   "array"

Definition at line 164 of file mmio.h.

◆ mm_clear_typecode

#define mm_clear_typecode (   typecode)
Value:
((*typecode)[0]=(*typecode)[1]= \
(*typecode)[2]=' ',(*typecode)[3]='G')

Definition at line 129 of file mmio.h.

◆ MM_COMPLEX_STR

#define MM_COMPLEX_STR   "complex"

Definition at line 168 of file mmio.h.

◆ MM_COORDINATE_STR

#define MM_COORDINATE_STR   "coordinate"

Definition at line 166 of file mmio.h.

◆ MM_COULD_NOT_READ_FILE

#define MM_COULD_NOT_READ_FILE   11

Definition at line 138 of file mmio.h.

◆ MM_COULD_NOT_WRITE_FILE

#define MM_COULD_NOT_WRITE_FILE   17

Definition at line 144 of file mmio.h.

◆ MM_DENSE_STR

#define MM_DENSE_STR   "array"

Definition at line 165 of file mmio.h.

◆ MM_GENERAL_STR

#define MM_GENERAL_STR   "general"

Definition at line 171 of file mmio.h.

◆ MM_HERM_STR

#define MM_HERM_STR   "hermitian"

Definition at line 173 of file mmio.h.

◆ mm_initialize_typecode

#define mm_initialize_typecode (   typecode)    mm_clear_typecode(typecode)

Definition at line 132 of file mmio.h.

◆ MM_INT_STR

#define MM_INT_STR   "integer"

Definition at line 170 of file mmio.h.

◆ mm_is_array

#define mm_is_array (   typecode)    ((typecode)[1]=='A')

Definition at line 95 of file mmio.h.

◆ mm_is_complex

#define mm_is_complex (   typecode)    ((typecode)[2]=='C')

Definition at line 97 of file mmio.h.

◆ mm_is_coordinate

#define mm_is_coordinate (   typecode)    ((typecode)[1]=='C')

Definition at line 93 of file mmio.h.

◆ mm_is_dense

#define mm_is_dense (   typecode)    ((typecode)[1]=='A')

Definition at line 94 of file mmio.h.

◆ mm_is_general

#define mm_is_general (   typecode)    ((typecode)[3]=='G')

Definition at line 103 of file mmio.h.

◆ mm_is_hermitian

#define mm_is_hermitian (   typecode)    ((typecode)[3]=='H')

Definition at line 105 of file mmio.h.

◆ mm_is_integer

#define mm_is_integer (   typecode)    ((typecode)[2]=='I')

Definition at line 100 of file mmio.h.

◆ mm_is_matrix

#define mm_is_matrix (   typecode)    ((typecode)[0]=='M')

Definition at line 90 of file mmio.h.

◆ mm_is_pattern

#define mm_is_pattern (   typecode)    ((typecode)[2]=='P')

Definition at line 99 of file mmio.h.

◆ mm_is_real

#define mm_is_real (   typecode)    ((typecode)[2]=='R')

Definition at line 98 of file mmio.h.

◆ mm_is_skew

#define mm_is_skew (   typecode)    ((typecode)[3]=='K')

Definition at line 104 of file mmio.h.

◆ mm_is_sparse

#define mm_is_sparse (   typecode)    ((typecode)[1]=='C')

Definition at line 92 of file mmio.h.

◆ mm_is_symmetric

#define mm_is_symmetric (   typecode)    ((typecode)[3]=='S')

Definition at line 102 of file mmio.h.

◆ MM_LINE_TOO_LONG

#define MM_LINE_TOO_LONG   16

Definition at line 143 of file mmio.h.

◆ MM_MAX_LINE_LENGTH

#define MM_MAX_LINE_LENGTH   1025

Definition at line 12 of file mmio.h.

◆ MM_MAX_TOKEN_LENGTH

#define MM_MAX_TOKEN_LENGTH   64

Definition at line 14 of file mmio.h.

◆ MM_MTX_STR

#define MM_MTX_STR   "matrix"

Definition at line 163 of file mmio.h.

◆ MM_NO_HEADER

#define MM_NO_HEADER   14

Definition at line 141 of file mmio.h.

◆ MM_NOT_MTX

#define MM_NOT_MTX   13

Definition at line 140 of file mmio.h.

◆ MM_PATTERN_STR

#define MM_PATTERN_STR   "pattern"

Definition at line 175 of file mmio.h.

◆ MM_PREMATURE_EOF

#define MM_PREMATURE_EOF   12

Definition at line 139 of file mmio.h.

◆ MM_REAL_STR

#define MM_REAL_STR   "real"

Definition at line 169 of file mmio.h.

◆ mm_set_array

#define mm_set_array (   typecode)    ((*typecode)[1]='A')

Definition at line 114 of file mmio.h.

◆ mm_set_complex

#define mm_set_complex (   typecode)    ((*typecode)[2]='C')

Definition at line 118 of file mmio.h.

◆ mm_set_coordinate

#define mm_set_coordinate (   typecode)    ((*typecode)[1]='C')

Definition at line 113 of file mmio.h.

◆ mm_set_dense

#define mm_set_dense (   typecode)    mm_set_array(typecode)

Definition at line 115 of file mmio.h.

◆ mm_set_general

#define mm_set_general (   typecode)    ((*typecode)[3]='G')

Definition at line 125 of file mmio.h.

◆ mm_set_hermitian

#define mm_set_hermitian (   typecode)    ((*typecode)[3]='H')

Definition at line 127 of file mmio.h.

◆ mm_set_integer

#define mm_set_integer (   typecode)    ((*typecode)[2]='I')

Definition at line 121 of file mmio.h.

◆ mm_set_matrix

#define mm_set_matrix (   typecode)    ((*typecode)[0]='M')

Definition at line 112 of file mmio.h.

◆ mm_set_pattern

#define mm_set_pattern (   typecode)    ((*typecode)[2]='P')

Definition at line 120 of file mmio.h.

◆ mm_set_real

#define mm_set_real (   typecode)    ((*typecode)[2]='R')

Definition at line 119 of file mmio.h.

◆ mm_set_skew

#define mm_set_skew (   typecode)    ((*typecode)[3]='K')

Definition at line 126 of file mmio.h.

◆ mm_set_sparse

#define mm_set_sparse (   typecode)    mm_set_coordinate(typecode)

Definition at line 116 of file mmio.h.

◆ mm_set_symmetric

#define mm_set_symmetric (   typecode)    ((*typecode)[3]='S')

Definition at line 124 of file mmio.h.

◆ MM_SKEW_STR

#define MM_SKEW_STR   "skew-symmetric"

Definition at line 174 of file mmio.h.

◆ MM_SPARSE_STR

#define MM_SPARSE_STR   "coordinate"

Definition at line 167 of file mmio.h.

◆ MM_SYMM_STR

#define MM_SYMM_STR   "symmetric"

Definition at line 172 of file mmio.h.

◆ MM_UNSUPPORTED_TYPE

#define MM_UNSUPPORTED_TYPE   15

Definition at line 142 of file mmio.h.

Typedef Documentation

◆ MM_typecode

typedef char MM_typecode[4]

Definition at line 16 of file mmio.h.

Function Documentation

◆ mm_is_valid()

int mm_is_valid ( MM_typecode  matcode)

Definition at line 95 of file mmio.c.

References mm_is_dense, mm_is_hermitian, mm_is_matrix, mm_is_pattern, mm_is_real, and mm_is_skew.

Referenced by mm_read_mtx_crd().

◆ mm_read_banner()

int mm_read_banner ( FILE *  f,
MM_typecode matcode 
)

◆ mm_read_mtx_array_size()

int mm_read_mtx_array_size ( FILE *  f,
int *  M,
int *  N 
)

Read dimensions for an array (dense) matrix.

Parameters
fFile pointer.
MPointer to store the number of rows.
NPointer to store the number of columns.
Returns
0 on success, or an error code on failure.

Definition at line 229 of file mmio.c.

References MM_MAX_LINE_LENGTH, and MM_PREMATURE_EOF.

Referenced by csr_mm_read().

◆ mm_read_mtx_crd_data()

int mm_read_mtx_crd_data ( FILE *  f,
int  M,
int  N,
int  nz,
int  I[],
int  J[],
double  val[],
MM_typecode  matcode 
)

Read coordinate matrix data from a file into arrays.

Parameters
fFile pointer.
MNumber of rows.
NNumber of columns.
nzNumber of non-zero entries.
IArray to store row indices.
JArray to store column indices.
valArray to store values.
matcodeMatrix Market typecode.
Returns
0 on success, or an error code on failure.

◆ mm_read_mtx_crd_entry()

int mm_read_mtx_crd_entry ( FILE *  f,
int *  I,
int *  J,
double *  real,
double *  img,
MM_typecode  matcode 
)

Read a single coordinate entry from a file.

Parameters
fFile pointer.
IPointer to store row index.
JPointer to store column index.
realPointer to store real part of the value.
imgPointer to store imaginary part of the value.
matcodeMatrix Market typecode.
Returns
0 on success, or an error code on failure.

Definition at line 307 of file mmio.c.

References mm_is_complex, mm_is_pattern, mm_is_real, MM_PREMATURE_EOF, and MM_UNSUPPORTED_TYPE.

◆ mm_read_mtx_crd_size()

int mm_read_mtx_crd_size ( FILE *  f,
int *  M,
int *  N,
int *  nz 
)

Read dimensions and number of non-zero entries for a coordinate matrix.

Parameters
fFile pointer.
MPointer to store the number of rows.
NPointer to store the number of columns.
nzPointer to store the number of non-zero entries.
Returns
0 on success, or an error code on failure.

Definition at line 198 of file mmio.c.

References MM_MAX_LINE_LENGTH, and MM_PREMATURE_EOF.

Referenced by csr_mm_read(), mm_read_mtx_crd(), and mm_read_unsymmetric_sparse().

◆ mm_read_unsymmetric_sparse()

int mm_read_unsymmetric_sparse ( const char *  fname,
int *  M_,
int *  N_,
int *  nz_,
double **  val_,
int **  I_,
int **  J_ 
)

High-level routine to read an unsymmetric sparse matrix in coordinate format.

Parameters
fnameFile name.
M_Pointer to store number of rows.
N_Pointer to store number of columns.
nz_Pointer to store number of non-zero entries.
val_Pointer to store allocated array of values.
I_Pointer to store allocated array of row indices.
J_Pointer to store allocated array of column indices.
Returns
0 on success, or an error code on failure.

Definition at line 20 of file mmio.c.

References mm_is_matrix, mm_is_real, mm_is_sparse, mm_read_banner(), mm_read_mtx_crd_size(), and mm_typecode_to_str().

◆ mm_typecode_to_str()

char * mm_typecode_to_str ( MM_typecode  matcode)

Convert a Matrix Market typecode to a human-readable string.

Parameters
matcodeThe Matrix Market typecode.
Returns
Dynamically allocated string describing the typecode.

Definition at line 464 of file mmio.c.

References _maybe_unused, MM_COMPLEX_STR, MM_DENSE_STR, MM_GENERAL_STR, MM_HERM_STR, MM_INT_STR, mm_is_complex, mm_is_dense, mm_is_general, mm_is_hermitian, mm_is_integer, mm_is_matrix, mm_is_pattern, mm_is_real, mm_is_skew, mm_is_sparse, mm_is_symmetric, MM_MAX_LINE_LENGTH, MM_MTX_STR, MM_PATTERN_STR, MM_REAL_STR, MM_SKEW_STR, MM_SPARSE_STR, mm_strdup(), and MM_SYMM_STR.

Referenced by csr_mm_read(), mm_read_unsymmetric_sparse(), mm_write_banner(), and mm_write_mtx_crd().

◆ mm_write_banner()

int mm_write_banner ( FILE *  f,
MM_typecode  matcode 
)

Write the Matrix Market banner to a file.

Parameters
fFile pointer.
matcodeThe typecode to write.
Returns
0 on success, or an error code on failure.

Definition at line 395 of file mmio.c.

References MatrixMarketBanner, MM_COULD_NOT_WRITE_FILE, and mm_typecode_to_str().

◆ mm_write_mtx_array_size()

int mm_write_mtx_array_size ( FILE *  f,
int  M,
int  N 
)

Write dimensions for an array (dense) matrix.

Parameters
fFile pointer.
MNumber of rows.
NNumber of columns.
Returns
0 on success, or an error code on failure.

Definition at line 258 of file mmio.c.

References MM_COULD_NOT_WRITE_FILE.

◆ mm_write_mtx_crd()

int mm_write_mtx_crd ( char  fname[],
int  M,
int  N,
int  nz,
int  I[],
int  J[],
double  val[],
MM_typecode  matcode 
)

Write a coordinate matrix to a file.

Parameters
fnameFile name.
MNumber of rows.
NNumber of columns.
nzNumber of non-zero entries.
IArray of row indices.
JArray of column indices.
valArray of values (can be NULL for pattern matrices).
matcodeMatrix Market typecode.
Returns
0 on success, or an error code on failure.

Definition at line 408 of file mmio.c.

References MatrixMarketBanner, MM_COULD_NOT_WRITE_FILE, mm_is_complex, mm_is_pattern, mm_is_real, mm_typecode_to_str(), and MM_UNSUPPORTED_TYPE.

◆ mm_write_mtx_crd_size()

int mm_write_mtx_crd_size ( FILE *  f,
int  M,
int  N,
int  nz 
)

Write dimensions and number of non-zero entries for a coordinate matrix.

Parameters
fFile pointer.
MNumber of rows.
NNumber of columns.
nzNumber of non-zero entries.
Returns
0 on success, or an error code on failure.

Definition at line 190 of file mmio.c.

References MM_COULD_NOT_WRITE_FILE.