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
00018
00019
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 }