Chris@49
|
1 // Copyright (C) 2008-2012 NICTA (www.nicta.com.au)
|
Chris@49
|
2 // Copyright (C) 2008-2012 Conrad Sanderson
|
Chris@49
|
3 // Copyright (C) 2009 Edmund Highcock
|
Chris@49
|
4 // Copyright (C) 2011 James Sanders
|
Chris@49
|
5 // Copyright (C) 2012 Eric Jon Sundstrom
|
Chris@49
|
6 //
|
Chris@49
|
7 // This Source Code Form is subject to the terms of the Mozilla Public
|
Chris@49
|
8 // License, v. 2.0. If a copy of the MPL was not distributed with this
|
Chris@49
|
9 // file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
Chris@49
|
10
|
Chris@49
|
11
|
Chris@49
|
12
|
Chris@49
|
13 #ifdef ARMA_USE_LAPACK
|
Chris@49
|
14
|
Chris@49
|
15
|
Chris@49
|
16 #if !defined(ARMA_BLAS_CAPITALS)
|
Chris@49
|
17
|
Chris@49
|
18 #define arma_sgetrf sgetrf
|
Chris@49
|
19 #define arma_dgetrf dgetrf
|
Chris@49
|
20 #define arma_cgetrf cgetrf
|
Chris@49
|
21 #define arma_zgetrf zgetrf
|
Chris@49
|
22
|
Chris@49
|
23 #define arma_sgetri sgetri
|
Chris@49
|
24 #define arma_dgetri dgetri
|
Chris@49
|
25 #define arma_cgetri cgetri
|
Chris@49
|
26 #define arma_zgetri zgetri
|
Chris@49
|
27
|
Chris@49
|
28 #define arma_strtri strtri
|
Chris@49
|
29 #define arma_dtrtri dtrtri
|
Chris@49
|
30 #define arma_ctrtri ctrtri
|
Chris@49
|
31 #define arma_ztrtri ztrtri
|
Chris@49
|
32
|
Chris@49
|
33 #define arma_ssyev ssyev
|
Chris@49
|
34 #define arma_dsyev dsyev
|
Chris@49
|
35
|
Chris@49
|
36 #define arma_cheev cheev
|
Chris@49
|
37 #define arma_zheev zheev
|
Chris@49
|
38
|
Chris@49
|
39 #define arma_ssyevd ssyevd
|
Chris@49
|
40 #define arma_dsyevd dsyevd
|
Chris@49
|
41
|
Chris@49
|
42 #define arma_cheevd cheevd
|
Chris@49
|
43 #define arma_zheevd zheevd
|
Chris@49
|
44
|
Chris@49
|
45 #define arma_sgeev sgeev
|
Chris@49
|
46 #define arma_dgeev dgeev
|
Chris@49
|
47
|
Chris@49
|
48 #define arma_cgeev cgeev
|
Chris@49
|
49 #define arma_zgeev zgeev
|
Chris@49
|
50
|
Chris@49
|
51 #define arma_spotrf spotrf
|
Chris@49
|
52 #define arma_dpotrf dpotrf
|
Chris@49
|
53 #define arma_cpotrf cpotrf
|
Chris@49
|
54 #define arma_zpotrf zpotrf
|
Chris@49
|
55
|
Chris@49
|
56 #define arma_spotri spotri
|
Chris@49
|
57 #define arma_dpotri dpotri
|
Chris@49
|
58 #define arma_cpotri cpotri
|
Chris@49
|
59 #define arma_zpotri zpotri
|
Chris@49
|
60
|
Chris@49
|
61 #define arma_sgeqrf sgeqrf
|
Chris@49
|
62 #define arma_dgeqrf dgeqrf
|
Chris@49
|
63 #define arma_cgeqrf cgeqrf
|
Chris@49
|
64 #define arma_zgeqrf zgeqrf
|
Chris@49
|
65
|
Chris@49
|
66 #define arma_sorgqr sorgqr
|
Chris@49
|
67 #define arma_dorgqr dorgqr
|
Chris@49
|
68
|
Chris@49
|
69 #define arma_cungqr cungqr
|
Chris@49
|
70 #define arma_zungqr zungqr
|
Chris@49
|
71
|
Chris@49
|
72 #define arma_sgesvd sgesvd
|
Chris@49
|
73 #define arma_dgesvd dgesvd
|
Chris@49
|
74
|
Chris@49
|
75 #define arma_cgesvd cgesvd
|
Chris@49
|
76 #define arma_zgesvd zgesvd
|
Chris@49
|
77
|
Chris@49
|
78 #define arma_sgesdd sgesdd
|
Chris@49
|
79 #define arma_dgesdd dgesdd
|
Chris@49
|
80 #define arma_cgesdd cgesdd
|
Chris@49
|
81 #define arma_zgesdd zgesdd
|
Chris@49
|
82
|
Chris@49
|
83 #define arma_sgesv sgesv
|
Chris@49
|
84 #define arma_dgesv dgesv
|
Chris@49
|
85 #define arma_cgesv cgesv
|
Chris@49
|
86 #define arma_zgesv zgesv
|
Chris@49
|
87
|
Chris@49
|
88 #define arma_sgels sgels
|
Chris@49
|
89 #define arma_dgels dgels
|
Chris@49
|
90 #define arma_cgels cgels
|
Chris@49
|
91 #define arma_zgels zgels
|
Chris@49
|
92
|
Chris@49
|
93 #define arma_strtrs strtrs
|
Chris@49
|
94 #define arma_dtrtrs dtrtrs
|
Chris@49
|
95 #define arma_ctrtrs ctrtrs
|
Chris@49
|
96 #define arma_ztrtrs ztrtrs
|
Chris@49
|
97
|
Chris@49
|
98 #define arma_sgees sgees
|
Chris@49
|
99 #define arma_dgees dgees
|
Chris@49
|
100 #define arma_cgees cgees
|
Chris@49
|
101 #define arma_zgees zgees
|
Chris@49
|
102
|
Chris@49
|
103 #define arma_strsyl strsyl
|
Chris@49
|
104 #define arma_dtrsyl dtrsyl
|
Chris@49
|
105 #define arma_ctrsyl ctrsyl
|
Chris@49
|
106 #define arma_ztrsyl ztrsyl
|
Chris@49
|
107
|
Chris@49
|
108 #define arma_ssytrf ssytrf
|
Chris@49
|
109 #define arma_dsytrf dsytrf
|
Chris@49
|
110 #define arma_csytrf csytrf
|
Chris@49
|
111 #define arma_zsytrf zsytrf
|
Chris@49
|
112
|
Chris@49
|
113 #define arma_ssytri ssytri
|
Chris@49
|
114 #define arma_dsytri dsytri
|
Chris@49
|
115 #define arma_csytri csytri
|
Chris@49
|
116 #define arma_zsytri zsytri
|
Chris@49
|
117
|
Chris@49
|
118 #else
|
Chris@49
|
119
|
Chris@49
|
120 #define arma_sgetrf SGETRF
|
Chris@49
|
121 #define arma_dgetrf DGETRF
|
Chris@49
|
122 #define arma_cgetrf CGETRF
|
Chris@49
|
123 #define arma_zgetrf ZGETRF
|
Chris@49
|
124
|
Chris@49
|
125 #define arma_sgetri SGETRI
|
Chris@49
|
126 #define arma_dgetri DGETRI
|
Chris@49
|
127 #define arma_cgetri CGETRI
|
Chris@49
|
128 #define arma_zgetri ZGETRI
|
Chris@49
|
129
|
Chris@49
|
130 #define arma_strtri STRTRI
|
Chris@49
|
131 #define arma_dtrtri DTRTRI
|
Chris@49
|
132 #define arma_ctrtri CTRTRI
|
Chris@49
|
133 #define arma_ztrtri ZTRTRI
|
Chris@49
|
134
|
Chris@49
|
135 #define arma_ssyev SSYEV
|
Chris@49
|
136 #define arma_dsyev DSYEV
|
Chris@49
|
137
|
Chris@49
|
138 #define arma_cheev CHEEV
|
Chris@49
|
139 #define arma_zheev ZHEEV
|
Chris@49
|
140
|
Chris@49
|
141 #define arma_ssyevd SSYEVD
|
Chris@49
|
142 #define arma_dsyevd DSYEVD
|
Chris@49
|
143
|
Chris@49
|
144 #define arma_cheevd CHEEVD
|
Chris@49
|
145 #define arma_zheevd ZHEEVD
|
Chris@49
|
146
|
Chris@49
|
147 #define arma_sgeev SGEEV
|
Chris@49
|
148 #define arma_dgeev DGEEV
|
Chris@49
|
149
|
Chris@49
|
150 #define arma_cgeev CGEEV
|
Chris@49
|
151 #define arma_zgeev ZGEEV
|
Chris@49
|
152
|
Chris@49
|
153 #define arma_spotrf SPOTRF
|
Chris@49
|
154 #define arma_dpotrf DPOTRF
|
Chris@49
|
155 #define arma_cpotrf CPOTRF
|
Chris@49
|
156 #define arma_zpotrf ZPOTRF
|
Chris@49
|
157
|
Chris@49
|
158 #define arma_spotri SPOTRI
|
Chris@49
|
159 #define arma_dpotri DPOTRI
|
Chris@49
|
160 #define arma_cpotri CPOTRI
|
Chris@49
|
161 #define arma_zpotri ZPOTRI
|
Chris@49
|
162
|
Chris@49
|
163 #define arma_sgeqrf SGEQRF
|
Chris@49
|
164 #define arma_dgeqrf DGEQRF
|
Chris@49
|
165 #define arma_cgeqrf CGEQRF
|
Chris@49
|
166 #define arma_zgeqrf ZGEQRF
|
Chris@49
|
167
|
Chris@49
|
168 #define arma_sorgqr SORGQR
|
Chris@49
|
169 #define arma_dorgqr DORGQR
|
Chris@49
|
170
|
Chris@49
|
171 #define arma_cungqr CUNGQR
|
Chris@49
|
172 #define arma_zungqr ZUNGQR
|
Chris@49
|
173
|
Chris@49
|
174 #define arma_sgesvd SGESVD
|
Chris@49
|
175 #define arma_dgesvd DGESVD
|
Chris@49
|
176
|
Chris@49
|
177 #define arma_cgesvd CGESVD
|
Chris@49
|
178 #define arma_zgesvd ZGESVD
|
Chris@49
|
179
|
Chris@49
|
180 #define arma_sgesdd SGESDD
|
Chris@49
|
181 #define arma_dgesdd DGESDD
|
Chris@49
|
182 #define arma_cgesdd CGESDD
|
Chris@49
|
183 #define arma_zgesdd ZGESDD
|
Chris@49
|
184
|
Chris@49
|
185 #define arma_sgesv SGESV
|
Chris@49
|
186 #define arma_dgesv DGESV
|
Chris@49
|
187 #define arma_cgesv CGESV
|
Chris@49
|
188 #define arma_zgesv ZGESV
|
Chris@49
|
189
|
Chris@49
|
190 #define arma_sgels SGELS
|
Chris@49
|
191 #define arma_dgels DGELS
|
Chris@49
|
192 #define arma_cgels CGELS
|
Chris@49
|
193 #define arma_zgels ZGELS
|
Chris@49
|
194
|
Chris@49
|
195 #define arma_strtrs STRTRS
|
Chris@49
|
196 #define arma_dtrtrs DTRTRS
|
Chris@49
|
197 #define arma_ctrtrs CTRTRS
|
Chris@49
|
198 #define arma_ztrtrs ZTRTRS
|
Chris@49
|
199
|
Chris@49
|
200 #define arma_sgees SGEES
|
Chris@49
|
201 #define arma_dgees DGEES
|
Chris@49
|
202 #define arma_cgees CGEES
|
Chris@49
|
203 #define arma_zgees ZGEES
|
Chris@49
|
204
|
Chris@49
|
205 #define arma_strsyl STRSYL
|
Chris@49
|
206 #define arma_dtrsyl DTRSYL
|
Chris@49
|
207 #define arma_ctrsyl CTRSYL
|
Chris@49
|
208 #define arma_ztrsyl ZTRSYL
|
Chris@49
|
209
|
Chris@49
|
210 #define arma_ssytrf SSYTRF
|
Chris@49
|
211 #define arma_dsytrf DSYTRF
|
Chris@49
|
212 #define arma_csytrf CSYTRF
|
Chris@49
|
213 #define arma_zsytrf ZSYTRF
|
Chris@49
|
214
|
Chris@49
|
215 #define arma_ssytri SSYTRI
|
Chris@49
|
216 #define arma_dsytri DSYTRI
|
Chris@49
|
217 #define arma_csytri CSYTRI
|
Chris@49
|
218 #define arma_zsytri ZSYTRI
|
Chris@49
|
219
|
Chris@49
|
220 #endif
|
Chris@49
|
221
|
Chris@49
|
222
|
Chris@49
|
223
|
Chris@49
|
224 extern "C"
|
Chris@49
|
225 {
|
Chris@49
|
226 // LU factorisation
|
Chris@49
|
227 void arma_fortran(arma_sgetrf)(blas_int* m, blas_int* n, float* a, blas_int* lda, blas_int* ipiv, blas_int* info);
|
Chris@49
|
228 void arma_fortran(arma_dgetrf)(blas_int* m, blas_int* n, double* a, blas_int* lda, blas_int* ipiv, blas_int* info);
|
Chris@49
|
229 void arma_fortran(arma_cgetrf)(blas_int* m, blas_int* n, void* a, blas_int* lda, blas_int* ipiv, blas_int* info);
|
Chris@49
|
230 void arma_fortran(arma_zgetrf)(blas_int* m, blas_int* n, void* a, blas_int* lda, blas_int* ipiv, blas_int* info);
|
Chris@49
|
231
|
Chris@49
|
232 // matrix inversion (using LU factorisation result)
|
Chris@49
|
233 void arma_fortran(arma_sgetri)(blas_int* n, float* a, blas_int* lda, blas_int* ipiv, float* work, blas_int* lwork, blas_int* info);
|
Chris@49
|
234 void arma_fortran(arma_dgetri)(blas_int* n, double* a, blas_int* lda, blas_int* ipiv, double* work, blas_int* lwork, blas_int* info);
|
Chris@49
|
235 void arma_fortran(arma_cgetri)(blas_int* n, void* a, blas_int* lda, blas_int* ipiv, void* work, blas_int* lwork, blas_int* info);
|
Chris@49
|
236 void arma_fortran(arma_zgetri)(blas_int* n, void* a, blas_int* lda, blas_int* ipiv, void* work, blas_int* lwork, blas_int* info);
|
Chris@49
|
237
|
Chris@49
|
238 // matrix inversion (triangular matrices)
|
Chris@49
|
239 void arma_fortran(arma_strtri)(char* uplo, char* diag, blas_int* n, float* a, blas_int* lda, blas_int* info);
|
Chris@49
|
240 void arma_fortran(arma_dtrtri)(char* uplo, char* diag, blas_int* n, double* a, blas_int* lda, blas_int* info);
|
Chris@49
|
241 void arma_fortran(arma_ctrtri)(char* uplo, char* diag, blas_int* n, void* a, blas_int* lda, blas_int* info);
|
Chris@49
|
242 void arma_fortran(arma_ztrtri)(char* uplo, char* diag, blas_int* n, void* a, blas_int* lda, blas_int* info);
|
Chris@49
|
243
|
Chris@49
|
244 // eigenvector decomposition of symmetric real matrices
|
Chris@49
|
245 void arma_fortran(arma_ssyev)(char* jobz, char* uplo, blas_int* n, float* a, blas_int* lda, float* w, float* work, blas_int* lwork, blas_int* info);
|
Chris@49
|
246 void arma_fortran(arma_dsyev)(char* jobz, char* uplo, blas_int* n, double* a, blas_int* lda, double* w, double* work, blas_int* lwork, blas_int* info);
|
Chris@49
|
247
|
Chris@49
|
248 // eigenvector decomposition of hermitian matrices (complex)
|
Chris@49
|
249 void arma_fortran(arma_cheev)(char* jobz, char* uplo, blas_int* n, void* a, blas_int* lda, float* w, void* work, blas_int* lwork, float* rwork, blas_int* info);
|
Chris@49
|
250 void arma_fortran(arma_zheev)(char* jobz, char* uplo, blas_int* n, void* a, blas_int* lda, double* w, void* work, blas_int* lwork, double* rwork, blas_int* info);
|
Chris@49
|
251
|
Chris@49
|
252 // eigenvector decomposition of symmetric real matrices by divide and conquer
|
Chris@49
|
253 void arma_fortran(arma_ssyevd)(char* jobz, char* uplo, blas_int* n, float* a, blas_int* lda, float* w, float* work, blas_int* lwork, blas_int* iwork, blas_int* liwork, blas_int* info);
|
Chris@49
|
254 void arma_fortran(arma_dsyevd)(char* jobz, char* uplo, blas_int* n, double* a, blas_int* lda, double* w, double* work, blas_int* lwork, blas_int* iwork, blas_int* liwork, blas_int* info);
|
Chris@49
|
255
|
Chris@49
|
256 // eigenvector decomposition of hermitian matrices (complex) by divide and conquer
|
Chris@49
|
257 void arma_fortran(arma_cheevd)(char* jobz, char* uplo, blas_int* n, void* a, blas_int* lda, float* w, void* work, blas_int* lwork, float* rwork, blas_int* lrwork, blas_int* iwork, blas_int* liwork, blas_int* info);
|
Chris@49
|
258 void arma_fortran(arma_zheevd)(char* jobz, char* uplo, blas_int* n, void* a, blas_int* lda, double* w, void* work, blas_int* lwork, double* rwork, blas_int* lrwork, blas_int* iwork, blas_int* liwork, blas_int* info);
|
Chris@49
|
259
|
Chris@49
|
260 // eigenvector decomposition of general real matrices
|
Chris@49
|
261 void arma_fortran(arma_sgeev)(char* jobvl, char* jobvr, blas_int* n, float* a, blas_int* lda, float* wr, float* wi, float* vl, blas_int* ldvl, float* vr, blas_int* ldvr, float* work, blas_int* lwork, blas_int* info);
|
Chris@49
|
262 void arma_fortran(arma_dgeev)(char* jobvl, char* jobvr, blas_int* n, double* a, blas_int* lda, double* wr, double* wi, double* vl, blas_int* ldvl, double* vr, blas_int* ldvr, double* work, blas_int* lwork, blas_int* info);
|
Chris@49
|
263
|
Chris@49
|
264 // eigenvector decomposition of general complex matrices
|
Chris@49
|
265 void arma_fortran(arma_cgeev)(char* jobvl, char* jobvr, blas_int* n, void* a, blas_int* lda, void* w, void* vl, blas_int* ldvl, void* vr, blas_int* ldvr, void* work, blas_int* lwork, float* rwork, blas_int* info);
|
Chris@49
|
266 void arma_fortran(arma_zgeev)(char* jobvl, char* jobvr, blas_int* n, void* a, blas_int* lda, void* w, void* vl, blas_int* ldvl, void* vr, blas_int* ldvr, void* work, blas_int* lwork, double* rwork, blas_int* info);
|
Chris@49
|
267
|
Chris@49
|
268 // Cholesky decomposition
|
Chris@49
|
269 void arma_fortran(arma_spotrf)(char* uplo, blas_int* n, float* a, blas_int* lda, blas_int* info);
|
Chris@49
|
270 void arma_fortran(arma_dpotrf)(char* uplo, blas_int* n, double* a, blas_int* lda, blas_int* info);
|
Chris@49
|
271 void arma_fortran(arma_cpotrf)(char* uplo, blas_int* n, void* a, blas_int* lda, blas_int* info);
|
Chris@49
|
272 void arma_fortran(arma_zpotrf)(char* uplo, blas_int* n, void* a, blas_int* lda, blas_int* info);
|
Chris@49
|
273
|
Chris@49
|
274 // matrix inversion (using Cholesky decomposition result)
|
Chris@49
|
275 void arma_fortran(arma_spotri)(char* uplo, blas_int* n, float* a, blas_int* lda, blas_int* info);
|
Chris@49
|
276 void arma_fortran(arma_dpotri)(char* uplo, blas_int* n, double* a, blas_int* lda, blas_int* info);
|
Chris@49
|
277 void arma_fortran(arma_cpotri)(char* uplo, blas_int* n, void* a, blas_int* lda, blas_int* info);
|
Chris@49
|
278 void arma_fortran(arma_zpotri)(char* uplo, blas_int* n, void* a, blas_int* lda, blas_int* info);
|
Chris@49
|
279
|
Chris@49
|
280 // QR decomposition
|
Chris@49
|
281 void arma_fortran(arma_sgeqrf)(blas_int* m, blas_int* n, float* a, blas_int* lda, float* tau, float* work, blas_int* lwork, blas_int* info);
|
Chris@49
|
282 void arma_fortran(arma_dgeqrf)(blas_int* m, blas_int* n, double* a, blas_int* lda, double* tau, double* work, blas_int* lwork, blas_int* info);
|
Chris@49
|
283 void arma_fortran(arma_cgeqrf)(blas_int* m, blas_int* n, void* a, blas_int* lda, void* tau, void* work, blas_int* lwork, blas_int* info);
|
Chris@49
|
284 void arma_fortran(arma_zgeqrf)(blas_int* m, blas_int* n, void* a, blas_int* lda, void* tau, void* work, blas_int* lwork, blas_int* info);
|
Chris@49
|
285
|
Chris@49
|
286 // Q matrix calculation from QR decomposition (real matrices)
|
Chris@49
|
287 void arma_fortran(arma_sorgqr)(blas_int* m, blas_int* n, blas_int* k, float* a, blas_int* lda, float* tau, float* work, blas_int* lwork, blas_int* info);
|
Chris@49
|
288 void arma_fortran(arma_dorgqr)(blas_int* m, blas_int* n, blas_int* k, double* a, blas_int* lda, double* tau, double* work, blas_int* lwork, blas_int* info);
|
Chris@49
|
289
|
Chris@49
|
290 // Q matrix calculation from QR decomposition (complex matrices)
|
Chris@49
|
291 void arma_fortran(arma_cungqr)(blas_int* m, blas_int* n, blas_int* k, void* a, blas_int* lda, void* tau, void* work, blas_int* lwork, blas_int* info);
|
Chris@49
|
292 void arma_fortran(arma_zungqr)(blas_int* m, blas_int* n, blas_int* k, void* a, blas_int* lda, void* tau, void* work, blas_int* lwork, blas_int* info);
|
Chris@49
|
293
|
Chris@49
|
294 // SVD (real matrices)
|
Chris@49
|
295 void arma_fortran(arma_sgesvd)(char* jobu, char* jobvt, blas_int* m, blas_int* n, float* a, blas_int* lda, float* s, float* u, blas_int* ldu, float* vt, blas_int* ldvt, float* work, blas_int* lwork, blas_int* info);
|
Chris@49
|
296 void arma_fortran(arma_dgesvd)(char* jobu, char* jobvt, blas_int* m, blas_int* n, double* a, blas_int* lda, double* s, double* u, blas_int* ldu, double* vt, blas_int* ldvt, double* work, blas_int* lwork, blas_int* info);
|
Chris@49
|
297
|
Chris@49
|
298 // SVD (complex matrices)
|
Chris@49
|
299 void arma_fortran(arma_cgesvd)(char* jobu, char* jobvt, blas_int* m, blas_int* n, void* a, blas_int* lda, float* s, void* u, blas_int* ldu, void* vt, blas_int* ldvt, void* work, blas_int* lwork, float* rwork, blas_int* info);
|
Chris@49
|
300 void arma_fortran(arma_zgesvd)(char* jobu, char* jobvt, blas_int* m, blas_int* n, void* a, blas_int* lda, double* s, void* u, blas_int* ldu, void* vt, blas_int* ldvt, void* work, blas_int* lwork, double* rwork, blas_int* info);
|
Chris@49
|
301
|
Chris@49
|
302 // SVD (real matrices) by divide and conquer
|
Chris@49
|
303 void arma_fortran(arma_sgesdd)(char* jobz, blas_int* m, blas_int* n, float* a, blas_int* lda, float* s, float* u, blas_int* ldu, float* vt, blas_int* ldvt, float* work, blas_int* lwork, blas_int* iwork, blas_int* info);
|
Chris@49
|
304 void arma_fortran(arma_dgesdd)(char* jobz, blas_int* m, blas_int* n, double* a, blas_int* lda, double* s, double* u, blas_int* ldu, double* vt, blas_int* ldvt, double* work, blas_int* lwork, blas_int* iwork, blas_int* info);
|
Chris@49
|
305
|
Chris@49
|
306 // SVD (complex matrices) by divide and conquer
|
Chris@49
|
307 void arma_fortran(arma_cgesdd)(char* jobz, blas_int* m, blas_int* n, void* a, blas_int* lda, float* s, void* u, blas_int* ldu, void* vt, blas_int* ldvt, void* work, blas_int* lwork, float* rwork, blas_int* iwork, blas_int* info);
|
Chris@49
|
308 void arma_fortran(arma_zgesdd)(char* jobz, blas_int* m, blas_int* n, void* a, blas_int* lda, double* s, void* u, blas_int* ldu, void* vt, blas_int* ldvt, void* work, blas_int* lwork, double* rwork, blas_int* iwork, blas_int* info);
|
Chris@49
|
309
|
Chris@49
|
310 // solve system of linear equations, using LU decomposition
|
Chris@49
|
311 void arma_fortran(arma_sgesv)(blas_int* n, blas_int* nrhs, float* a, blas_int* lda, blas_int* ipiv, float* b, blas_int* ldb, blas_int* info);
|
Chris@49
|
312 void arma_fortran(arma_dgesv)(blas_int* n, blas_int* nrhs, double* a, blas_int* lda, blas_int* ipiv, double* b, blas_int* ldb, blas_int* info);
|
Chris@49
|
313 void arma_fortran(arma_cgesv)(blas_int* n, blas_int* nrhs, void* a, blas_int* lda, blas_int* ipiv, void* b, blas_int* ldb, blas_int* info);
|
Chris@49
|
314 void arma_fortran(arma_zgesv)(blas_int* n, blas_int* nrhs, void* a, blas_int* lda, blas_int* ipiv, void* b, blas_int* ldb, blas_int* info);
|
Chris@49
|
315
|
Chris@49
|
316 // solve over/underdetermined system of linear equations
|
Chris@49
|
317 void arma_fortran(arma_sgels)(char* trans, blas_int* m, blas_int* n, blas_int* nrhs, float* a, blas_int* lda, float* b, blas_int* ldb, float* work, blas_int* lwork, blas_int* info);
|
Chris@49
|
318 void arma_fortran(arma_dgels)(char* trans, blas_int* m, blas_int* n, blas_int* nrhs, double* a, blas_int* lda, double* b, blas_int* ldb, double* work, blas_int* lwork, blas_int* info);
|
Chris@49
|
319 void arma_fortran(arma_cgels)(char* trans, blas_int* m, blas_int* n, blas_int* nrhs, void* a, blas_int* lda, void* b, blas_int* ldb, void* work, blas_int* lwork, blas_int* info);
|
Chris@49
|
320 void arma_fortran(arma_zgels)(char* trans, blas_int* m, blas_int* n, blas_int* nrhs, void* a, blas_int* lda, void* b, blas_int* ldb, void* work, blas_int* lwork, blas_int* info);
|
Chris@49
|
321
|
Chris@49
|
322 // solve a triangular system of linear equations
|
Chris@49
|
323 void arma_fortran(arma_strtrs)(char* uplo, char* trans, char* diag, blas_int* n, blas_int* nrhs, const float* a, blas_int* lda, float* b, blas_int* ldb, blas_int* info);
|
Chris@49
|
324 void arma_fortran(arma_dtrtrs)(char* uplo, char* trans, char* diag, blas_int* n, blas_int* nrhs, const double* a, blas_int* lda, double* b, blas_int* ldb, blas_int* info);
|
Chris@49
|
325 void arma_fortran(arma_ctrtrs)(char* uplo, char* trans, char* diag, blas_int* n, blas_int* nrhs, const void* a, blas_int* lda, void* b, blas_int* ldb, blas_int* info);
|
Chris@49
|
326 void arma_fortran(arma_ztrtrs)(char* uplo, char* trans, char* diag, blas_int* n, blas_int* nrhs, const void* a, blas_int* lda, void* b, blas_int* ldb, blas_int* info);
|
Chris@49
|
327
|
Chris@49
|
328 // Schur decomposition (real matrices)
|
Chris@49
|
329 void arma_fortran(arma_sgees)(char* jobvs, char* sort, blas_int* select, blas_int* n, float* a, blas_int* lda, blas_int* sdim, float* wr, float* wi, float* vs, blas_int* ldvs, float* work, blas_int* lwork, blas_int* bwork, blas_int* info);
|
Chris@49
|
330 void arma_fortran(arma_dgees)(char* jobvs, char* sort, blas_int* select, blas_int* n, double* a, blas_int* lda, blas_int* sdim, double* wr, double* wi, double* vs, blas_int* ldvs, double* work, blas_int* lwork, blas_int* bwork, blas_int* info);
|
Chris@49
|
331
|
Chris@49
|
332 // Schur decomposition (complex matrices)
|
Chris@49
|
333 void arma_fortran(arma_cgees)(char* jobvs, char* sort, blas_int* select, blas_int* n, void* a, blas_int* lda, blas_int* sdim, void* w, void* vs, blas_int* ldvs, void* work, blas_int* lwork, float* rwork, blas_int* bwork, blas_int* info);
|
Chris@49
|
334 void arma_fortran(arma_zgees)(char* jobvs, char* sort, blas_int* select, blas_int* n, void* a, blas_int* lda, blas_int* sdim, void* w, void* vs, blas_int* ldvs, void* work, blas_int* lwork, double* rwork, blas_int* bwork, blas_int* info);
|
Chris@49
|
335
|
Chris@49
|
336 // solve a Sylvester equation ax + xb = c, with a and b assumed to be in Schur form
|
Chris@49
|
337 void arma_fortran(arma_strsyl)(char* transa, char* transb, blas_int* isgn, blas_int* m, blas_int* n, const float* a, blas_int* lda, const float* b, blas_int* ldb, float* c, blas_int* ldc, float* scale, blas_int* info);
|
Chris@49
|
338 void arma_fortran(arma_dtrsyl)(char* transa, char* transb, blas_int* isgn, blas_int* m, blas_int* n, const double* a, blas_int* lda, const double* b, blas_int* ldb, double* c, blas_int* ldc, double* scale, blas_int* info);
|
Chris@49
|
339 void arma_fortran(arma_ctrsyl)(char* transa, char* transb, blas_int* isgn, blas_int* m, blas_int* n, const void* a, blas_int* lda, const void* b, blas_int* ldb, void* c, blas_int* ldc, float* scale, blas_int* info);
|
Chris@49
|
340 void arma_fortran(arma_ztrsyl)(char* transa, char* transb, blas_int* isgn, blas_int* m, blas_int* n, const void* a, blas_int* lda, const void* b, blas_int* ldb, void* c, blas_int* ldc, double* scale, blas_int* info);
|
Chris@49
|
341
|
Chris@49
|
342 void arma_fortran(arma_ssytrf)(char* uplo, blas_int* n, float* a, blas_int* lda, blas_int* ipiv, float* work, blas_int* lwork, blas_int* info);
|
Chris@49
|
343 void arma_fortran(arma_dsytrf)(char* uplo, blas_int* n, double* a, blas_int* lda, blas_int* ipiv, double* work, blas_int* lwork, blas_int* info);
|
Chris@49
|
344 void arma_fortran(arma_csytrf)(char* uplo, blas_int* n, void* a, blas_int* lda, blas_int* ipiv, void* work, blas_int* lwork, blas_int* info);
|
Chris@49
|
345 void arma_fortran(arma_zsytrf)(char* uplo, blas_int* n, void* a, blas_int* lda, blas_int* ipiv, void* work, blas_int* lwork, blas_int* info);
|
Chris@49
|
346
|
Chris@49
|
347 void arma_fortran(arma_ssytri)(char* uplo, blas_int* n, float* a, blas_int* lda, blas_int* ipiv, float* work, blas_int* info);
|
Chris@49
|
348 void arma_fortran(arma_dsytri)(char* uplo, blas_int* n, double* a, blas_int* lda, blas_int* ipiv, double* work, blas_int* info);
|
Chris@49
|
349 void arma_fortran(arma_csytri)(char* uplo, blas_int* n, void* a, blas_int* lda, blas_int* ipiv, void* work, blas_int* info);
|
Chris@49
|
350 void arma_fortran(arma_zsytri)(char* uplo, blas_int* n, void* a, blas_int* lda, blas_int* ipiv, void* work, blas_int* info);
|
Chris@49
|
351
|
Chris@49
|
352 // void arma_fortran(arma_dgeqp3)(blas_int* m, blas_int* n, double* a, blas_int* lda, blas_int* jpvt, double* tau, double* work, blas_int* lwork, blas_int* info);
|
Chris@49
|
353 // void arma_fortran(arma_dormqr)(char* side, char* trans, blas_int* m, blas_int* n, blas_int* k, double* a, blas_int* lda, double* tau, double* c, blas_int* ldc, double* work, blas_int* lwork, blas_int* info);
|
Chris@49
|
354 // void arma_fortran(arma_dposv)(char* uplo, blas_int* n, blas_int* nrhs, double* a, blas_int* lda, double* b, blas_int* ldb, blas_int* info);
|
Chris@49
|
355 }
|
Chris@49
|
356
|
Chris@49
|
357
|
Chris@49
|
358 #endif
|