annotate armadillo-3.900.4/include/armadillo_bits/lapack_bones.hpp @ 84:55a047986812 tip

Update library URI so as not to be document-local
author Chris Cannam
date Wed, 22 Apr 2020 14:21:57 +0100
parents 1ec0e2823891
children
rev   line source
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