12 if (!M_transpose)
return NULL;
13 if (M->
nzmax == 0)
return M_transpose;
17 for (index = 0; index < M->
nrow; index++) col_pointers[index] = 0;
20 for (col = 0; col < M->
ncol; col++)
22 col_pointers[M->
i[index]]++;
24 M_transpose->
p[0] = 0;
25 for (col = 1; col < M_transpose->
ncol; col++)
27 prev_col_count = col_pointers[col-1];
28 col_pointers[col] += prev_col_count;
29 M_transpose->
p[col] = prev_col_count;
30 col_pointers[col-1] = M_transpose->
p[col-1];
32 M_transpose->
p[M_transpose->
ncol] = col_pointers[M_transpose->
ncol-1];
33 col_pointers[M_transpose->
ncol-1] = M_transpose->
p[M_transpose->
ncol-1];
35 for (col = 0; col < M->
ncol; col++)
39 new_index = col_pointers[M->
i[index]]++;
40 M_transpose->
i[new_index] = col;
41 if (M_transpose->
values) M_transpose->
x[new_index] = M->
x[index];
#define FALSE
For booleans.
#define LADEL_FOR(index, M, col)
Loop through a column of a sparse matrix.
Constants and macros used in LADEL.
Memory allocation routines.
ladel_sparse_matrix * ladel_sparse_alloc(ladel_int nrow, ladel_int ncol, ladel_int nzmax, ladel_int symmetry, ladel_int values, ladel_int nz)
Allocate a sparse matrix.
void * ladel_malloc(ladel_int n, size_t size)
Version of malloc (for mex or for regular C).
void * ladel_free(void *p)
Version of free (for mex or for regular C).
ladel_sparse_matrix * ladel_transpose(ladel_sparse_matrix *M, ladel_int values, ladel_work *work)
Returns the transpose of a matrix, that is .
Structures and types used in LADEL routines.
int64_t ladel_int
Type for integer numbers (default: int64_t)
Sparse matrix in compressed column storage.
ladel_int symmetry
type of symmetry (UNSYMMETRIC, UPPER or LOWER)
ladel_int ncol
number of columns
ladel_double * x
numerical values (size nzmax)
ladel_int nzmax
number of nonzeros
ladel_int * p
column pointers (size ncol+1)
ladel_int values
has numerical values
ladel_int nrow
number of rows
ladel_int * i
row pointers (size nzmax)
Workspace required for various routines in LADEL.
ladel_int * array_int_ncol1
An array of ncol integers.