My Project
dlapack.h
1 extern "C" {
2  // Solve Linear Equations A * x = b
3  /* for General Matrix */
4  void dgesv_( const long &N, const long &nrhs, double *a, const long &lda,
5  long *ipiv, double *b, const long &ldb, long &info );
6  /* for General Band Matrix */
7  void dgbsv_( const long &N, const long &KL, const long &KU,
8  const long &nrhs, double *ab, const long &ldab,
9  long *ipiv, double *b, const long &ldb, long &info );
10  /* for Tridiagonal Matrix */
11  void dgtsv_( const long &N, const long &nrhs, double *dl, double *d,
12  double *du, double *b, const long &ldb, long &info );
13  /* for Symmetric Positive Definite Matrix */
14  void dposv_( const char &uplo, const long &N, const long &nrhs,
15  double *a, const long &lda, double *b, const long &ldb,
16  long &info );
17  /* for Symmetric Positive Definite (Packed Storage) Matrix */
18  void dppsv_( const char &uplo, const long &N, const long &nrhs,
19  double *ap, double *b, const long &ldb, long &info );
20  /* for Symmetric Positive Definite Band Matrix */
21  void dpbsv_( const char &uplo, const long &N, const long &kd,
22  const long &nrhs, double *ab, const long &ldab,
23  double *b, const long &ldb, long &info );
24  /* for Symmetric Positive Definite Tridiagonal Matrix */
25  void dptsv_( const long &N, const long &nrhs, double *d, double *e,
26  double *b, const long &ldb, long &info );
27  /* for Symmetric Indefinite Matrix */
28  void dsysv_( const char &uplo, const long &N, const long &nrhs,
29  double *a, const long &lda, long *ipiv, double *b,
30  const long &ldb, double *work, const long &lwork,
31  long &info );
32  /* for Symmetric Indefinite (Packed Storage) Matrix */
33  void dspsv_( const char &uplo, const long &N, const long &nrhs,
34  double *ap, long *ipiv, double *b, const long &ldb,
35  long &info );
36 
37  // Linear Least Square Problems
38  // Solve Overdetermined or Underdetermined Linear Equations
39  /* Using Orthogonal Factorization, Assuming Full Rank */
40  void dgels_( const char &trans, const long &M, const long &N,
41  const long &nrhs, double *a, const long &lda,
42  double *b, const long &ldb,
43  double *work, const long &lwork, long &info );
44  /* Compute Minimum-Norm Solution using Orthogonal Factorization */
45  void dgelsy_( const long &M, const long &N, const long &nrhs,
46  double *a, const long &lda, double *b, const long &ldb,
47  long *jpvt, const double &rcond, long &rank,
48  double *work, const long &lwork, long &info );
49  /* Compulte Minimum-Norm Solution using Singular Value Decomposition */
50  void dgelss_( const long &M, const long &N, const long &nrhs,
51  double *a, const long &lda, double *b, const long &ldb,
52  double *s, const double &rcond, long &rank,
53  double *work, const long &lwork, long &info );
54  /* Solve Linear Equality-Constrained Least Squares (LSE) Problem */
55  void dgglse_( const long &M, const long &N, const long &p, double *a,
56  const long &lda, double *b, const long &ldb,
57  double *c, double *d, double *x, double *work,
58  const long &lwork, long &info );
59  /* Solve Gauss-Markov Linear Model (GLM) Problem */
60  void dggglm_( const long &N, const long &M, const long &p,
61  double *a, const long &lda, double *b, const long &ldb,
62  double *d, double *x, double *y,
63  double *work, const long &lwork, long &info );
64 
65  // Standard Eigenvalue and Singular Value Problems
66  // Divide and Conquer routines are more fast, but need more memory.
67  /* Eigenvalues/Eigenvectors for General Matrix */
68  void dgeev_( const char &jobvl, const char &jobvr, const long &N,
69  double *a, const long &lda, double *wr, double *wi,
70  double *vl, const long &ldvl, double *vr, const long &ldvr,
71  double *work, const long &lwork, long &info );
72  /* Eigenvalues/Eigenvectors for Symmetric Matrix */
73  void dsyev_( const char &jobz, const char &uplo, const long &N,
74  double *a, const long &lda, double *w, double *work,
75  const long &lwork, long &info );
76  void dsyevd_( const char &jobz, const char &uplo, const long &N,
77  double *a, const long &lda, double *w, double *work,
78  const long &lwork, long *iwork, const long &liwork,
79  long &info ); /* Divide and Conqure */
80  /* Eigenvalues/Eigenvectors for Symmetric (Packed Storage) Matrix */
81  void dspev_( const char &jobz, const char &uplo, const long &N,
82  double *ap, double *w, double *z, const long &ldz,
83  double *work, long &info );
84  void dspevd_( const char &jobz, const char &uplo, const long &N,
85  double *ap, double *w, double *z, const long &ldz,
86  double *work, const long &lwork, long *iwork,
87  const long &liwork, long &info ); /* Divide and Conqure */
88  /* Eigenvalues/Eigenvectors for Symmetric Band Matrix */
89  void dsbev_( const char &jobz, const char &uplo, const long &N,
90  const long &kd, double *ab, const long &ldab, double *w,
91  double *z, const long &ldz, double *work, long &info );
92  void dsbevd_( const char &jobz, const char &uplo, const long &N,
93  const long &kd, double *ab, const long &ldab, double *w,
94  double *z, const long &ldz, double *work,
95  const long &lwork, long *iwork, const long &liwork,
96  long &info ); /* Divide and Conqure */
97  /* Eigenvalues/Eigenvectors for Symmetric Tridiagonal Matrix */
98  void dstev_( const char &jobz, const long &N, double *d, double *e,
99  double *z, const long &ldz, double *work, long &info );
100  void dstevd_( const char &jobz, const long &N, double *d, double *e,
101  double *z, const long &ldz, double *work,
102  const long &lwork, long *iwork, const long &liwork,
103  long &info ); /* Divide and Conqure */
104  /* Schur Factorization for General Matrix */
105  void dgees_( const char &jobvs, const char &sort,
106  bool (*select)( double *, double * ),
107  const long &N, double *a, const long &lda, long &sdim,
108  double *wr, double *wi, double *vs, const long &ldvs,
109  double *work, const long &lwork, bool *bwork,
110  long &info );
111  /* Singular Value Decomposition for General Matrix */
112  void dgesvd_( const char &jobu, const char &jobvt, const long &M,
113  const long &N, double *a, const long &lda, double *s,
114  double *u, const long &ldu, double *vt, const long &ldvt,
115  double *work, const long &lwork, long &info );
116  void dgesdd_( const char &jobz, const long &M, const long &N, double *a,
117  const long &lda, double *s, double *u, const long &ldu,
118  double *vt, const long &ldvt, double *work,
119  const long &lwork, long *iwork,
120  long &info ); /* Divide and Conqure */
121 
122  // Generalized Eigenvalue and Sigular Value Problems
123  /* Generalized Eigenvalues/Eigenvectors for General Matrix */
124  void dggev_( const char &jobvl, const char &jobvr, const long &N,
125  double *a, const long &lda, double *b, const long &ldb,
126  double *alphar, double *alphai, double *beta,
127  double *vl, const long &ldvl, double *vr, const long &ldvr,
128  double *work, const long &lwork, long &info );
129  /* Generalized Eigenvalues/Eigenvectors
130  for Symmetric-definite Matrix */
131  void dsygv_( const long &itype, const char &jobz, const char &uplo,
132  const long &N, double *a, const long &lda, double *b,
133  const long &ldb, double *w, double *work, const long &lwork,
134  long &info );
135  void dsygvd_( const long &itype, const char &jobz, const char &uplo,
136  const long &N, double *a, const long &lda, double *b,
137  const long &ldb, double *w, double *work,
138  const long &lwork, long *iwork, const long &liwork,
139  long &info ); /* Divide and Conqure */
140  /* Generalized Eigenvalues/Eigenvectors
141  for Symmetric-definite (Packed Storage) Matrix */
142  void dspgv_( const long &itype, const char &jobz, const char &uplo,
143  const long &N, double *ap, double *bp, double *w,
144  double *z, const long &ldz, double *work, long &info );
145  void dspgvd_( const long &itype, const char &jobz, const char &uplo,
146  const long &N, double *ap, double *bp, double *w,
147  double *z, const long &ldz, double *work,
148  const long &lwork, long *iwork, const long &liwork,
149  long &info ); /* Divide and Conqure */
150  /* Generalized Eigenvalues/Eigenvectors
151  Symmetric-definite Band Matrix */
152  void dsbgv_( const char &jobz, const char &uplo, const long &N,
153  const long &ka, const long &kb, double *ab, const long &ldab,
154  double *bb, const long &ldbb, double *w, double *z,
155  const long &ldz, double *work, long &info );
156  void dsbgvd_( const char &jobz, const char &uplo, const long &N,
157  const long &ka, const long &kb, double *ab,
158  const long &ldab, double *bb, const long &ldbb, double *w,
159  double *z, const long &ldz, double *work,
160  const long &lwork, long *iwork, const long &liwork,
161  long &info ); /* Divide and Conqure */
162  /* Generalized Schur Factrization for General Matrix */
163  void dgges_( const char &jobvsl, const char &jobvsr, const char &sort,
164  long (*delctg)( double *, double *, double * ),
165  const long &N, double *a, const long &lda, double *b,
166  const long &ldb, long &sdim, double *alphar, double *alphai,
167  double *beta, double *vsl, const long &ldvsl, double *vsr,
168  const long &ldvsr, double *work, const long &lwork,
169  bool *bwork, long &info );
170  /* Generailized Singular Value Decomposition for General Matrix */
171  void dggsvd_( const char &jobu, const char &jobv, const char &jobq,
172  const long &M, const long &N, const long &p, long &k,
173  long &L, double *a, const long &lda, double *b,
174  const long &ldb, double *alpha, double *beta,
175  double *u, const long &ldu, double *v, const long &ldv,
176  double *q, const long &ldq, double *work, long *iwork,
177  long &info );
178 }
long L
vector size
Definition: _drovector.hpp:7