LADEL main
Sparse LDL factorization package with rank 1 and rowadd/rowdel updates
ladel_copy.c
Go to the documentation of this file.
1#include "ladel_types.h"
2#include "ladel_global.h"
3#include "ladel_copy.h"
4
6{
7 ladel_sparse_matrix *M_copy = ladel_sparse_alloc(M->nrow, M->ncol, M->nzmax, M->symmetry, M->values, !!M->nz);
8 ladel_sparse_copy(M, M_copy);
9 return M_copy;
10}
11
13{
14 if (!M || !M_copy)
15 {
16 M_copy = NULL;
17 } else
18 {
19 M_copy->ncol = M->ncol;
20 M_copy->nrow = M->nrow;
21 M_copy->nzmax = M->nzmax;
22 M_copy->symmetry = M->symmetry;
23 M_copy->values = M->values;
24 ladel_int index;
25 for (index = 0; index < M->ncol+1; index++) M_copy->p[index] = M->p[index];
26
27 if (M->nz) for (index = 0; index < M->ncol; index++) M_copy->nz[index] = M->nz[index];
28 else M_copy->nz = ladel_free(M_copy->nz);
29
30 for (index = 0; index < M->nzmax; index++)
31 {
32 M_copy->i[index] = M->i[index];
33 if (M->values) M_copy->x[index] = M->x[index];
34 }
35 }
36}
37
39{
40 ladel_int index;
41 for (index = 0; index < size; index++)
42 {
43 y[index] = x[index];
44 }
45}
46
48{
49 ladel_int index;
50 for (index = 0; index < size; index++)
51 {
52 y[index] = x[index];
53 }
54}
ladel_sparse_matrix * ladel_sparse_allocate_and_copy(ladel_sparse_matrix *M)
Copies a matrix into a newly allocated one.
Definition: ladel_copy.c:5
void ladel_sparse_copy(ladel_sparse_matrix *M, ladel_sparse_matrix *M_copy)
Copies a matrix (preallocated)
Definition: ladel_copy.c:12
void ladel_int_vector_copy(ladel_int *x, ladel_int size, ladel_int *y)
Copies an integer vector (preallocated)
Definition: ladel_copy.c:38
void ladel_double_vector_copy(ladel_double *x, ladel_int size, ladel_double *y)
Copies a double vector (preallocated)
Definition: ladel_copy.c:47
Routines to copy matrices and vectors.
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.
Definition: ladel_global.c:101
void * ladel_free(void *p)
Version of free (for mex or for regular C).
Definition: ladel_global.c:60
Structures and types used in LADEL routines.
int64_t ladel_int
Type for integer numbers (default: int64_t)
Definition: ladel_types.h:24
double ladel_double
Type for floating point numbers (default: double)
Definition: ladel_types.h:20
Sparse matrix in compressed column storage.
Definition: ladel_types.h:35
ladel_int symmetry
type of symmetry (UNSYMMETRIC, UPPER or LOWER)
Definition: ladel_types.h:46
ladel_int ncol
number of columns
Definition: ladel_types.h:38
ladel_double * x
numerical values (size nzmax)
Definition: ladel_types.h:42
ladel_int nzmax
number of nonzeros
Definition: ladel_types.h:36
ladel_int * p
column pointers (size ncol+1)
Definition: ladel_types.h:40
ladel_int * nz
(optional) number of elements in each column (size ncol)
Definition: ladel_types.h:43
ladel_int values
has numerical values
Definition: ladel_types.h:45
ladel_int nrow
number of rows
Definition: ladel_types.h:37
ladel_int * i
row pointers (size nzmax)
Definition: ladel_types.h:41