smatrixi

Variants: smatrixb, smatrixf, smatrixi

Sparse matrix object (similar to MacKay, Davey, Lafferty convention)

Public Functions

 smatrixi smatrixi_create(unsigned int _m, unsigned int _n) smatrixi smatrixi_create_array(short int * _x, unsigned int _m, unsigned int _n) int smatrixi_destroy(smatrixi _q) int smatrixi_print(smatrixi _q) int smatrixi_print_expanded(smatrixi _q) int smatrixi_size(smatrixi _q, unsigned int * _m, unsigned int * _n) int smatrixi_clear(smatrixi _q) int smatrixi_reset(smatrixi _q) int smatrixi_isset(smatrixi _q, unsigned int _m, unsigned int _n) int smatrixi_insert(smatrixi _q, unsigned int _m, unsigned int _n, short int _v) int smatrixi_delete(smatrixi _q, unsigned int _m, unsigned int _n) int smatrixi_set(smatrixi _q, unsigned int _m, unsigned int _n, short int _v) short int smatrixi_get(smatrixi _q, unsigned int _m, unsigned int _n) int smatrixi_eye(smatrixi _q) int smatrixi_mul(smatrixi _x, smatrixi _y, smatrixi _z) int smatrixi_vmul(smatrixi _q, short int * _x, short int * _y)

Interfaces

smatrixi smatrixi_create(unsigned int _m, unsigned int _n)

Create $$M \times N$$ sparse matrix, initialized with zeros

• _m : number of rows in matrix
• _n : number of columns in matrix

smatrixi smatrixi_create_array(short int * _x, unsigned int _m, unsigned int _n)

Create $$M \times N$$ sparse matrix, initialized on array

• _x : input matrix, shape: (_m, _n)
• _m : number of rows in input matrix
• _n : number of columns in input matrix

int smatrixi_destroy(smatrixi _q)

Destroy object, freeing all internal memory

int smatrixi_print(smatrixi _q)

Print sparse matrix in compact form to stdout

int smatrixi_print_expanded(smatrixi _q)

Print sparse matrix in expanded form to stdout

int smatrixi_size(smatrixi _q, unsigned int * _m, unsigned int * _n)

Get size of sparse matrix (number of rows and columns)

• _q : sparse matrix object
• _m : number of rows in matrix
• _n : number of columns in matrix

int (smatrixi _q)

Zero all elements and retain allocated memory

int smatrixi_reset(smatrixi _q)

Zero all elements and clear memory

int smatrixi_isset(smatrixi _q, unsigned int _m, unsigned int _n)

Determine if value has been set (allocated memory)

• _q : sparse matrix object
• _m : row index of value to query
• _n : column index of value to query

int smatrixi_insert(smatrixi _q, unsigned int _m, unsigned int _n, short int _v)

Insert an element at index, allocating memory as necessary

• _q : sparse matrix object
• _m : row index of value to insert
• _n : column index of value to insert
• _v : value to insert

int smatrixi_delete(smatrixi _q, unsigned int _m, unsigned int _n)

Delete an element at index, freeing memory

• _q : sparse matrix object
• _m : row index of value to delete
• _n : column index of value to delete

int smatrixi_set(smatrixi _q, unsigned int _m, unsigned int _n, short int _v)

Set the value in matrix at specified row and column, allocating memory if needed

• _q : sparse matrix object
• _m : row index of value to set
• _n : column index of value to set
• _v : value to set in matrix

short int smatrixi_get(smatrixi _q, unsigned int _m, unsigned int _n)

Get the value from matrix at specified row and column

• _q : sparse matrix object
• _m : row index of value to get
• _n : column index of value to get

int smatrixi_eye(smatrixi _q)

Initialize to identity matrix; set all diagonal elements to 1, all others to 0. This is done with both square and non-square matrices.

int smatrixi_mul(smatrixi _x, smatrixi _y, smatrixi _z)

Multiply two sparse matrices, $$\vec{Z} = \vec{X} \vec{Y}$$

• _x : sparse matrix object (input)
• _y : sparse matrix object (input)
• _z : sparse matrix object (output)

int smatrixi_vmul(smatrixi _q, short int * _x, short int * _y)

Multiply sparse matrix by vector

• _q : sparse matrix
• _x : input vector, shape: (_n, 1)
• _y : output vector, shape: (_m, 1)