summaryrefslogtreecommitdiff
path: root/usr/include/SuiteSparseQR_C.h
diff options
context:
space:
mode:
authorShashank2017-05-29 12:40:26 +0530
committerShashank2017-05-29 12:40:26 +0530
commit0345245e860375a32c9a437c4a9d9cae807134e9 (patch)
treead51ecbfa7bcd3cc5f09834f1bb8c08feaa526a4 /usr/include/SuiteSparseQR_C.h
downloadscilab_for_xcos_on_cloud-0345245e860375a32c9a437c4a9d9cae807134e9.tar.gz
scilab_for_xcos_on_cloud-0345245e860375a32c9a437c4a9d9cae807134e9.tar.bz2
scilab_for_xcos_on_cloud-0345245e860375a32c9a437c4a9d9cae807134e9.zip
CMSCOPE changed
Diffstat (limited to 'usr/include/SuiteSparseQR_C.h')
-rwxr-xr-xusr/include/SuiteSparseQR_C.h220
1 files changed, 220 insertions, 0 deletions
diff --git a/usr/include/SuiteSparseQR_C.h b/usr/include/SuiteSparseQR_C.h
new file mode 100755
index 000000000..a0a80365b
--- /dev/null
+++ b/usr/include/SuiteSparseQR_C.h
@@ -0,0 +1,220 @@
+/* ========================================================================== */
+/* === SuiteSparseQR_C.h ==================================================== */
+/* ========================================================================== */
+
+/* For inclusion in a C or C++ program. */
+
+#ifndef SUITESPARSEQR_C_H
+#define SUITESPARSEQR_C_H
+
+#ifdef __cplusplus
+/* If included by a C++ program, the Complex type is std::complex<double> */
+#include <complex>
+#define Complex std::complex<double>
+extern "C" {
+#endif
+
+#include "cholmod.h"
+#include "SuiteSparseQR_definitions.h"
+
+#ifndef __cplusplus
+/* The C++ functions will return a pointer to a std::complex<double> array of
+ size n, which the C code must then interpret as double array of size 2*n,
+ with real and imaginary parts interleaved. */
+#define Complex double
+#endif
+
+/* ========================================================================== */
+/* === SuiteSparseQR_C ====================================================== */
+/* ========================================================================== */
+
+SuiteSparse_long SuiteSparseQR_C /* returns rank(A) estimate, (-1) if failure */
+(
+ /* inputs: */
+ int ordering, /* all, except 3:given treated as 0:fixed */
+ double tol, /* columns with 2-norm <= tol treated as 0 */
+ SuiteSparse_long econ, /* e = max(min(m,econ),rank(A)) */
+ int getCTX, /* 0: Z=C (e-by-k), 1: Z=C', 2: Z=X (e-by-k) */
+ cholmod_sparse *A, /* m-by-n sparse matrix to factorize */
+ cholmod_sparse *Bsparse, /* sparse m-by-k B */
+ cholmod_dense *Bdense, /* dense m-by-k B */
+ /* outputs: */
+ cholmod_sparse **Zsparse, /* sparse Z */
+ cholmod_dense **Zdense, /* dense Z */
+ cholmod_sparse **R, /* e-by-n sparse matrix */
+ SuiteSparse_long **E, /* size n column perm, NULL if identity */
+ cholmod_sparse **H, /* m-by-nh Householder vectors */
+ SuiteSparse_long **HPinv, /* size m row permutation */
+ cholmod_dense **HTau, /* 1-by-nh Householder coefficients */
+ cholmod_common *cc /* workspace and parameters */
+) ;
+
+/* ========================================================================== */
+/* === SuiteSparseQR_C_QR =================================================== */
+/* ========================================================================== */
+
+/* [Q,R,E] = qr(A), returning Q as a sparse matrix */
+SuiteSparse_long SuiteSparseQR_C_QR /* returns rank(A) est., (-1) if failure */
+(
+ /* inputs: */
+ int ordering, /* all, except 3:given treated as 0:fixed */
+ double tol, /* columns with 2-norm <= tol treated as 0 */
+ SuiteSparse_long econ, /* e = max(min(m,econ),rank(A)) */
+ cholmod_sparse *A, /* m-by-n sparse matrix to factorize */
+ /* outputs: */
+ cholmod_sparse **Q, /* m-by-e sparse matrix */
+ cholmod_sparse **R, /* e-by-n sparse matrix */
+ SuiteSparse_long **E, /* size n column perm, NULL if identity */
+ cholmod_common *cc /* workspace and parameters */
+) ;
+
+/* ========================================================================== */
+/* === SuiteSparseQR_C_backslash ============================================ */
+/* ========================================================================== */
+
+/* X = A\B where B is dense */
+cholmod_dense *SuiteSparseQR_C_backslash /* returns X, NULL if failure */
+(
+ int ordering, /* all, except 3:given treated as 0:fixed */
+ double tol, /* columns with 2-norm <= tol treated as 0 */
+ cholmod_sparse *A, /* m-by-n sparse matrix */
+ cholmod_dense *B, /* m-by-k */
+ cholmod_common *cc /* workspace and parameters */
+) ;
+
+/* ========================================================================== */
+/* === SuiteSparseQR_C_backslash_default ==================================== */
+/* ========================================================================== */
+
+/* X = A\B where B is dense, using default ordering and tol */
+cholmod_dense *SuiteSparseQR_C_backslash_default /* returns X, NULL if failure*/
+(
+ cholmod_sparse *A, /* m-by-n sparse matrix */
+ cholmod_dense *B, /* m-by-k */
+ cholmod_common *cc /* workspace and parameters */
+) ;
+
+/* ========================================================================== */
+/* === SuiteSparseQR_C_backslash_sparse ===================================== */
+/* ========================================================================== */
+
+/* X = A\B where B is sparse */
+cholmod_sparse *SuiteSparseQR_C_backslash_sparse /* returns X, or NULL */
+(
+ /* inputs: */
+ int ordering, /* all, except 3:given treated as 0:fixed */
+ double tol, /* columns with 2-norm <= tol treated as 0 */
+ cholmod_sparse *A, /* m-by-n sparse matrix */
+ cholmod_sparse *B, /* m-by-k */
+ cholmod_common *cc /* workspace and parameters */
+) ;
+
+#ifndef NEXPERT
+
+/* ========================================================================== */
+/* === SuiteSparseQR_C_factorization ======================================== */
+/* ========================================================================== */
+
+/* A real or complex QR factorization, computed by SuiteSparseQR_C_factorize */
+typedef struct SuiteSparseQR_C_factorization_struct
+{
+ int xtype ; /* CHOLMOD_REAL or CHOLMOD_COMPLEX */
+ void *factors ; /* from SuiteSparseQR_factorize <double> or
+ SuiteSparseQR_factorize <Complex> */
+
+} SuiteSparseQR_C_factorization ;
+
+/* ========================================================================== */
+/* === SuiteSparseQR_C_factorize ============================================ */
+/* ========================================================================== */
+
+SuiteSparseQR_C_factorization *SuiteSparseQR_C_factorize
+(
+ /* inputs: */
+ int ordering, /* all, except 3:given treated as 0:fixed */
+ double tol, /* columns with 2-norm <= tol treated as 0 */
+ cholmod_sparse *A, /* m-by-n sparse matrix */
+ cholmod_common *cc /* workspace and parameters */
+) ;
+
+/* ========================================================================== */
+/* === SuiteSparseQR_C_symbolic ============================================= */
+/* ========================================================================== */
+
+SuiteSparseQR_C_factorization *SuiteSparseQR_C_symbolic
+(
+ /* inputs: */
+ int ordering, /* all, except 3:given treated as 0:fixed */
+ int allow_tol, /* if TRUE allow tol for rank detection */
+ cholmod_sparse *A, /* m-by-n sparse matrix, A->x ignored */
+ cholmod_common *cc /* workspace and parameters */
+) ;
+
+/* ========================================================================== */
+/* === SuiteSparseQR_C_numeric ============================================== */
+/* ========================================================================== */
+
+int SuiteSparseQR_C_numeric
+(
+ /* inputs: */
+ double tol, /* treat columns with 2-norm <= tol as zero */
+ cholmod_sparse *A, /* sparse matrix to factorize */
+ /* input/output: */
+ SuiteSparseQR_C_factorization *QR,
+ cholmod_common *cc /* workspace and parameters */
+) ;
+
+/* ========================================================================== */
+/* === SuiteSparseQR_C_free ================================================= */
+/* ========================================================================== */
+
+/* Free the QR factors computed by SuiteSparseQR_C_factorize */
+int SuiteSparseQR_C_free /* returns TRUE (1) if OK, FALSE (0) otherwise*/
+(
+ SuiteSparseQR_C_factorization **QR,
+ cholmod_common *cc /* workspace and parameters */
+) ;
+
+/* ========================================================================== */
+/* === SuiteSparseQR_C_solve ================================================ */
+/* ========================================================================== */
+
+cholmod_dense* SuiteSparseQR_C_solve /* returnx X, or NULL if failure */
+(
+ int system, /* which system to solve */
+ SuiteSparseQR_C_factorization *QR, /* of an m-by-n sparse matrix A */
+ cholmod_dense *B, /* right-hand-side, m-by-k or n-by-k */
+ cholmod_common *cc /* workspace and parameters */
+) ;
+
+/* ========================================================================== */
+/* === SuiteSparseQR_C_qmult ================================================ */
+/* ========================================================================== */
+
+/*
+ Applies Q in Householder form (as stored in the QR factorization object
+ returned by SuiteSparseQR_C_factorize) to a dense matrix X.
+
+ method SPQR_QTX (0): Y = Q'*X
+ method SPQR_QX (1): Y = Q*X
+ method SPQR_XQT (2): Y = X*Q'
+ method SPQR_XQ (3): Y = X*Q
+*/
+
+cholmod_dense *SuiteSparseQR_C_qmult /* returns Y, or NULL on failure */
+(
+ /* inputs: */
+ int method, /* 0,1,2,3 */
+ SuiteSparseQR_C_factorization *QR, /* of an m-by-n sparse matrix A */
+ cholmod_dense *X, /* size m-by-n with leading dimension ldx */
+ cholmod_common *cc /* workspace and parameters */
+) ;
+
+#endif
+
+/* ========================================================================== */
+
+#ifdef __cplusplus
+}
+#endif
+#endif