libflame revision_anchor
|
00001 /* 00002 libflame 00003 An object-based infrastructure for developing high-performance 00004 dense linear algebra libraries. 00005 00006 Copyright (C) 2011, The University of Texas 00007 00008 libflame is free software; you can redistribute it and/or modify 00009 it under the terms of the GNU Lesser General Public License as 00010 published by the Free Software Foundation; either version 2.1 of 00011 the License, or (at your option) any later version. 00012 00013 libflame is distributed in the hope that it will be useful, but 00014 WITHOUT ANY WARRANTY; without even the implied warranty of 00015 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00016 Lesser General Public License for more details. 00017 00018 You should have received a copy of the GNU Lesser General Public 00019 License along with libflame; if you did not receive a copy, see 00020 http://www.gnu.org/licenses/. 00021 00022 For more information, please contact us at flame@cs.utexas.edu or 00023 send mail to: 00024 00025 Field G. Van Zee and/or 00026 Robert A. van de Geijn 00027 The University of Texas at Austin 00028 Department of Computer Sciences 00029 1 University Station C0500 00030 Austin TX 78712 00031 */ 00032 00033 // --- Name-mangling macro definitions ----------------------------------------- 00034 00035 // --- Define Fortran name-mangling macro -------------------------- 00036 00037 #define F77_spotrf F77_FUNC( spotrf , SPOTRF ) 00038 #define F77_dpotrf F77_FUNC( dpotrf , DPOTRF ) 00039 #define F77_cpotrf F77_FUNC( cpotrf , CPOTRF ) 00040 #define F77_zpotrf F77_FUNC( zpotrf , ZPOTRF ) 00041 00042 #define F77_spotf2 F77_FUNC( spotf2 , SPOTF2 ) 00043 #define F77_dpotf2 F77_FUNC( dpotf2 , DPOTF2 ) 00044 #define F77_cpotf2 F77_FUNC( cpotf2 , CPOTF2 ) 00045 #define F77_zpotf2 F77_FUNC( zpotf2 , ZPOTF2 ) 00046 00047 00048 #define F77_sgetrf F77_FUNC( sgetrf , SGETRF ) 00049 #define F77_dgetrf F77_FUNC( dgetrf , DGETRF ) 00050 #define F77_cgetrf F77_FUNC( cgetrf , CGETRF ) 00051 #define F77_zgetrf F77_FUNC( zgetrf , ZGETRF ) 00052 00053 #define F77_sgetf2 F77_FUNC( sgetf2 , SGETF2 ) 00054 #define F77_dgetf2 F77_FUNC( dgetf2 , DGETF2 ) 00055 #define F77_cgetf2 F77_FUNC( cgetf2 , CGETF2 ) 00056 #define F77_zgetf2 F77_FUNC( zgetf2 , ZGETF2 ) 00057 00058 00059 #define F77_sgeqrf F77_FUNC( sgeqrf , SGEQRF ) 00060 #define F77_dgeqrf F77_FUNC( dgeqrf , DGEQRF ) 00061 #define F77_cgeqrf F77_FUNC( cgeqrf , CGEQRF ) 00062 #define F77_zgeqrf F77_FUNC( zgeqrf , ZGEQRF ) 00063 00064 #define F77_sgeqr2 F77_FUNC( sgeqr2 , SGEQR2 ) 00065 #define F77_dgeqr2 F77_FUNC( dgeqr2 , DGEQR2 ) 00066 #define F77_cgeqr2 F77_FUNC( cgeqr2 , CGEQR2 ) 00067 #define F77_zgeqr2 F77_FUNC( zgeqr2 , ZGEQR2 ) 00068 00069 00070 #define F77_sgelqf F77_FUNC( sgelqf , SGELQF ) 00071 #define F77_dgelqf F77_FUNC( dgelqf , DGELQF ) 00072 #define F77_cgelqf F77_FUNC( cgelqf , CGELQF ) 00073 #define F77_zgelqf F77_FUNC( zgelqf , ZGELQF ) 00074 00075 #define F77_sgelq2 F77_FUNC( sgelq2 , SGELQ2 ) 00076 #define F77_dgelq2 F77_FUNC( dgelq2 , DGELQ2 ) 00077 #define F77_cgelq2 F77_FUNC( cgelq2 , CGELQ2 ) 00078 #define F77_zgelq2 F77_FUNC( zgelq2 , ZGELQ2 ) 00079 00080 00081 #define F77_slauum F77_FUNC( slauum , SLAUUM ) 00082 #define F77_dlauum F77_FUNC( dlauum , DLAUUM ) 00083 #define F77_clauum F77_FUNC( clauum , CLAUUM ) 00084 #define F77_zlauum F77_FUNC( zlauum , ZLAUUM ) 00085 00086 #define F77_slauu2 F77_FUNC( slauu2 , SLAUU2 ) 00087 #define F77_dlauu2 F77_FUNC( dlauu2 , DLAUU2 ) 00088 #define F77_clauu2 F77_FUNC( clauu2 , CLAUU2 ) 00089 #define F77_zlauu2 F77_FUNC( zlauu2 , ZLAUU2 ) 00090 00091 00092 #define F77_strtri F77_FUNC( strtri , STRTRI ) 00093 #define F77_dtrtri F77_FUNC( dtrtri , DTRTRI ) 00094 #define F77_ctrtri F77_FUNC( ctrtri , CTRTRI ) 00095 #define F77_ztrtri F77_FUNC( ztrtri , ZTRTRI ) 00096 00097 #define F77_strti2 F77_FUNC( strti2 , STRTI2 ) 00098 #define F77_dtrti2 F77_FUNC( dtrti2 , DTRTI2 ) 00099 #define F77_ctrti2 F77_FUNC( ctrti2 , CTRTI2 ) 00100 #define F77_ztrti2 F77_FUNC( ztrti2 , ZTRTI2 ) 00101 00102 00103 #define F77_strsyl F77_FUNC( strsyl , STRSYL ) 00104 #define F77_dtrsyl F77_FUNC( dtrsyl , DTRSYL ) 00105 #define F77_ctrsyl F77_FUNC( ctrsyl , CTRSYL ) 00106 #define F77_ztrsyl F77_FUNC( ztrsyl , ZTRSYL ) 00107 00108 00109 #define F77_sgehrd F77_FUNC( sgehrd , SGEHRD ) 00110 #define F77_dgehrd F77_FUNC( dgehrd , DGEHRD ) 00111 #define F77_cgehrd F77_FUNC( cgehrd , CGEHRD ) 00112 #define F77_zgehrd F77_FUNC( zgehrd , ZGEHRD ) 00113 00114 #define F77_sgehd2 F77_FUNC( sgehd2 , SGEHD2 ) 00115 #define F77_dgehd2 F77_FUNC( dgehd2 , DGEHD2 ) 00116 #define F77_cgehd2 F77_FUNC( cgehd2 , CGEHD2 ) 00117 #define F77_zgehd2 F77_FUNC( zgehd2 , ZGEHD2 ) 00118 00119 00120 #define F77_ssytrd F77_FUNC( ssytrd , SSYTRD ) 00121 #define F77_dsytrd F77_FUNC( dsytrd , DSYTRD ) 00122 #define F77_chetrd F77_FUNC( chetrd , CHETRD ) 00123 #define F77_zhetrd F77_FUNC( zhetrd , ZHETRD ) 00124 00125 #define F77_ssytd2 F77_FUNC( ssytd2 , SSYTD2 ) 00126 #define F77_dsytd2 F77_FUNC( dsytd2 , DSYTD2 ) 00127 #define F77_chetd2 F77_FUNC( chetd2 , CHETD2 ) 00128 #define F77_zhetd2 F77_FUNC( zhetd2 , ZHETD2 ) 00129 00130 00131 #define F77_sgebrd F77_FUNC( sgebrd , SGEBRD ) 00132 #define F77_dgebrd F77_FUNC( dgebrd , DGEBRD ) 00133 #define F77_cgebrd F77_FUNC( cgebrd , CGEBRD ) 00134 #define F77_zgebrd F77_FUNC( zgebrd , ZGEBRD ) 00135 00136 #define F77_sgebd2 F77_FUNC( sgebd2 , SGEBD2 ) 00137 #define F77_dgebd2 F77_FUNC( dgebd2 , DGEBD2 ) 00138 #define F77_cgebd2 F77_FUNC( cgebd2 , CGEBD2 ) 00139 #define F77_zgebd2 F77_FUNC( zgebd2 , ZGEBD2 ) 00140 00141 00142 #define F77_ssygst F77_FUNC( ssygst , SSYGST ) 00143 #define F77_dsygst F77_FUNC( dsygst , DSYGST ) 00144 #define F77_chegst F77_FUNC( chegst , CHEGST ) 00145 #define F77_zhegst F77_FUNC( zhegst , ZHEGST ) 00146 00147 #define F77_ssygs2 F77_FUNC( ssygs2 , SSYGS2 ) 00148 #define F77_dsygs2 F77_FUNC( dsygs2 , DSYGS2 ) 00149 #define F77_chegs2 F77_FUNC( chegs2 , CHEGS2 ) 00150 #define F77_zhegs2 F77_FUNC( zhegs2 , ZHEGS2 ) 00151 00152 00153 #define F77_slarft F77_FUNC( slarft , SLARFT ) 00154 #define F77_dlarft F77_FUNC( dlarft , DLARFT ) 00155 #define F77_clarft F77_FUNC( clarft , CLARFT ) 00156 #define F77_zlarft F77_FUNC( zlarft , ZLARFT ) 00157 00158 00159 #define F77_slarfg F77_FUNC( slarfg , SLARFG ) 00160 #define F77_dlarfg F77_FUNC( dlarfg , DLARFG ) 00161 #define F77_clarfg F77_FUNC( clarfg , CLARFG ) 00162 #define F77_zlarfg F77_FUNC( zlarfg , ZLARFG ) 00163 00164 00165 #define F77_sormqr F77_FUNC( sormqr , SORMQR ) 00166 #define F77_dormqr F77_FUNC( dormqr , DORMQR ) 00167 #define F77_cunmqr F77_FUNC( cunmqr , CUNMQR ) 00168 #define F77_zunmqr F77_FUNC( zunmqr , ZUNMQR ) 00169 00170 #define F77_sorm2r F77_FUNC( sorm2r , SORM2R ) 00171 #define F77_dorm2r F77_FUNC( dorm2r , DORM2R ) 00172 #define F77_cunm2r F77_FUNC( cunm2r , CUNM2R ) 00173 #define F77_zunm2r F77_FUNC( zunm2r , ZUNM2R ) 00174 00175 00176 #define F77_sormlq F77_FUNC( sormlq , SORMLQ ) 00177 #define F77_dormlq F77_FUNC( dormlq , DORMLQ ) 00178 #define F77_cunmlq F77_FUNC( cunmlq , CUNMLQ ) 00179 #define F77_zunmlq F77_FUNC( zunmlq , ZUNMLQ ) 00180 00181 #define F77_sorml2 F77_FUNC( sorml2 , SORML2 ) 00182 #define F77_dorml2 F77_FUNC( dorml2 , DORML2 ) 00183 #define F77_cunml2 F77_FUNC( cunml2 , CUNML2 ) 00184 #define F77_zunml2 F77_FUNC( zunml2 , ZUNML2 ) 00185 00186 #define F77_ssyev F77_FUNC( ssyev , SSYEV ) 00187 #define F77_dsyev F77_FUNC( dsyev , DSYEV ) 00188 #define F77_cheev F77_FUNC( cheev , CHEEV ) 00189 #define F77_zheev F77_FUNC( zheev , ZHEEV ) 00190 00191 #define F77_sgesvd F77_FUNC( sgesvd , SGESVD ) 00192 #define F77_dgesvd F77_FUNC( dgesvd , DGESVD ) 00193 #define F77_cgesvd F77_FUNC( cgesvd , CGESVD ) 00194 #define F77_zgesvd F77_FUNC( zgesvd , ZGESVD ) 00195 00196 #define F77_slaswp F77_FUNC( slaswp , SLASWP ) 00197 #define F77_dlaswp F77_FUNC( dlaswp , DLASWP ) 00198 #define F77_claswp F77_FUNC( claswp , CLASWP ) 00199 #define F77_zlaswp F77_FUNC( zlaswp , ZLASWP ) 00200 00201 00202 #define F77_slaset F77_FUNC( slaset , SLASET ) 00203 #define F77_dlaset F77_FUNC( dlaset , DLASET ) 00204 #define F77_claset F77_FUNC( claset , CLASET ) 00205 #define F77_zlaset F77_FUNC( zlaset , ZLASET ) 00206 00207 00208 // --- Cholesky factorization --- 00209 00210 void F77_spotrf( char* uplo, int* n, float* a, int* lda, int* info ); 00211 void F77_dpotrf( char* uplo, int* n, double* a, int* lda, int* info ); 00212 void F77_cpotrf( char* uplo, int* n, scomplex* a, int* lda, int* info ); 00213 void F77_zpotrf( char* uplo, int* n, dcomplex* a, int* lda, int* info ); 00214 00215 void F77_spotf2( char* uplo, int* n, float* a, int* lda, int* info ); 00216 void F77_dpotf2( char* uplo, int* n, double* a, int* lda, int* info ); 00217 void F77_cpotf2( char* uplo, int* n, scomplex* a, int* lda, int* info ); 00218 void F77_zpotf2( char* uplo, int* n, dcomplex* a, int* lda, int* info ); 00219 00220 // --- LU factorization with partial pivoting --- 00221 00222 void F77_sgetrf( int* m, int* n, float* a, int* lda, int* ipiv, int* info ); 00223 void F77_dgetrf( int* m, int* n, double* a, int* lda, int* ipiv, int* info ); 00224 void F77_cgetrf( int* m, int* n, scomplex* a, int* lda, int* ipiv, int* info ); 00225 void F77_zgetrf( int* m, int* n, dcomplex* a, int* lda, int* ipiv, int* info ); 00226 00227 void F77_sgetf2( int* m, int* n, float* a, int* lda, int* ipiv, int* info ); 00228 void F77_dgetf2( int* m, int* n, double* a, int* lda, int* ipiv, int* info ); 00229 void F77_cgetf2( int* m, int* n, scomplex* a, int* lda, int* ipiv, int* info ); 00230 void F77_zgetf2( int* m, int* n, dcomplex* a, int* lda, int* ipiv, int* info ); 00231 00232 // --- QR factorization (classic) --- 00233 00234 void F77_sgeqrf( int* m, int* n, float* a, int* lda, float* tau, float* work, int* lwork, int* info ); 00235 void F77_dgeqrf( int* m, int* n, double* a, int* lda, double* tau, double* work, int* lwork, int* info ); 00236 void F77_cgeqrf( int* m, int* n, scomplex* a, int* lda, scomplex* tau, scomplex* work, int* lwork, int* info ); 00237 void F77_zgeqrf( int* m, int* n, dcomplex* a, int* lda, dcomplex* tau, dcomplex* work, int* lwork, int* info ); 00238 00239 void F77_sgeqr2( int* m, int* n, float* a, int* lda, float* tau, float* work, int* info ); 00240 void F77_dgeqr2( int* m, int* n, double* a, int* lda, double* tau, double* work, int* info ); 00241 void F77_cgeqr2( int* m, int* n, scomplex* a, int* lda, scomplex* tau, scomplex* work, int* info ); 00242 void F77_zgeqr2( int* m, int* n, dcomplex* a, int* lda, dcomplex* tau, dcomplex* work, int* info ); 00243 00244 // --- LQ factorization (classic) --- 00245 00246 void F77_sgelqf( int* m, int* n, float* a, int* lda, float* tau, float* work, int* lwork, int* info ); 00247 void F77_dgelqf( int* m, int* n, double* a, int* lda, double* tau, double* work, int* lwork, int* info ); 00248 void F77_cgelqf( int* m, int* n, scomplex* a, int* lda, scomplex* tau, scomplex* work, int* lwork, int* info ); 00249 void F77_zgelqf( int* m, int* n, dcomplex* a, int* lda, dcomplex* tau, dcomplex* work, int* lwork, int* info ); 00250 00251 void F77_sgelq2( int* m, int* n, float* a, int* lda, float* tau, float* work, int* info ); 00252 void F77_dgelq2( int* m, int* n, double* a, int* lda, double* tau, double* work, int* info ); 00253 void F77_cgelq2( int* m, int* n, scomplex* a, int* lda, scomplex* tau, scomplex* work, int* info ); 00254 void F77_zgelq2( int* m, int* n, dcomplex* a, int* lda, dcomplex* tau, dcomplex* work, int* info ); 00255 00256 // --- Triangular-transpose matrix multiply --- 00257 00258 void F77_slauum( char* uplo, int* n, float* a, int* lda, int* info ); 00259 void F77_dlauum( char* uplo, int* n, double* a, int* lda, int* info ); 00260 void F77_clauum( char* uplo, int* n, scomplex* a, int* lda, int* info ); 00261 void F77_zlauum( char* uplo, int* n, dcomplex* a, int* lda, int* info ); 00262 00263 void F77_slauu2( char* uplo, int* n, float* a, int* lda, int* info ); 00264 void F77_dlauu2( char* uplo, int* n, double* a, int* lda, int* info ); 00265 void F77_clauu2( char* uplo, int* n, scomplex* a, int* lda, int* info ); 00266 void F77_zlauu2( char* uplo, int* n, dcomplex* a, int* lda, int* info ); 00267 00268 // --- Triangular matrix inversion --- 00269 00270 void F77_strtri( char* uplo, char* diag, int* n, float* a, int* lda, int* info ); 00271 void F77_dtrtri( char* uplo, char* diag, int* n, double* a, int* lda, int* info ); 00272 void F77_ctrtri( char* uplo, char* diag, int* n, scomplex* a, int* lda, int* info ); 00273 void F77_ztrtri( char* uplo, char* diag, int* n, dcomplex* a, int* lda, int* info ); 00274 00275 void F77_strti2( char* uplo, char* diag, int* n, float* a, int* lda, int* info ); 00276 void F77_dtrti2( char* uplo, char* diag, int* n, double* a, int* lda, int* info ); 00277 void F77_ctrti2( char* uplo, char* diag, int* n, scomplex* a, int* lda, int* info ); 00278 void F77_ztrti2( char* uplo, char* diag, int* n, dcomplex* a, int* lda, int* info ); 00279 00280 // --- Triangular Sylvester equation solve --- 00281 00282 void F77_strsyl( char* transa, char* transb, int* isgn, int* m, int* n, float* a, int* lda, float* b, int* ldb, float* c, int* ldc, float* scale, int* info ); 00283 void F77_dtrsyl( char* transa, char* transb, int* isgn, int* m, int* n, double* a, int* lda, double* b, int* ldb, double* c, int* ldc, double* scale, int* info ); 00284 void F77_ctrsyl( char* transa, char* transb, int* isgn, int* m, int* n, scomplex* a, int* lda, scomplex* b, int* ldb, scomplex* c, int* ldc, float* scale, int* info ); 00285 void F77_ztrsyl( char* transa, char* transb, int* isgn, int* m, int* n, dcomplex* a, int* lda, dcomplex* b, int* ldb, dcomplex* c, int* ldc, double* scale, int* info ); 00286 00287 // --- Reduction to upper Hessenberg form --- 00288 00289 void F77_sgehrd( int* n, int* ilo, int* ihi, float* a, int* lda, float* tau, float* work, int* lwork, int* info ); 00290 void F77_dgehrd( int* n, int* ilo, int* ihi, double* a, int* lda, double* tau, double* work, int* lwork, int* info ); 00291 void F77_cgehrd( int* n, int* ilo, int* ihi, scomplex* a, int* lda, scomplex* tau, scomplex* work, int* lwork, int* info ); 00292 void F77_zgehrd( int* n, int* ilo, int* ihi, dcomplex* a, int* lda, dcomplex* tau, dcomplex* work, int* lwork, int* info ); 00293 00294 void F77_sgehd2( int* n, int* ilo, int* ihi, float* a, int* lda, float* tau, float* work, int* info ); 00295 void F77_dgehd2( int* n, int* ilo, int* ihi, double* a, int* lda, double* tau, double* work, int* info ); 00296 void F77_cgehd2( int* n, int* ilo, int* ihi, scomplex* a, int* lda, scomplex* tau, scomplex* work, int* info ); 00297 void F77_zgehd2( int* n, int* ilo, int* ihi, dcomplex* a, int* lda, dcomplex* tau, dcomplex* work, int* info ); 00298 00299 // --- Reduction to tridiagonal form --- 00300 00301 void F77_ssytrd( char* uplo, int* n, float* a, int* lda, float* d, float* e, float* tau, float* work, int* lwork, int* info ); 00302 void F77_dsytrd( char* uplo, int* n, double* a, int* lda, double* d, double* e, double* tau, double* work, int* lwork, int* info ); 00303 void F77_chetrd( char* uplo, int* n, scomplex* a, int* lda, float* d, float* e, scomplex* tau, scomplex* work, int* lwork, int* info ); 00304 void F77_zhetrd( char* uplo, int* n, dcomplex* a, int* lda, double* d, double* e, dcomplex* tau, dcomplex* work, int* lwork, int* info ); 00305 00306 void F77_ssytd2( char* uplo, int* n, float* a, int* lda, float* d, float* e, float* tau, int* info ); 00307 void F77_dsytd2( char* uplo, int* n, double* a, int* lda, double* d, double* e, double* tau, int* info ); 00308 void F77_chetd2( char* uplo, int* n, scomplex* a, int* lda, float* d, float* e, scomplex* tau, int* info ); 00309 void F77_zhetd2( char* uplo, int* n, dcomplex* a, int* lda, double* d, double* e, dcomplex* tau, int* info ); 00310 00311 // --- Reduction to bidiagonal form --- 00312 00313 void F77_sgebrd( int* m, int* n, float* a, int* lda, float* d, float* e, float* tauq, float* taup, float* work, int* lwork, int* info ); 00314 void F77_dgebrd( int* m, int* n, double* a, int* lda, double* d, double* e, double* tauq, double* taup, double* work, int* lwork, int* info ); 00315 void F77_cgebrd( int* m, int* n, scomplex* a, int* lda, float* d, float* e, scomplex* tauq, scomplex* taup, scomplex* work, int* lwork, int* info ); 00316 void F77_zgebrd( int* m, int* n, dcomplex* a, int* lda, double* d, double* e, dcomplex* tauq, dcomplex* taup, dcomplex* work, int* lwork, int* info ); 00317 00318 void F77_sgebd2( int* m, int* n, float* a, int* lda, float* d, float* e, float* tauq, float* taup, float* work, int* info ); 00319 void F77_dgebd2( int* m, int* n, double* a, int* lda, double* d, double* e, double* tauq, double* taup, double* work, int* info ); 00320 void F77_cgebd2( int* m, int* n, scomplex* a, int* lda, float* d, float* e, scomplex* tauq, scomplex* taup, scomplex* work, int* info ); 00321 void F77_zgebd2( int* m, int* n, dcomplex* a, int* lda, double* d, double* e, dcomplex* tauq, dcomplex* taup, dcomplex* work, int* info ); 00322 00323 // --- Reduce Hermitian-definite generalized eigenproblem to standard form --- 00324 00325 void F77_ssygst( int* itype, char* uplo, int* n, float* a, int* lda, float* b, int* ldb, int* info ); 00326 void F77_dsygst( int* itype, char* uplo, int* n, double* a, int* lda, double* b, int* ldb, int* info ); 00327 void F77_chegst( int* itype, char* uplo, int* n, scomplex* a, int* lda, scomplex* b, int* ldb, int* info ); 00328 void F77_zhegst( int* itype, char* uplo, int* n, dcomplex* a, int* lda, dcomplex* b, int* ldb, int* info ); 00329 00330 void F77_ssygs2( int* itype, char* uplo, int* n, float* a, int* lda, float* b, int* ldb, int* info ); 00331 void F77_dsygs2( int* itype, char* uplo, int* n, double* a, int* lda, double* b, int* ldb, int* info ); 00332 void F77_chegs2( int* itype, char* uplo, int* n, scomplex* a, int* lda, scomplex* b, int* ldb, int* info ); 00333 void F77_zhegs2( int* itype, char* uplo, int* n, dcomplex* a, int* lda, dcomplex* b, int* ldb, int* info ); 00334 00335 // --- Accumulate block Householder matrix T (classic) --- 00336 00337 void F77_slarft( char* direct, char* storev, int* n, int* k, float* v, int* ldv, float* tau, float* t, int* ldt ); 00338 void F77_dlarft( char* direct, char* storev, int* n, int* k, double* v, int* ldv, double* tau, double* t, int* ldt ); 00339 void F77_clarft( char* direct, char* storev, int* n, int* k, scomplex* v, int* ldv, scomplex* tau, scomplex* t, int* ldt ); 00340 void F77_zlarft( char* direct, char* storev, int* n, int* k, dcomplex* v, int* ldv, dcomplex* tau, dcomplex* t, int* ldt ); 00341 00342 // --- Generate a Householder vector (classic) --- 00343 00344 void F77_slarfg( int* n, float* alpha, float* x, int* incx, float* tau ); 00345 void F77_dlarfg( int* n, double* alpha, double* x, int* incx, double* tau ); 00346 void F77_clarfg( int* n, scomplex* alpha, scomplex* x, int* incx, scomplex* tau ); 00347 void F77_zlarfg( int* n, dcomplex* alpha, dcomplex* x, int* incx, dcomplex* tau ); 00348 00349 // --- Apply Q or Q' from QR factorization --- 00350 00351 void F77_sormqr( char* side, char* trans, int* m, int* n, int* k, float* a, int* lda, float* tau, float* c, int* ldc, float* work, int* lwork, int* info ); 00352 void F77_dormqr( char* side, char* trans, int* m, int* n, int* k, double* a, int* lda, double* tau, double* c, int* ldc, double* work, int* lwork, int* info ); 00353 void F77_cunmqr( char* side, char* trans, int* m, int* n, int* k, scomplex* a, int* lda, scomplex* tau, scomplex* c, int* ldc, scomplex* work, int* lwork, int* info ); 00354 void F77_zunmqr( char* side, char* trans, int* m, int* n, int* k, dcomplex* a, int* lda, dcomplex* tau, dcomplex* c, int* ldc, dcomplex* work, int* lwork, int* info ); 00355 00356 void F77_sorm2r( char* side, char* trans, int* m, int* n, int* k, float* a, int* lda, float* tau, float* c, int* ldc, float* work, int* info ); 00357 void F77_dorm2r( char* side, char* trans, int* m, int* n, int* k, double* a, int* lda, double* tau, double* c, int* ldc, double* work, int* info ); 00358 void F77_cunm2r( char* side, char* trans, int* m, int* n, int* k, scomplex* a, int* lda, scomplex* tau, scomplex* c, int* ldc, scomplex* work, int* info ); 00359 void F77_zunm2r( char* side, char* trans, int* m, int* n, int* k, dcomplex* a, int* lda, dcomplex* tau, dcomplex* c, int* ldc, dcomplex* work, int* info ); 00360 00361 // --- Apply Q or Q' from LQ factorization --- 00362 00363 void F77_sormlq( char* side, char* trans, int* m, int* n, int* k, float* a, int* lda, float* tau, float* c, int* ldc, float* work, int* lwork, int* info ); 00364 void F77_dormlq( char* side, char* trans, int* m, int* n, int* k, double* a, int* lda, double* tau, double* c, int* ldc, double* work, int* lwork, int* info ); 00365 void F77_cunmlq( char* side, char* trans, int* m, int* n, int* k, scomplex* a, int* lda, scomplex* tau, scomplex* c, int* ldc, scomplex* work, int* lwork, int* info ); 00366 void F77_zunmlq( char* side, char* trans, int* m, int* n, int* k, dcomplex* a, int* lda, dcomplex* tau, dcomplex* c, int* ldc, dcomplex* work, int* lwork, int* info ); 00367 00368 void F77_sorml2( char* side, char* trans, int* m, int* n, int* k, float* a, int* lda, float* tau, float* c, int* ldc, float* work, int* info ); 00369 void F77_dorml2( char* side, char* trans, int* m, int* n, int* k, double* a, int* lda, double* tau, double* c, int* ldc, double* work, int* info ); 00370 void F77_cunml2( char* side, char* trans, int* m, int* n, int* k, scomplex* a, int* lda, scomplex* tau, scomplex* c, int* ldc, scomplex* work, int* info ); 00371 void F77_zunml2( char* side, char* trans, int* m, int* n, int* k, dcomplex* a, int* lda, dcomplex* tau, dcomplex* c, int* ldc, dcomplex* work, int* info ); 00372 00373 // --- Hermitian eigenvalue decomposition (simple) --- 00374 00375 void F77_ssyev( char* jobz, char* uplo, int* n, float* a, int* lda, float* w, float* work, int* lwork, float* rwork, int* info ); 00376 void F77_dsyev( char* jobz, char* uplo, int* n, double* a, int* lda, double* w, double* work, int* lwork, double* rwork, int* info ); 00377 void F77_cheev( char* jobz, char* uplo, int* n, scomplex* a, int* lda, float* w, scomplex* work, int* lwork, float* rwork, int* info ); 00378 void F77_zheev( char* jobz, char* uplo, int* n, dcomplex* a, int* lda, double* w, dcomplex* work, int* lwork, double* rwork, int* info ); 00379 00380 // --- General matrix singular value decomposition (simple) --- 00381 00382 void F77_sgesvd( char* jobu, char* jobv, int* m, int* n, float* a, int* lda, float* s, float* u, int* ldu, float* vt, int* ldvt, float* work, int* lwork, float* rwork, int* info ); 00383 void F77_dgesvd( char* jobu, char* jobv, int* m, int* n, double* a, int* lda, double* s, double* u, int* ldu, double* vt, int* ldvt, double* work, int* lwork, double* rwork, int* info ); 00384 void F77_cgesvd( char* jobu, char* jobv, int* m, int* n, scomplex* a, int* lda, float* s, scomplex* u, int* ldu, scomplex* vt, int* ldvt, scomplex* work, int* lwork, float* rwork, int* info ); 00385 void F77_zgesvd( char* jobu, char* jobv, int* m, int* n, dcomplex* a, int* lda, double* s, dcomplex* u, int* ldu, dcomplex* vt, int* ldvt, dcomplex* work, int* lwork, double* rwork, int* info ); 00386 00387 // --- Swap rows --- 00388 00389 void F77_slaswp( int* n, float* a, int* lda, int* k1, int* k2, int* ipiv, int* incx ); 00390 void F77_dlaswp( int* n, double* a, int* lda, int* k1, int* k2, int* ipiv, int* incx ); 00391 void F77_claswp( int* n, scomplex* a, int* lda, int* k1, int* k2, int* ipiv, int* incx ); 00392 void F77_zlaswp( int* n, dcomplex* a, int* lda, int* k1, int* k2, int* ipiv, int* incx ); 00393 00394 // --- Initialize a matrix --- 00395 00396 void F77_slaset( char* uplo, int* m, int* n, float* alpha, float* beta, float* a, int* lda ); 00397 void F77_dlaset( char* uplo, int* m, int* n, double* alpha, double* beta, double* a, int* lda ); 00398 void F77_claset( char* uplo, int* m, int* n, scomplex* alpha, scomplex* beta, scomplex* a, int* lda ); 00399 void F77_zlaset( char* uplo, int* m, int* n, dcomplex* alpha, dcomplex* beta, dcomplex* a, int* lda ); 00400