Chris@49: // Copyright (C) 2008-2012 NICTA (www.nicta.com.au) Chris@49: // Copyright (C) 2008-2012 Conrad Sanderson Chris@49: // Copyright (C) 2009 Edmund Highcock Chris@49: // Copyright (C) 2011 James Sanders Chris@49: // Copyright (C) 2012 Eric Jon Sundstrom Chris@49: // Chris@49: // This Source Code Form is subject to the terms of the Mozilla Public Chris@49: // License, v. 2.0. If a copy of the MPL was not distributed with this Chris@49: // file, You can obtain one at http://mozilla.org/MPL/2.0/. Chris@49: Chris@49: Chris@49: Chris@49: #ifdef ARMA_USE_LAPACK Chris@49: Chris@49: Chris@49: #if !defined(ARMA_BLAS_CAPITALS) Chris@49: Chris@49: #define arma_sgetrf sgetrf Chris@49: #define arma_dgetrf dgetrf Chris@49: #define arma_cgetrf cgetrf Chris@49: #define arma_zgetrf zgetrf Chris@49: Chris@49: #define arma_sgetri sgetri Chris@49: #define arma_dgetri dgetri Chris@49: #define arma_cgetri cgetri Chris@49: #define arma_zgetri zgetri Chris@49: Chris@49: #define arma_strtri strtri Chris@49: #define arma_dtrtri dtrtri Chris@49: #define arma_ctrtri ctrtri Chris@49: #define arma_ztrtri ztrtri Chris@49: Chris@49: #define arma_ssyev ssyev Chris@49: #define arma_dsyev dsyev Chris@49: Chris@49: #define arma_cheev cheev Chris@49: #define arma_zheev zheev Chris@49: Chris@49: #define arma_ssyevd ssyevd Chris@49: #define arma_dsyevd dsyevd Chris@49: Chris@49: #define arma_cheevd cheevd Chris@49: #define arma_zheevd zheevd Chris@49: Chris@49: #define arma_sgeev sgeev Chris@49: #define arma_dgeev dgeev Chris@49: Chris@49: #define arma_cgeev cgeev Chris@49: #define arma_zgeev zgeev Chris@49: Chris@49: #define arma_spotrf spotrf Chris@49: #define arma_dpotrf dpotrf Chris@49: #define arma_cpotrf cpotrf Chris@49: #define arma_zpotrf zpotrf Chris@49: Chris@49: #define arma_spotri spotri Chris@49: #define arma_dpotri dpotri Chris@49: #define arma_cpotri cpotri Chris@49: #define arma_zpotri zpotri Chris@49: Chris@49: #define arma_sgeqrf sgeqrf Chris@49: #define arma_dgeqrf dgeqrf Chris@49: #define arma_cgeqrf cgeqrf Chris@49: #define arma_zgeqrf zgeqrf Chris@49: Chris@49: #define arma_sorgqr sorgqr Chris@49: #define arma_dorgqr dorgqr Chris@49: Chris@49: #define arma_cungqr cungqr Chris@49: #define arma_zungqr zungqr Chris@49: Chris@49: #define arma_sgesvd sgesvd Chris@49: #define arma_dgesvd dgesvd Chris@49: Chris@49: #define arma_cgesvd cgesvd Chris@49: #define arma_zgesvd zgesvd Chris@49: Chris@49: #define arma_sgesdd sgesdd Chris@49: #define arma_dgesdd dgesdd Chris@49: #define arma_cgesdd cgesdd Chris@49: #define arma_zgesdd zgesdd Chris@49: Chris@49: #define arma_sgesv sgesv Chris@49: #define arma_dgesv dgesv Chris@49: #define arma_cgesv cgesv Chris@49: #define arma_zgesv zgesv Chris@49: Chris@49: #define arma_sgels sgels Chris@49: #define arma_dgels dgels Chris@49: #define arma_cgels cgels Chris@49: #define arma_zgels zgels Chris@49: Chris@49: #define arma_strtrs strtrs Chris@49: #define arma_dtrtrs dtrtrs Chris@49: #define arma_ctrtrs ctrtrs Chris@49: #define arma_ztrtrs ztrtrs Chris@49: Chris@49: #define arma_sgees sgees Chris@49: #define arma_dgees dgees Chris@49: #define arma_cgees cgees Chris@49: #define arma_zgees zgees Chris@49: Chris@49: #define arma_strsyl strsyl Chris@49: #define arma_dtrsyl dtrsyl Chris@49: #define arma_ctrsyl ctrsyl Chris@49: #define arma_ztrsyl ztrsyl Chris@49: Chris@49: #define arma_ssytrf ssytrf Chris@49: #define arma_dsytrf dsytrf Chris@49: #define arma_csytrf csytrf Chris@49: #define arma_zsytrf zsytrf Chris@49: Chris@49: #define arma_ssytri ssytri Chris@49: #define arma_dsytri dsytri Chris@49: #define arma_csytri csytri Chris@49: #define arma_zsytri zsytri Chris@49: Chris@49: #else Chris@49: Chris@49: #define arma_sgetrf SGETRF Chris@49: #define arma_dgetrf DGETRF Chris@49: #define arma_cgetrf CGETRF Chris@49: #define arma_zgetrf ZGETRF Chris@49: Chris@49: #define arma_sgetri SGETRI Chris@49: #define arma_dgetri DGETRI Chris@49: #define arma_cgetri CGETRI Chris@49: #define arma_zgetri ZGETRI Chris@49: Chris@49: #define arma_strtri STRTRI Chris@49: #define arma_dtrtri DTRTRI Chris@49: #define arma_ctrtri CTRTRI Chris@49: #define arma_ztrtri ZTRTRI Chris@49: Chris@49: #define arma_ssyev SSYEV Chris@49: #define arma_dsyev DSYEV Chris@49: Chris@49: #define arma_cheev CHEEV Chris@49: #define arma_zheev ZHEEV Chris@49: Chris@49: #define arma_ssyevd SSYEVD Chris@49: #define arma_dsyevd DSYEVD Chris@49: Chris@49: #define arma_cheevd CHEEVD Chris@49: #define arma_zheevd ZHEEVD Chris@49: Chris@49: #define arma_sgeev SGEEV Chris@49: #define arma_dgeev DGEEV Chris@49: Chris@49: #define arma_cgeev CGEEV Chris@49: #define arma_zgeev ZGEEV Chris@49: Chris@49: #define arma_spotrf SPOTRF Chris@49: #define arma_dpotrf DPOTRF Chris@49: #define arma_cpotrf CPOTRF Chris@49: #define arma_zpotrf ZPOTRF Chris@49: Chris@49: #define arma_spotri SPOTRI Chris@49: #define arma_dpotri DPOTRI Chris@49: #define arma_cpotri CPOTRI Chris@49: #define arma_zpotri ZPOTRI Chris@49: Chris@49: #define arma_sgeqrf SGEQRF Chris@49: #define arma_dgeqrf DGEQRF Chris@49: #define arma_cgeqrf CGEQRF Chris@49: #define arma_zgeqrf ZGEQRF Chris@49: Chris@49: #define arma_sorgqr SORGQR Chris@49: #define arma_dorgqr DORGQR Chris@49: Chris@49: #define arma_cungqr CUNGQR Chris@49: #define arma_zungqr ZUNGQR Chris@49: Chris@49: #define arma_sgesvd SGESVD Chris@49: #define arma_dgesvd DGESVD Chris@49: Chris@49: #define arma_cgesvd CGESVD Chris@49: #define arma_zgesvd ZGESVD Chris@49: Chris@49: #define arma_sgesdd SGESDD Chris@49: #define arma_dgesdd DGESDD Chris@49: #define arma_cgesdd CGESDD Chris@49: #define arma_zgesdd ZGESDD Chris@49: Chris@49: #define arma_sgesv SGESV Chris@49: #define arma_dgesv DGESV Chris@49: #define arma_cgesv CGESV Chris@49: #define arma_zgesv ZGESV Chris@49: Chris@49: #define arma_sgels SGELS Chris@49: #define arma_dgels DGELS Chris@49: #define arma_cgels CGELS Chris@49: #define arma_zgels ZGELS Chris@49: Chris@49: #define arma_strtrs STRTRS Chris@49: #define arma_dtrtrs DTRTRS Chris@49: #define arma_ctrtrs CTRTRS Chris@49: #define arma_ztrtrs ZTRTRS Chris@49: Chris@49: #define arma_sgees SGEES Chris@49: #define arma_dgees DGEES Chris@49: #define arma_cgees CGEES Chris@49: #define arma_zgees ZGEES Chris@49: Chris@49: #define arma_strsyl STRSYL Chris@49: #define arma_dtrsyl DTRSYL Chris@49: #define arma_ctrsyl CTRSYL Chris@49: #define arma_ztrsyl ZTRSYL Chris@49: Chris@49: #define arma_ssytrf SSYTRF Chris@49: #define arma_dsytrf DSYTRF Chris@49: #define arma_csytrf CSYTRF Chris@49: #define arma_zsytrf ZSYTRF Chris@49: Chris@49: #define arma_ssytri SSYTRI Chris@49: #define arma_dsytri DSYTRI Chris@49: #define arma_csytri CSYTRI Chris@49: #define arma_zsytri ZSYTRI Chris@49: Chris@49: #endif Chris@49: Chris@49: Chris@49: Chris@49: extern "C" Chris@49: { Chris@49: // LU factorisation Chris@49: void arma_fortran(arma_sgetrf)(blas_int* m, blas_int* n, float* a, blas_int* lda, blas_int* ipiv, blas_int* info); Chris@49: void arma_fortran(arma_dgetrf)(blas_int* m, blas_int* n, double* a, blas_int* lda, blas_int* ipiv, blas_int* info); Chris@49: void arma_fortran(arma_cgetrf)(blas_int* m, blas_int* n, void* a, blas_int* lda, blas_int* ipiv, blas_int* info); Chris@49: void arma_fortran(arma_zgetrf)(blas_int* m, blas_int* n, void* a, blas_int* lda, blas_int* ipiv, blas_int* info); Chris@49: Chris@49: // matrix inversion (using LU factorisation result) Chris@49: 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: 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: 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: 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: Chris@49: // matrix inversion (triangular matrices) Chris@49: void arma_fortran(arma_strtri)(char* uplo, char* diag, blas_int* n, float* a, blas_int* lda, blas_int* info); Chris@49: void arma_fortran(arma_dtrtri)(char* uplo, char* diag, blas_int* n, double* a, blas_int* lda, blas_int* info); Chris@49: void arma_fortran(arma_ctrtri)(char* uplo, char* diag, blas_int* n, void* a, blas_int* lda, blas_int* info); Chris@49: void arma_fortran(arma_ztrtri)(char* uplo, char* diag, blas_int* n, void* a, blas_int* lda, blas_int* info); Chris@49: Chris@49: // eigenvector decomposition of symmetric real matrices Chris@49: 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: 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: Chris@49: // eigenvector decomposition of hermitian matrices (complex) Chris@49: 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: 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: Chris@49: // eigenvector decomposition of symmetric real matrices by divide and conquer Chris@49: 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: 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: Chris@49: // eigenvector decomposition of hermitian matrices (complex) by divide and conquer Chris@49: 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: 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: Chris@49: // eigenvector decomposition of general real matrices Chris@49: 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: 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: Chris@49: // eigenvector decomposition of general complex matrices Chris@49: 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: 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: Chris@49: // Cholesky decomposition Chris@49: void arma_fortran(arma_spotrf)(char* uplo, blas_int* n, float* a, blas_int* lda, blas_int* info); Chris@49: void arma_fortran(arma_dpotrf)(char* uplo, blas_int* n, double* a, blas_int* lda, blas_int* info); Chris@49: void arma_fortran(arma_cpotrf)(char* uplo, blas_int* n, void* a, blas_int* lda, blas_int* info); Chris@49: void arma_fortran(arma_zpotrf)(char* uplo, blas_int* n, void* a, blas_int* lda, blas_int* info); Chris@49: Chris@49: // matrix inversion (using Cholesky decomposition result) Chris@49: void arma_fortran(arma_spotri)(char* uplo, blas_int* n, float* a, blas_int* lda, blas_int* info); Chris@49: void arma_fortran(arma_dpotri)(char* uplo, blas_int* n, double* a, blas_int* lda, blas_int* info); Chris@49: void arma_fortran(arma_cpotri)(char* uplo, blas_int* n, void* a, blas_int* lda, blas_int* info); Chris@49: void arma_fortran(arma_zpotri)(char* uplo, blas_int* n, void* a, blas_int* lda, blas_int* info); Chris@49: Chris@49: // QR decomposition Chris@49: 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: 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: 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: 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: Chris@49: // Q matrix calculation from QR decomposition (real matrices) Chris@49: 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: 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: Chris@49: // Q matrix calculation from QR decomposition (complex matrices) Chris@49: 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: 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: Chris@49: // SVD (real matrices) Chris@49: 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: 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: Chris@49: // SVD (complex matrices) Chris@49: 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: 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: Chris@49: // SVD (real matrices) by divide and conquer Chris@49: 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: 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: Chris@49: // SVD (complex matrices) by divide and conquer Chris@49: 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: 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: Chris@49: // solve system of linear equations, using LU decomposition Chris@49: 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: 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: 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: 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: Chris@49: // solve over/underdetermined system of linear equations Chris@49: 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: 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: 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: 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: Chris@49: // solve a triangular system of linear equations Chris@49: 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: 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: 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: 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: Chris@49: // Schur decomposition (real matrices) Chris@49: 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: 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: Chris@49: // Schur decomposition (complex matrices) Chris@49: 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: 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: Chris@49: // solve a Sylvester equation ax + xb = c, with a and b assumed to be in Schur form Chris@49: 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: 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: 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: 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: Chris@49: 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: 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: 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: 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: Chris@49: 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: 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: 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: 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: Chris@49: // 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: // 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: // 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: } Chris@49: Chris@49: Chris@49: #endif