$search
00001 #include "armadillo_bits/config.hpp" 00002 #include "armadillo_bits/typedef_blas_int.hpp" 00003 00004 #undef ARMA_USE_WRAPPER 00005 #include "armadillo_bits/compiler_setup.hpp" 00006 00007 #include "armadillo_bits/undefine_conflicts.hpp" 00008 #include "armadillo_bits/include_atlas.hpp" 00009 00010 00011 namespace arma 00012 { 00013 00014 #include "armadillo_bits/blas_bones.hpp" 00015 #include "armadillo_bits/lapack_bones.hpp" 00016 00017 // at this stage we have prototypes for the real blas, lapack and atlas functions 00018 00019 // now we make the wrapper functions 00020 00021 00022 extern "C" 00023 { 00024 #if defined(ARMA_USE_BLAS) 00025 00026 float arma_fortran_prefix(arma_sdot)(blas_int* n, const float* x, blas_int* incx, const float* y, blas_int* incy) 00027 { 00028 return arma_fortran_noprefix(arma_sdot)(n, x, incx, y, incy); 00029 } 00030 00031 double arma_fortran_prefix(arma_ddot)(blas_int* n, const double* x, blas_int* incx, const double* y, blas_int* incy) 00032 { 00033 return arma_fortran_noprefix(arma_ddot)(n, x, incx, y, incy); 00034 } 00035 00036 00037 00038 void arma_fortran_prefix(arma_sgemv)(const char* transA, const blas_int* m, const blas_int* n, const float* alpha, const float* A, const blas_int* ldA, const float* x, const blas_int* incx, const float* beta, float* y, const blas_int* incy) 00039 { 00040 arma_fortran_noprefix(arma_sgemv)(transA, m, n, alpha, A, ldA, x, incx, beta, y, incy); 00041 } 00042 00043 void arma_fortran_prefix(arma_dgemv)(const char* transA, const blas_int* m, const blas_int* n, const double* alpha, const double* A, const blas_int* ldA, const double* x, const blas_int* incx, const double* beta, double* y, const blas_int* incy) 00044 { 00045 arma_fortran_noprefix(arma_dgemv)(transA, m, n, alpha, A, ldA, x, incx, beta, y, incy); 00046 } 00047 00048 void arma_fortran_prefix(arma_cgemv)(const char* transA, const blas_int* m, const blas_int* n, const void* alpha, const void* A, const blas_int* ldA, const void* x, const blas_int* incx, const void* beta, void* y, const blas_int* incy) 00049 { 00050 arma_fortran_noprefix(arma_cgemv)(transA, m, n, alpha, A, ldA, x, incx, beta, y, incy); 00051 } 00052 00053 void arma_fortran_prefix(arma_zgemv)(const char* transA, const blas_int* m, const blas_int* n, const void* alpha, const void* A, const blas_int* ldA, const void* x, const blas_int* incx, const void* beta, void* y, const blas_int* incy) 00054 { 00055 arma_fortran_noprefix(arma_zgemv)(transA, m, n, alpha, A, ldA, x, incx, beta, y, incy); 00056 } 00057 00058 00059 00060 void arma_fortran_prefix(arma_sgemm)(const char* transA, const char* transB, const blas_int* m, const blas_int* n, const blas_int* k, const float* alpha, const float* A, const blas_int* ldA, const float* B, const blas_int* ldB, const float* beta, float* C, const blas_int* ldC) 00061 { 00062 arma_fortran_noprefix(arma_sgemm)(transA, transB, m, n, k, alpha, A, ldA, B, ldB, beta, C, ldC); 00063 } 00064 00065 void arma_fortran_prefix(arma_dgemm)(const char* transA, const char* transB, const blas_int* m, const blas_int* n, const blas_int* k, const double* alpha, const double* A, const blas_int* ldA, const double* B, const blas_int* ldB, const double* beta, double* C, const blas_int* ldC) 00066 { 00067 arma_fortran_noprefix(arma_dgemm)(transA, transB, m, n, k, alpha, A, ldA, B, ldB, beta, C, ldC); 00068 } 00069 00070 void arma_fortran_prefix(arma_cgemm)(const char* transA, const char* transB, const blas_int* m, const blas_int* n, const blas_int* k, const void* alpha, const void* A, const blas_int* ldA, const void* B, const blas_int* ldB, const void* beta, void* C, const blas_int* ldC) 00071 { 00072 arma_fortran_noprefix(arma_cgemm)(transA, transB, m, n, k, alpha, A, ldA, B, ldB, beta, C, ldC); 00073 } 00074 00075 void arma_fortran_prefix(arma_zgemm)(const char* transA, const char* transB, const blas_int* m, const blas_int* n, const blas_int* k, const void* alpha, const void* A, const blas_int* ldA, const void* B, const blas_int* ldB, const void* beta, void* C, const blas_int* ldC) 00076 { 00077 arma_fortran_noprefix(arma_zgemm)(transA, transB, m, n, k, alpha, A, ldA, B, ldB, beta, C, ldC); 00078 } 00079 00080 #endif 00081 00082 00083 00084 #if defined(ARMA_USE_LAPACK) 00085 00086 void arma_fortran_prefix(arma_sgetrf)(blas_int* m, blas_int* n, float* a, blas_int* lda, blas_int* ipiv, blas_int* info) 00087 { 00088 arma_fortran_noprefix(arma_sgetrf)(m, n, a, lda, ipiv, info); 00089 } 00090 00091 void arma_fortran_prefix(arma_dgetrf)(blas_int* m, blas_int* n, double* a, blas_int* lda, blas_int* ipiv, blas_int* info) 00092 { 00093 arma_fortran_noprefix(arma_dgetrf)(m, n, a, lda, ipiv, info); 00094 } 00095 00096 void arma_fortran_prefix(arma_cgetrf)(blas_int* m, blas_int* n, void* a, blas_int* lda, blas_int* ipiv, blas_int* info) 00097 { 00098 arma_fortran_noprefix(arma_cgetrf)(m, n, a, lda, ipiv, info); 00099 } 00100 00101 void arma_fortran_prefix(arma_zgetrf)(blas_int* m, blas_int* n, void* a, blas_int* lda, blas_int* ipiv, blas_int* info) 00102 { 00103 arma_fortran_noprefix(arma_zgetrf)(m, n, a, lda, ipiv, info); 00104 } 00105 00106 00107 00108 void arma_fortran_prefix(arma_sgetri)(blas_int* n, float* a, blas_int* lda, blas_int* ipiv, float* work, blas_int* lwork, blas_int* info) 00109 { 00110 arma_fortran_noprefix(arma_sgetri)(n, a, lda, ipiv, work, lwork, info); 00111 } 00112 00113 void arma_fortran_prefix(arma_dgetri)(blas_int* n, double* a, blas_int* lda, blas_int* ipiv, double* work, blas_int* lwork, blas_int* info) 00114 { 00115 arma_fortran_noprefix(arma_dgetri)(n, a, lda, ipiv, work, lwork, info); 00116 } 00117 00118 void arma_fortran_prefix(arma_cgetri)(blas_int* n, void* a, blas_int* lda, blas_int* ipiv, void* work, blas_int* lwork, blas_int* info) 00119 { 00120 arma_fortran_noprefix(arma_cgetri)(n, a, lda, ipiv, work, lwork, info); 00121 } 00122 00123 void arma_fortran_prefix(arma_zgetri)(blas_int* n, void* a, blas_int* lda, blas_int* ipiv, void* work, blas_int* lwork, blas_int* info) 00124 { 00125 arma_fortran_noprefix(arma_zgetri)(n, a, lda, ipiv, work, lwork, info); 00126 } 00127 00128 00129 00130 void arma_fortran_prefix(arma_strtri)(char* uplo, char* diag, blas_int* n, float* a, blas_int* lda, blas_int* info) 00131 { 00132 arma_fortran_noprefix(arma_strtri)(uplo, diag, n, a, lda, info); 00133 } 00134 00135 void arma_fortran_prefix(arma_dtrtri)(char* uplo, char* diag, blas_int* n, double* a, blas_int* lda, blas_int* info) 00136 { 00137 arma_fortran_noprefix(arma_dtrtri)(uplo, diag, n, a, lda, info); 00138 } 00139 00140 void arma_fortran_prefix(arma_ctrtri)(char* uplo, char* diag, blas_int* n, void* a, blas_int* lda, blas_int* info) 00141 { 00142 arma_fortran_noprefix(arma_ctrtri)(uplo, diag, n, a, lda, info); 00143 } 00144 00145 void arma_fortran_prefix(arma_ztrtri)(char* uplo, char* diag, blas_int* n, void* a, blas_int* lda, blas_int* info) 00146 { 00147 arma_fortran_noprefix(arma_ztrtri)(uplo, diag, n, a, lda, info); 00148 } 00149 00150 00151 00152 void arma_fortran_prefix(arma_ssyev)(char* jobz, char* uplo, blas_int* n, float* a, blas_int* lda, float* w, float* work, blas_int* lwork, blas_int* info) 00153 { 00154 arma_fortran_noprefix(arma_ssyev)(jobz, uplo, n, a, lda, w, work, lwork, info); 00155 } 00156 00157 void arma_fortran_prefix(arma_dsyev)(char* jobz, char* uplo, blas_int* n, double* a, blas_int* lda, double* w, double* work, blas_int* lwork, blas_int* info) 00158 { 00159 arma_fortran_noprefix(arma_dsyev)(jobz, uplo, n, a, lda, w, work, lwork, info); 00160 } 00161 00162 00163 00164 void arma_fortran_prefix(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) 00165 { 00166 arma_fortran_noprefix(arma_cheev)(jobz, uplo, n, a, lda, w, work, lwork, rwork, info); 00167 } 00168 00169 void arma_fortran_prefix(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) 00170 { 00171 arma_fortran_noprefix(arma_zheev)(jobz, uplo, n, a, lda, w, work, lwork, rwork, info); 00172 } 00173 00174 00175 00176 void arma_fortran_prefix(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) 00177 { 00178 arma_fortran_noprefix(arma_sgeev)(jobvl, jobvr, n, a, lda, wr, wi, vl, ldvl, vr, ldvr, work, lwork, info); 00179 } 00180 00181 void arma_fortran_prefix(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) 00182 { 00183 arma_fortran_noprefix(arma_dgeev)(jobvl, jobvr, n, a, lda, wr, wi, vl, ldvl, vr, ldvr, work, lwork, info); 00184 } 00185 00186 00187 00188 void arma_fortran_prefix(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) 00189 { 00190 arma_fortran_noprefix(arma_cgeev)(jobvl, jobvr, n, a, lda, w, vl, ldvl, vr, ldvr, work, lwork, rwork, info); 00191 } 00192 00193 void arma_fortran_prefix(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) 00194 { 00195 arma_fortran_noprefix(arma_zgeev)(jobvl, jobvr, n, a, lda, w, vl, ldvl, vr, ldvr, work, lwork, rwork, info); 00196 } 00197 00198 00199 00200 void arma_fortran_prefix(arma_spotrf)(char* uplo, blas_int* n, float* a, blas_int* lda, blas_int* info) 00201 { 00202 arma_fortran_noprefix(arma_spotrf)(uplo, n, a, lda, info); 00203 } 00204 00205 void arma_fortran_prefix(arma_dpotrf)(char* uplo, blas_int* n, double* a, blas_int* lda, blas_int* info) 00206 { 00207 arma_fortran_noprefix(arma_dpotrf)(uplo, n, a, lda, info); 00208 } 00209 00210 void arma_fortran_prefix(arma_cpotrf)(char* uplo, blas_int* n, void* a, blas_int* lda, blas_int* info) 00211 { 00212 arma_fortran_noprefix(arma_cpotrf)(uplo, n, a, lda, info); 00213 } 00214 00215 void arma_fortran_prefix(arma_zpotrf)(char* uplo, blas_int* n, void* a, blas_int* lda, blas_int* info) 00216 { 00217 arma_fortran_noprefix(arma_zpotrf)(uplo, n, a, lda, info); 00218 } 00219 00220 00221 00222 void arma_fortran_prefix(arma_spotri)(char* uplo, blas_int* n, float* a, blas_int* lda, blas_int* info) 00223 { 00224 arma_fortran_noprefix(arma_spotri)(uplo, n, a, lda, info); 00225 } 00226 00227 void arma_fortran_prefix(arma_dpotri)(char* uplo, blas_int* n, double* a, blas_int* lda, blas_int* info) 00228 { 00229 arma_fortran_noprefix(arma_dpotri)(uplo, n, a, lda, info); 00230 } 00231 00232 void arma_fortran_prefix(arma_cpotri)(char* uplo, blas_int* n, void* a, blas_int* lda, blas_int* info) 00233 { 00234 arma_fortran_noprefix(arma_cpotri)(uplo, n, a, lda, info); 00235 } 00236 00237 void arma_fortran_prefix(arma_zpotri)(char* uplo, blas_int* n, void* a, blas_int* lda, blas_int* info) 00238 { 00239 arma_fortran_noprefix(arma_zpotri)(uplo, n, a, lda, info); 00240 } 00241 00242 00243 00244 void arma_fortran_prefix(arma_sgeqrf)(blas_int* m, blas_int* n, float* a, blas_int* lda, float* tau, float* work, blas_int* lwork, blas_int* info) 00245 { 00246 arma_fortran_noprefix(arma_sgeqrf)(m, n, a, lda, tau, work, lwork, info); 00247 } 00248 00249 void arma_fortran_prefix(arma_dgeqrf)(blas_int* m, blas_int* n, double* a, blas_int* lda, double* tau, double* work, blas_int* lwork, blas_int* info) 00250 { 00251 arma_fortran_noprefix(arma_dgeqrf)(m, n, a, lda, tau, work, lwork, info); 00252 } 00253 00254 void arma_fortran_prefix(arma_cgeqrf)(blas_int* m, blas_int* n, void* a, blas_int* lda, void* tau, void* work, blas_int* lwork, blas_int* info) 00255 { 00256 arma_fortran_noprefix(arma_cgeqrf)(m, n, a, lda, tau, work, lwork, info); 00257 } 00258 00259 void arma_fortran_prefix(arma_zgeqrf)(blas_int* m, blas_int* n, void* a, blas_int* lda, void* tau, void* work, blas_int* lwork, blas_int* info) 00260 { 00261 arma_fortran_noprefix(arma_zgeqrf)(m, n, a, lda, tau, work, lwork, info); 00262 } 00263 00264 00265 00266 void arma_fortran_prefix(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) 00267 { 00268 arma_fortran_noprefix(arma_sorgqr)(m, n, k, a, lda, tau, work, lwork, info); 00269 } 00270 00271 void arma_fortran_prefix(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) 00272 { 00273 arma_fortran_noprefix(arma_dorgqr)(m, n, k, a, lda, tau, work, lwork, info); 00274 } 00275 00276 00277 00278 void arma_fortran_prefix(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) 00279 { 00280 arma_fortran_noprefix(arma_cungqr)(m, n, k, a, lda, tau, work, lwork, info); 00281 } 00282 00283 void arma_fortran_prefix(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) 00284 { 00285 arma_fortran_noprefix(arma_zungqr)(m, n, k, a, lda, tau, work, lwork, info); 00286 } 00287 00288 00289 00290 void arma_fortran_prefix(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) 00291 { 00292 arma_fortran_noprefix(arma_sgesvd)(jobu, jobvt, m, n, a, lda, s, u, ldu, vt, ldvt, work, lwork, info); 00293 } 00294 00295 void arma_fortran_prefix(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) 00296 { 00297 arma_fortran_noprefix(arma_dgesvd)(jobu, jobvt, m, n, a, lda, s, u, ldu, vt, ldvt, work, lwork, info); 00298 } 00299 00300 00301 00302 void arma_fortran_prefix(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) 00303 { 00304 arma_fortran_noprefix(arma_cgesvd)(jobu, jobvt, m, n, a, lda, s, u, ldu, vt, ldvt, work, lwork, rwork, info); 00305 } 00306 00307 void arma_fortran_prefix(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) 00308 { 00309 arma_fortran_noprefix(arma_zgesvd)(jobu, jobvt, m, n, a, lda, s, u, ldu, vt, ldvt, work, lwork, rwork, info); 00310 } 00311 00312 00313 00314 void arma_fortran_prefix(arma_sgesv)(blas_int* n, blas_int* nrhs, float* a, blas_int* lda, blas_int* ipiv, float* b, blas_int* ldb, blas_int* info) 00315 { 00316 arma_fortran_noprefix(arma_sgesv)(n, nrhs, a, lda, ipiv, b, ldb, info); 00317 } 00318 00319 void arma_fortran_prefix(arma_dgesv)(blas_int* n, blas_int* nrhs, double* a, blas_int* lda, blas_int* ipiv, double* b, blas_int* ldb, blas_int* info) 00320 { 00321 arma_fortran_noprefix(arma_dgesv)(n, nrhs, a, lda, ipiv, b, ldb, info); 00322 } 00323 00324 void arma_fortran_prefix(arma_cgesv)(blas_int* n, blas_int* nrhs, void* a, blas_int* lda, blas_int* ipiv, void* b, blas_int* ldb, blas_int* info) 00325 { 00326 arma_fortran_noprefix(arma_cgesv)(n, nrhs, a, lda, ipiv, b, ldb, info); 00327 } 00328 00329 void arma_fortran_prefix(arma_zgesv)(blas_int* n, blas_int* nrhs, void* a, blas_int* lda, blas_int* ipiv, void* b, blas_int* ldb, blas_int* info) 00330 { 00331 arma_fortran_noprefix(arma_zgesv)(n, nrhs, a, lda, ipiv, b, ldb, info); 00332 } 00333 00334 00335 00336 void arma_fortran_prefix(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) 00337 { 00338 arma_fortran_noprefix(arma_sgels)(trans, m, n, nrhs, a, lda, b, ldb, work, lwork, info); 00339 } 00340 00341 void arma_fortran_prefix(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) 00342 { 00343 arma_fortran_noprefix(arma_dgels)(trans, m, n, nrhs, a, lda, b, ldb, work, lwork, info); 00344 } 00345 00346 void arma_fortran_prefix(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) 00347 { 00348 arma_fortran_noprefix(arma_cgels)(trans, m, n, nrhs, a, lda, b, ldb, work, lwork, info); 00349 } 00350 00351 void arma_fortran_prefix(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) 00352 { 00353 arma_fortran_noprefix(arma_zgels)(trans, m, n, nrhs, a, lda, b, ldb, work, lwork, info); 00354 } 00355 00356 00357 00358 00359 void arma_fortran_prefix(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) 00360 { 00361 arma_fortran_noprefix(arma_strtrs)(uplo, trans, diag, n, nrhs, a, lda, b, ldb, info); 00362 } 00363 00364 void arma_fortran_prefix(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) 00365 { 00366 arma_fortran_noprefix(arma_dtrtrs)(uplo, trans, diag, n, nrhs, a, lda, b, ldb, info); 00367 } 00368 00369 void arma_fortran_prefix(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) 00370 { 00371 arma_fortran_noprefix(arma_ctrtrs)(uplo, trans, diag, n, nrhs, a, lda, b, ldb, info); 00372 } 00373 00374 void arma_fortran_prefix(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) 00375 { 00376 arma_fortran_noprefix(arma_ztrtrs)(uplo, trans, diag, n, nrhs, a, lda, b, ldb, info); 00377 } 00378 00379 00380 00381 00382 void arma_fortran_prefix(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) 00383 { 00384 arma_fortran_noprefix(arma_sgees)(jobvs, sort, select, n, a, lda, sdim, wr, wi, vs, ldvs, work, lwork, bwork, info); 00385 } 00386 00387 void arma_fortran_prefix(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) 00388 { 00389 arma_fortran_noprefix(arma_dgees)(jobvs, sort, select, n, a, lda, sdim, wr, wi, vs, ldvs, work, lwork, bwork, info); 00390 } 00391 00392 00393 00394 void arma_fortran_prefix(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) 00395 { 00396 arma_fortran_noprefix(arma_cgees)(jobvs, sort, select, n, a, lda, sdim, w, vs, ldvs, work, lwork, rwork, bwork, info); 00397 } 00398 00399 void arma_fortran_prefix(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) 00400 { 00401 arma_fortran_noprefix(arma_zgees)(jobvs, sort, select, n, a, lda, sdim, w, vs, ldvs, work, lwork, rwork, bwork, info); 00402 } 00403 00404 00405 00406 void arma_fortran_prefix(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) 00407 { 00408 arma_fortran_noprefix(arma_strsyl)(transa, transb, isgn, m, n, a, lda, b, ldb, c, ldc, scale, info); 00409 } 00410 00411 void arma_fortran_prefix(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) 00412 { 00413 arma_fortran_noprefix(arma_dtrsyl)(transa, transb, isgn, m, n, a, lda, b, ldb, c, ldc, scale, info); 00414 } 00415 00416 void arma_fortran_prefix(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) 00417 { 00418 arma_fortran_noprefix(arma_ctrsyl)(transa, transb, isgn, m, n, a, lda, b, ldb, c, ldc, scale, info); 00419 } 00420 00421 void arma_fortran_prefix(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) 00422 { 00423 arma_fortran_noprefix(arma_ztrsyl)(transa, transb, isgn, m, n, a, lda, b, ldb, c, ldc, scale, info); 00424 } 00425 00426 00427 00428 00429 void arma_fortran_prefix(arma_ssytrf)(char* uplo, blas_int* n, float* a, blas_int* lda, blas_int* ipiv, float* work, blas_int* lwork, blas_int* info) 00430 { 00431 arma_fortran_noprefix(arma_ssytrf)(uplo, n, a, lda, ipiv, work, lwork, info); 00432 } 00433 00434 void arma_fortran_prefix(arma_dsytrf)(char* uplo, blas_int* n, double* a, blas_int* lda, blas_int* ipiv, double* work, blas_int* lwork, blas_int* info) 00435 { 00436 arma_fortran_noprefix(arma_dsytrf)(uplo, n, a, lda, ipiv, work, lwork, info); 00437 } 00438 00439 void arma_fortran_prefix(arma_csytrf)(char* uplo, blas_int* n, void* a, blas_int* lda, blas_int* ipiv, void* work, blas_int* lwork, blas_int* info) 00440 { 00441 arma_fortran_noprefix(arma_csytrf)(uplo, n, a, lda, ipiv, work, lwork, info); 00442 } 00443 00444 void arma_fortran_prefix(arma_zsytrf)(char* uplo, blas_int* n, void* a, blas_int* lda, blas_int* ipiv, void* work, blas_int* lwork, blas_int* info) 00445 { 00446 arma_fortran_noprefix(arma_zsytrf)(uplo, n, a, lda, ipiv, work, lwork, info); 00447 } 00448 00449 00450 00451 00452 void arma_fortran_prefix(arma_ssytri)(char* uplo, blas_int* n, float* a, blas_int* lda, blas_int* ipiv, float* work, blas_int* info) 00453 { 00454 arma_fortran_noprefix(arma_ssytri)(uplo, n, a, lda, ipiv, work, info); 00455 } 00456 00457 void arma_fortran_prefix(arma_dsytri)(char* uplo, blas_int* n, double* a, blas_int* lda, blas_int* ipiv, double* work, blas_int* info) 00458 { 00459 arma_fortran_noprefix(arma_dsytri)(uplo, n, a, lda, ipiv, work, info); 00460 } 00461 00462 void arma_fortran_prefix(arma_csytri)(char* uplo, blas_int* n, void* a, blas_int* lda, blas_int* ipiv, void* work, blas_int* info) 00463 { 00464 arma_fortran_noprefix(arma_csytri)(uplo, n, a, lda, ipiv, work, info); 00465 } 00466 00467 void arma_fortran_prefix(arma_zsytri)(char* uplo, blas_int* n, void* a, blas_int* lda, blas_int* ipiv, void* work, blas_int* info) 00468 { 00469 arma_fortran_noprefix(arma_zsytri)(uplo, n, a, lda, ipiv, work, info); 00470 } 00471 00472 #endif 00473 00474 00475 00476 #if defined(ARMA_USE_ATLAS) 00477 00478 float wrapper_cblas_sdot(const int N, const float *X, const int incX, const float *Y, const int incY) 00479 { 00480 return cblas_sdot(N, X, incX, Y, incY); 00481 } 00482 00483 double wrapper_cblas_ddot(const int N, const double *X, const int incX, const double *Y, const int incY) 00484 { 00485 return cblas_ddot(N, X, incX, Y, incY); 00486 } 00487 00488 void wrapper_cblas_cdotu_sub(const int N, const void *X, const int incX, const void *Y, const int incY, void *dotu) 00489 { 00490 cblas_cdotu_sub(N, X, incX, Y, incY, dotu); 00491 } 00492 00493 void wrapper_cblas_zdotu_sub(const int N, const void *X, const int incX, const void *Y, const int incY, void *dotu) 00494 { 00495 cblas_zdotu_sub(N, X, incX, Y, incY, dotu); 00496 } 00497 00498 00499 00500 void wrapper_cblas_sgemv(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, const int M, const int N, const float alpha, 00501 const float *A, const int lda, const float *X, const int incX, const float beta, float *Y, const int incY) 00502 { 00503 cblas_sgemv(Order, TransA, M, N, alpha, A, lda, X, incX, beta, Y, incY); 00504 } 00505 00506 void wrapper_cblas_dgemv(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, const int M, const int N, const double alpha, 00507 const double *A, const int lda, const double *X, const int incX, const double beta, double *Y, const int incY) 00508 { 00509 cblas_dgemv(Order, TransA, M, N, alpha, A, lda, X, incX, beta, Y, incY); 00510 } 00511 00512 void wrapper_cblas_cgemv(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, const int M, const int N, const void *alpha, 00513 const void *A, const int lda, const void *X, const int incX, const void *beta, void *Y, const int incY) 00514 { 00515 cblas_cgemv(Order, TransA, M, N, alpha, A, lda, X, incX, beta, Y, incY); 00516 } 00517 00518 void wrapper_cblas_zgemv(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, const int M, const int N, const void *alpha, 00519 const void *A, const int lda, const void *X, const int incX, const void *beta, void *Y, const int incY) 00520 { 00521 cblas_zgemv(Order, TransA, M, N, alpha, A, lda, X, incX, beta, Y, incY); 00522 } 00523 00524 00525 00526 void wrapper_cblas_sgemm(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_TRANSPOSE TransB, 00527 const int M, const int N, const int K, const float alpha, 00528 const float *A, const int lda, const float *B, const int ldb, const float beta, float *C, const int ldc) 00529 { 00530 cblas_sgemm(Order, TransA, TransB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); 00531 } 00532 00533 void wrapper_cblas_dgemm(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_TRANSPOSE TransB, 00534 const int M, const int N, const int K, const double alpha, 00535 const double *A, const int lda, const double *B, const int ldb, const double beta, double *C, const int ldc) 00536 { 00537 cblas_dgemm(Order, TransA, TransB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); 00538 } 00539 00540 void wrapper_cblas_cgemm(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_TRANSPOSE TransB, 00541 const int M, const int N, const int K, const void *alpha, 00542 const void *A, const int lda, const void *B, const int ldb, const void *beta, void *C, const int ldc) 00543 { 00544 cblas_cgemm(Order, TransA, TransB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); 00545 } 00546 00547 void wrapper_cblas_zgemm(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_TRANSPOSE TransB, 00548 const int M, const int N, const int K, const void *alpha, 00549 const void *A, const int lda, const void *B, const int ldb, const void *beta, void *C, const int ldc) 00550 { 00551 cblas_zgemm(Order, TransA, TransB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); 00552 } 00553 00554 00555 00556 int wrapper_clapack_sgetrf(const enum CBLAS_ORDER Order, const int M, const int N, float *A, const int lda, int *ipiv) 00557 { 00558 return clapack_sgetrf(Order, M, N, A, lda, ipiv); 00559 } 00560 00561 int wrapper_clapack_dgetrf(const enum CBLAS_ORDER Order, const int M, const int N, double *A, const int lda, int *ipiv) 00562 { 00563 return clapack_dgetrf(Order, M, N, A, lda, ipiv); 00564 } 00565 00566 int wrapper_clapack_cgetrf(const enum CBLAS_ORDER Order, const int M, const int N, void *A, const int lda, int *ipiv) 00567 { 00568 return clapack_cgetrf(Order, M, N, A, lda, ipiv); 00569 } 00570 00571 int wrapper_clapack_zgetrf(const enum CBLAS_ORDER Order, const int M, const int N, void *A, const int lda, int *ipiv) 00572 { 00573 return clapack_zgetrf(Order, M, N, A, lda, ipiv); 00574 } 00575 00576 00577 00578 int wrapper_clapack_sgetri(const enum CBLAS_ORDER Order, const int N, float *A, const int lda, const int *ipiv) 00579 { 00580 return clapack_sgetri(Order, N, A, lda, ipiv); 00581 } 00582 00583 int wrapper_clapack_dgetri(const enum CBLAS_ORDER Order, const int N, double *A, const int lda, const int *ipiv) 00584 { 00585 return clapack_dgetri(Order, N, A, lda, ipiv); 00586 } 00587 00588 int wrapper_clapack_cgetri(const enum CBLAS_ORDER Order, const int N, void *A, const int lda, const int *ipiv) 00589 { 00590 return clapack_cgetri(Order, N, A, lda, ipiv); 00591 } 00592 00593 int wrapper_clapack_zgetri(const enum CBLAS_ORDER Order, const int N, void *A, const int lda, const int *ipiv) 00594 { 00595 return clapack_zgetri(Order, N, A, lda, ipiv); 00596 } 00597 00598 00599 00600 int wrapper_clapack_sgesv(const enum CBLAS_ORDER Order, const int N, const int NRHS, float *A, const int lda, int *ipiv, float *B, const int ldb) 00601 { 00602 return clapack_sgesv(Order, N, NRHS, A, lda, ipiv, B, ldb); 00603 } 00604 00605 int wrapper_clapack_dgesv(const enum CBLAS_ORDER Order, const int N, const int NRHS, double *A, const int lda, int *ipiv, double *B, const int ldb) 00606 { 00607 return clapack_dgesv(Order, N, NRHS, A, lda, ipiv, B, ldb); 00608 } 00609 00610 int wrapper_clapack_cgesv(const enum CBLAS_ORDER Order, const int N, const int NRHS, void *A, const int lda, int *ipiv, void *B, const int ldb) 00611 { 00612 return clapack_cgesv(Order, N, NRHS, A, lda, ipiv, B, ldb); 00613 } 00614 00615 int wrapper_clapack_zgesv(const enum CBLAS_ORDER Order, const int N, const int NRHS, void *A, const int lda, int *ipiv, void *B, const int ldb) 00616 { 00617 return clapack_zgesv(Order, N, NRHS, A, lda, ipiv, B, ldb); 00618 } 00619 00620 #endif 00621 } 00622 00623 }