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