libflame revision_anchor
FLA_lapack_f77_prototypes.h
Go to the documentation of this file.
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