1 # ifdef __cplusplus
2 extern "C" {
3 # endif // ifdef __cplusplus
4 
5 #include "qdldl_types.h"
6 
7 /**
8  * C = A(p,p)= PAP' where A and C are symmetric the upper part stored;
9  * NB. It assumes all the values are allocated
10  */
11 void symperm(QDLDL_int n,
12 		     const QDLDL_int * Ap,
13 			 const QDLDL_int * Ai,
14 			 const QDLDL_float * Ax,
15 			 QDLDL_int * Cp,
16 			 QDLDL_int * Ci,
17 			 QDLDL_float * Cx,
18 			 const QDLDL_int * pinv,
19 			 QDLDL_int * AtoC,
20 			 QDLDL_int * w);
21 
22 
23 /**
24  * Compute inverse of permutation matrix stored in the vector p.
25  * The computed inverse is also stored in a vector.
26  */
27 void pinv(const QDLDL_int *p, QDLDL_int * pinv, QDLDL_int        n);
28 
29 
30 /* Permute x = P*b using P */
31 void permute_x(QDLDL_int n, QDLDL_float * x, const QDLDL_float * b, const QDLDL_int * P);
32 
33 /* Permute x = P'*b using P */
34 void permutet_x(QDLDL_int n, QDLDL_float * x, const QDLDL_float * b, const QDLDL_int * P);
35 
36 
37 /* Update permuted matrix A with Anewx */
38 void update_A(QDLDL_int Anz, QDLDL_float * Apermx, QDLDL_float * Anewx, const QDLDL_int *AtoAperm);
39 
40 
41 #ifdef __cplusplus
42 }
43 #endif
44