53 #ifdef USE_SSE_INTRINSICS
59 extern "C" void dgemm_(
const char *ta,
const char *tb,
60 const int *n,
const int *k,
const int *l,
61 const double *alpha,
const double *
A,
const int *lda,
62 const double *
B,
const int *ldb,
63 const double *beta,
double *C,
const int *ldc);
64 extern "C" void dpptrf_(
const char *uplo,
const int *n,
double* ap,
int *info);
65 extern "C" void dspgst_(
const int *itype,
const char *uplo,
const int *n,
66 double* ap,
const double *bp,
int *info);
67 extern "C" void dtptri_(
const char *uplo,
const char *diag,
const int *n,
68 double* ap,
int *info);
71 extern "C" void dtrmm_(
const char *
side,
const char *uplo,
const char *transa,
72 const char *diag,
const int *m,
const int *n,
73 const double *alpha,
const double *
A,
const int *lda,
74 double *
B,
const int *ldb);
75 extern "C" void dsygv_(
const int *itype,
const char *jobz,
76 const char *uplo,
const int *n,
77 double *
A,
const int *lda,
double *
B,
const int *ldb,
78 double* w,
double* work,
const int *lwork,
int *info);
79 extern "C" void dggev_(
const char *jobbl,
const char *jobvr,
const int *n,
80 double *
A,
const int *lda,
double *
B,
const int *ldb,
81 double *alphar,
double *alphai,
double *beta,
82 double *vl,
const int *ldvl,
83 double *vr,
const int *ldvr,
84 double *work,
const int *lwork,
int *info);
85 extern "C" void dpotrf_(
const char *uplo,
const int *n,
double *
A,
86 const int *lda,
int *info);
87 extern "C" void dtrtri_(
const char *uplo,
const char *diag,
const int *n,
88 double *
A,
const int *lda,
int *info);
89 extern "C" void dsyrk_(
const char *uplo,
const char *trans,
const int *n,
90 const int *k,
const double *alpha,
const double *
A,
91 const int *lda,
const double *beta,
92 double *C,
const int *ldc);
93 extern "C" void dsymm_(
const char *
side,
const char *uplo,
94 const int *m,
const int *n,
95 const double *alpha,
const double *
A,
const int *lda,
96 const double *
B,
const int *ldb,
const double* beta,
97 double *C,
const int *ldc);
98 extern "C" void dpocon_(
const char *uplo,
const int *n,
const double *
A,
99 const int *lda,
const double *anorm,
double *rcond,
100 double *work,
int *iwork,
int *info);
101 extern "C" void dstevx_(
const char *jobz,
const char *range,
const int *n,
102 double *d,
double *e,
const double *vl,
103 const double *vu,
const int *il,
const int *iu,
104 const double *abstol,
int *m,
double *w,
double *z,
105 const int *ldz,
double *work,
int *iwork,
int *ifail,
107 extern "C" void dstevr_(
const char *jobz,
const char *range,
const int *n,
108 double *d,
double *e,
const double *vl,
109 const double *vu,
const int *il,
const int *iu,
110 const double *abstol,
int *m,
double *w,
double *z,
111 const int *ldz,
int* isuppz,
double *work,
int* lwork,
112 int *iwork,
int* liwork,
int *info);
113 extern "C" void dsyev_(
const char *jobz,
const char *uplo,
const int *n,
114 double *a,
const int *lda,
double *w,
double *work,
115 const int *lwork,
int *info);
118 extern "C" void dgemv_(
const char *ta,
const int *m,
const int *n,
119 const double *alpha,
const double *
A,
const int *lda,
120 const double *x,
const int *incx,
const double *beta,
121 double *y,
const int *incy);
122 extern "C" void dsymv_(
const char *uplo,
const int *n,
123 const double *alpha,
const double *
A,
const int *lda,
124 const double *x,
const int *incx,
const double *beta,
125 double *y,
const int *incy);
126 extern "C" void dtrmv_(
const char *uplo,
const char *trans,
const char *diag,
127 const int *n,
const double *
A,
const int *lda,
128 double *x,
const int *incx);
130 extern "C" void dscal_(
const int* n,
const double* da,
double* dx,
132 extern "C" double ddot_(
const int* n,
const double* dx,
const int* incx,
133 const double* dy,
const int* incy);
134 extern "C" void daxpy_(
const int* n,
const double* da,
const double* dx,
135 const int* incx,
double* dy,
const int* incy);
139 extern "C" void sgemm_(
const char *ta,
const char *tb,
140 const int *n,
const int *k,
const int *l,
141 const float *alpha,
const float *
A,
const int *lda,
142 const float *
B,
const int *ldb,
143 const float *beta,
float *C,
const int *ldc);
144 extern "C" void spptrf_(
const char *uplo,
const int *n,
float* ap,
int *info);
145 extern "C" void sspgst_(
const int *itype,
const char *uplo,
const int *n,
146 float* ap,
const float *bp,
int *info);
147 extern "C" void stptri_(
const char *uplo,
const char *diag,
const int *n,
148 float* ap,
int *info);
151 extern "C" void strmm_(
const char *
side,
const char *uplo,
const char *transa,
152 const char *diag,
const int *m,
const int *n,
153 const float *alpha,
const float *
A,
const int *lda,
154 float *
B,
const int *ldb);
155 extern "C" void ssygv_(
const int *itype,
const char *jobz,
156 const char *uplo,
const int *n,
157 float *
A,
const int *lda,
float *
B,
const int *ldb,
158 float* w,
float* work,
const int *lwork,
int *info);
159 extern "C" void sggev_(
const char *jobbl,
const char *jobvr,
const int *n,
160 float *
A,
const int *lda,
float *
B,
const int *ldb,
161 float *alphar,
float *alphai,
float *beta,
162 float *vl,
const int *ldvl,
163 float *vr,
const int *ldvr,
164 float *work,
const int *lwork,
int *info);
165 extern "C" void spotrf_(
const char *uplo,
const int *n,
float *
A,
166 const int *lda,
int *info);
167 extern "C" void strtri_(
const char *uplo,
const char *diag,
const int *n,
168 float *
A,
const int *lda,
int *info);
169 extern "C" void ssyrk_(
const char *uplo,
const char *trans,
const int *n,
170 const int *k,
const float *alpha,
const float *
A,
171 const int *lda,
const float *beta,
172 float *C,
const int *ldc);
173 extern "C" void ssymm_(
const char *
side,
const char *uplo,
174 const int *m,
const int *n,
175 const float *alpha,
const float *
A,
const int *lda,
176 const float *
B,
const int *ldb,
const float* beta,
177 float *C,
const int *ldc);
178 extern "C" void spocon_(
const char *uplo,
const int *n,
const float *
A,
179 const int *lda,
const float *anorm,
float *rcond,
180 float *work,
int *iwork,
int *info);
181 extern "C" void sstevx_(
const char *jobz,
const char *range,
const int *n,
182 float *d,
float *e,
const float *vl,
183 const float *vu,
const int *il,
const int *iu,
184 const float *abstol,
int *m,
float *w,
float *z,
185 const int *ldz,
float *work,
int *iwork,
int *ifail,
187 extern "C" void sstevr_(
const char *jobz,
const char *range,
const int *n,
188 float *d,
float *e,
const float *vl,
189 const float *vu,
const int *il,
const int *iu,
190 const float *abstol,
int *m,
float *w,
float *z,
191 const int *ldz,
int* isuppz,
float *work,
int* lwork,
192 int *iwork,
int* liwork,
int *info);
193 extern "C" void ssyev_(
const char *jobz,
const char *uplo,
const int *n,
194 float *a,
const int *lda,
float *w,
float *work,
195 const int *lwork,
int *info);
198 extern "C" void sgemv_(
const char *ta,
const int *m,
const int *n,
199 const float *alpha,
const float *
A,
const int *lda,
200 const float *x,
const int *incx,
const float *beta,
201 float *y,
const int *incy);
202 extern "C" void ssymv_(
const char *uplo,
const int *n,
203 const float *alpha,
const float *
A,
const int *lda,
204 const float *x,
const int *incx,
const float *beta,
205 float *y,
const int *incy);
206 extern "C" void strmv_(
const char *uplo,
const char *trans,
const char *diag,
207 const int *n,
const float *
A,
const int *lda,
208 float *x,
const int *incx);
210 extern "C" void sscal_(
const int* n,
const float* da,
float* dx,
215 extern "C" double sdot_(
const int* n,
const float* dx,
const int* incx,
216 const float* dy,
const int* incy);
218 extern "C" void saxpy_(
const int* n,
const float* da,
const float* dx,
219 const int* incx,
float* dy,
const int* incy);
230 inline static void gemm(
const char *ta,
const char *tb,
231 const int *n,
const int *k,
const int *l,
232 const T *alpha,
const T *
A,
const int *lda,
233 const T *
B,
const int *ldb,
234 const T *beta,T *C,
const int *ldc) {
235 #ifdef USE_SSE_INTRINSICS
236 if (*ta ==
'N' && *tb ==
'N' && *n == 32 && *k == 32 && *l == 32 && *alpha == 1.0 && *beta == 1) {
240 int pack_max_size = 10000;
241 if ( (pack_max_size*
sizeof(T))%16 )
242 throw std::runtime_error(
"In gblas gemm: requested buffer size not multiple of 16 bytes");
244 Memory_buffer_thread::instance().get_buffer(pack_max_size*3, buffer);
246 B_packed = buffer + pack_max_size;
247 C_packed = buffer + 2*pack_max_size;
248 gemm_sse<T>(
A,
B,C,32,32,32,
249 A_packed, B_packed, C_packed,
250 pack_max_size, pack_max_size, pack_max_size);
254 template_blas_gemm(ta,tb,n,k,l,alpha,A,lda,B,ldb,beta,C,ldc);
261 inline static void pptrf(
const char *uplo,
const int *n, T* ap,
int *info) {
266 inline static void spgst(
const int *itype,
const char *uplo,
const int *n,
267 T* ap,
const T *bp,
int *info) {
273 inline static void tptri(
const char *uplo,
const char *diag,
const int *n,
279 inline static void trmm(
const char *
side,
const char *uplo,
280 const char *transa,
const char *diag,
281 const int *m,
const int *n,
282 const T *alpha,
const T *
A,
const int *lda,
283 T *
B,
const int *ldb) {
284 template_blas_trmm(side,uplo,transa,diag,m,n,alpha,A,lda,B,ldb);
291 inline static void sygv(
const int *itype,
const char *jobz,
292 const char *uplo,
const int *n,
293 T *
A,
const int *lda,T *
B,
const int *ldb,
294 T* w,T* work,
const int *lwork,
int *info) {
295 template_lapack_sygv(itype,jobz,uplo,n,A,lda,B,ldb,w,work,lwork,info);
299 inline static void ggev(
const char *jobbl,
const char *jobvr,
300 const int *n, T *
A,
const int *lda,
301 T *
B,
const int *ldb, T *alphar,
302 T *alphai, T *beta, T *vl,
303 const int *ldvl, T *vr,
const int *ldvr,
304 T *work,
const int *lwork,
int *info) {
305 template_lapack_ggev(jobbl, jobvr, n, A, lda, B, ldb, alphar, alphai, beta, vl,
306 ldvl, vr, ldvr, work, lwork, info);
312 inline static void potrf(
const char *uplo,
const int *n, T *
A,
313 const int *lda,
int *info) {
319 inline static void trtri(
const char *uplo,
const char *diag,
const int *n,
320 T *
A,
const int *lda,
int *info) {
324 uploCopy[0] = uplo[0];
326 diagCopy[0] = diag[0];
332 inline static void syrk(
const char *uplo,
const char *trans,
const int *n,
333 const int *k,
const T *alpha,
const T *
A,
334 const int *lda,
const T *beta,
335 T *C,
const int *ldc) {
340 inline static void symm(
const char *
side,
const char *uplo,
341 const int *m,
const int *n,
342 const T *alpha,
const T *
A,
const int *lda,
343 const T *
B,
const int *ldb,
const T* beta,
344 T *C,
const int *ldc) {
345 template_blas_symm(side, uplo, m, n, alpha, A, lda, B, ldb, beta, C, ldc);
349 inline static void pocon(
const char *uplo,
const int *n,
const T *
A,
350 const int *lda,
const T *anorm, T *rcond,
351 T *work,
int *iwork,
int *info) {
356 inline static void stevx(
const char *jobz,
const char *range,
357 const int *n, T *d, T *e,
const T *vl,
358 const T *vu,
const int *il,
const int *iu,
359 const T *abstol,
int *m, T *w, T *z,
360 const int *ldz, T *work,
int *iwork,
int *ifail,
362 template_lapack_stevx(jobz, range, n, d, e, vl, vu, il, iu, abstol, m, w, z, ldz,
363 work, iwork, ifail, info);
367 inline static void stevr(
const char *jobz,
const char *range,
const int *n,
368 T *d, T *e,
const T *vl,
369 const T *vu,
const int *il,
const int *iu,
370 const T *abstol,
int *m, T *w, T *z,
371 const int *ldz,
int* isuppz, T *work,
int* lwork,
372 int *iwork,
int* liwork,
int *info) {
373 template_lapack_stevr(jobz, range, n, d, e, vl, vu, il, iu, abstol,
374 m, w, z, ldz, isuppz,
375 work, lwork, iwork, liwork, info);
380 inline static void syev(
const char *jobz,
const char *uplo,
const int *n,
381 T *a,
const int *lda, T *w, T *work,
382 const int *lwork,
int *info) {
389 inline static void gemv(
const char *ta,
const int *m,
const int *n,
390 const T *alpha,
const T *
A,
392 const T *x,
const int *incx,
393 const T *beta, T *y,
const int *incy) {
394 template_blas_gemv(ta, m, n, alpha, A, lda, x, incx, beta, y, incy);
398 inline static void symv(
const char *uplo,
const int *n,
399 const T *alpha,
const T *
A,
400 const int *lda,
const T *x,
401 const int *incx,
const T *beta,
402 T *y,
const int *incy) {
407 inline static void trmv(
const char *uplo,
const char *trans,
408 const char *diag,
const int *n,
409 const T *
A,
const int *lda,
410 T *x,
const int *incx) {
417 inline static void scal(
const int* n,
const T* da, T* dx,
423 inline static T
dot(
const int* n,
const T* dx,
const int* incx,
424 const T* dy,
const int* incy) {
429 inline static void axpy(
const int* n,
const T* da,
const T* dx,
430 const int* incx, T* dy,
const int* incy) {
440 #ifndef USE_LINALG_TEMPLATES
446 const int *n,
const int *k,
const int *l,
448 const double *
A,
const int *lda,
449 const double *
B,
const int *ldb,
451 double *C,
const int *ldc) {
453 clock_t start = clock();
454 dgemm_(ta,tb,n,k,l,alpha,A,lda,B,ldb,beta,C,ldc);
455 Gblas::time += ((float)(clock() - start)) / (CLOCKS_PER_SEC);
458 dgemm_(ta,tb,n,k,l,alpha,A,lda,B,ldb,beta,C,ldc);
464 double* ap,
int *info) {
466 clock_t start = clock();
468 Gblas::time += ((float)(clock() - start)) / (CLOCKS_PER_SEC);
478 double* ap,
const double *bp,
int *info) {
480 clock_t start = clock();
481 dspgst_(itype,uplo,n,ap,bp,info);
482 Gblas::time += ((float)(clock() - start)) / (CLOCKS_PER_SEC);
485 dspgst_(itype,uplo,n,ap,bp,info);
491 double* ap,
int *info) {
493 clock_t start = clock();
495 Gblas::time += ((float)(clock() - start)) / (CLOCKS_PER_SEC);
505 const char *diag,
const int *m,
const int *n,
507 const double *
A,
const int *lda,
508 double *
B,
const int *ldb) {
510 clock_t start = clock();
511 dtrmm_(side,uplo,transa,diag,m,n,alpha,A,lda,B,ldb);
512 Gblas::time += ((float)(clock() - start)) / (CLOCKS_PER_SEC);
515 dtrmm_(side,uplo,transa,diag,m,n,alpha,A,lda,B,ldb);
521 const char *uplo,
const int *n,
522 double *
A,
const int *lda,
523 double *
B,
const int *ldb,
524 double* w,
double* work,
525 const int *lwork,
int *info) {
527 clock_t start = clock();
528 dsygv_(itype,jobz,uplo,n,A,lda,B,ldb,w,work,lwork,info);
529 Gblas::time += ((float)(clock() - start)) / (CLOCKS_PER_SEC);
532 dsygv_(itype,jobz,uplo,n,A,lda,B,ldb,w,work,lwork,info);
538 const int *n,
double *
A,
const int *lda,
539 double *
B,
const int *ldb,
double *alphar,
540 double *alphai,
double *beta,
double *vl,
541 const int *ldvl,
double *vr,
const int *ldvr,
542 double *work,
const int *lwork,
int *info) {
544 clock_t start = clock();
545 dggev_(jobbl, jobvr, n, A, lda, B, ldb, alphar, alphai, beta, vl,
546 ldvl, vr, ldvr, work, lwork, info);
547 Gblas::time += ((float)(clock() - start)) / (CLOCKS_PER_SEC);
550 dggev_(jobbl, jobvr, n, A, lda, B, ldb, alphar, alphai, beta, vl,
551 ldvl, vr, ldvr, work, lwork, info);
558 const int *lda,
int *info) {
560 clock_t start = clock();
561 dpotrf_(uplo, n, A, lda, info);
562 Gblas::time += ((float)(clock() - start)) / (CLOCKS_PER_SEC);
565 dpotrf_(uplo, n, A, lda, info);
571 double *
A,
const int *lda,
int *info) {
573 clock_t start = clock();
574 dtrtri_(uplo, diag, n, A, lda, info);
575 Gblas::time += ((float)(clock() - start)) / (CLOCKS_PER_SEC);
578 dtrtri_(uplo, diag, n, A, lda, info);
584 const int *n,
const int *k,
const double *alpha,
585 const double *
A,
const int *lda,
586 const double *beta,
double *C,
const int *ldc) {
588 clock_t start = clock();
589 dsyrk_(uplo, trans, n, k, alpha, A, lda, beta, C, ldc);
590 Gblas::time += ((float)(clock() - start)) / (CLOCKS_PER_SEC);
593 dsyrk_(uplo, trans, n, k, alpha, A, lda, beta, C, ldc);
599 const int *m,
const int *n,
const double *alpha,
600 const double *
A,
const int *lda,
601 const double *
B,
const int *ldb,
603 double *C,
const int *ldc) {
605 clock_t start = clock();
606 dsymm_(side, uplo, m, n, alpha, A, lda, B, ldb, beta, C, ldc);
607 Gblas::time += ((float)(clock() - start)) / (CLOCKS_PER_SEC);
610 dsymm_(side, uplo, m, n, alpha, A, lda, B, ldb, beta, C, ldc);
616 const double *
A,
const int *lda,
617 const double *anorm,
double *rcond,
618 double *work,
int *iwork,
int *info) {
620 clock_t start = clock();
621 dpocon_(uplo, n, A, lda, anorm, rcond, work, iwork, info);
622 Gblas::time += ((float)(clock() - start)) / (CLOCKS_PER_SEC);
625 dpocon_(uplo, n, A, lda, anorm, rcond, work, iwork, info);
631 const int *n,
double *d,
double *e,
633 const double *vu,
const int *il,
const int *iu,
634 const double *abstol,
int *m,
double *w,
636 const int *ldz,
double *work,
int *iwork,
637 int *ifail,
int *info) {
639 clock_t start = clock();
640 dstevx_(jobz, range, n, d, e, vl, vu, il, iu, abstol, m, w, z, ldz,
641 work, iwork, ifail, info);
642 Gblas::time += ((float)(clock() - start)) / (CLOCKS_PER_SEC);
645 dstevx_(jobz, range, n, d, e, vl, vu, il, iu, abstol, m, w, z, ldz,
646 work, iwork, ifail, info);
652 const int *n,
double *d,
double *e,
653 const double *vl,
const double *vu,
654 const int *il,
const int *iu,
655 const double *abstol,
657 double *z,
const int *ldz,
int* isuppz,
658 double *work,
int* lwork,
659 int *iwork,
int* liwork,
int *info) {
661 clock_t start = clock();
662 dstevr_(jobz, range, n, d, e, vl, vu, il, iu, abstol,
663 m, w, z, ldz, isuppz, work, lwork, iwork, liwork, info);
664 Gblas::time += ((float)(clock() - start)) / (CLOCKS_PER_SEC);
667 dstevr_(jobz, range, n, d, e, vl, vu, il, iu, abstol,
668 m, w, z, ldz, isuppz, work, lwork, iwork, liwork, info);
675 inline void syev<double>(
const char *jobz,
const char *uplo,
const int *n,
676 double *a,
const int *lda,
double *w,
677 double *work,
const int *lwork,
int *info) {
679 clock_t start = clock();
680 dsyev_(jobz, uplo, n, a, lda, w, work, lwork, info);
681 Gblas::time += ((float)(clock() - start)) / (CLOCKS_PER_SEC);
684 dsyev_(jobz, uplo, n, a, lda, w, work, lwork, info);
692 const double *alpha,
const double *
A,
694 const double *x,
const int *incx,
695 const double *beta,
double *y,
const int *incy) {
697 clock_t start = clock();
698 dgemv_(ta, m, n, alpha, A, lda, x, incx, beta, y, incy);
699 Gblas::time += ((float)(clock() - start)) / (CLOCKS_PER_SEC);
702 dgemv_(ta, m, n, alpha, A, lda, x, incx, beta, y, incy);
708 const double *alpha,
const double *
A,
709 const int *lda,
const double *x,
710 const int *incx,
const double *beta,
711 double *y,
const int *incy) {
713 clock_t start = clock();
714 dsymv_(uplo, n, alpha, A, lda, x, incx, beta, y, incy);
715 Gblas::time += ((float)(clock() - start)) / (CLOCKS_PER_SEC);
718 dsymv_(uplo, n, alpha, A, lda, x, incx, beta, y, incy);
724 const char *diag,
const int *n,
725 const double *
A,
const int *lda,
726 double *x,
const int *incx) {
728 clock_t start = clock();
729 dtrmv_(uplo, trans, diag, n, A, lda, x, incx);
730 Gblas::time += ((float)(clock() - start)) / (CLOCKS_PER_SEC);
733 dtrmv_(uplo, trans, diag, n, A, lda, x, incx);
743 clock_t start = clock();
745 Gblas::time += ((float)(clock() - start)) / (CLOCKS_PER_SEC);
753 inline double dot<double>(
const int* n,
const double* dx,
const int* incx,
754 const double* dy,
const int* incy) {
757 clock_t start = clock();
758 tmp =
ddot_(n, dx, incx, dy, incy);
759 Gblas::time += ((float)(clock() - start)) / (CLOCKS_PER_SEC);
762 tmp =
ddot_(n, dx, incx, dy, incy);
768 inline void axpy<double>(
const int* n,
const double* da,
const double* dx,
769 const int* incx,
double* dy,
const int* incy) {
771 clock_t start = clock();
772 daxpy_(n, da, dx, incx, dy, incy);
773 Gblas::time += ((float)(clock() - start)) / (CLOCKS_PER_SEC);
776 daxpy_(n, da, dx, incx, dy, incy);
784 const int *n,
const int *k,
const int *l,
786 const float *
A,
const int *lda,
787 const float *
B,
const int *ldb,
789 float *C,
const int *ldc) {
791 clock_t start = clock();
792 sgemm_(ta,tb,n,k,l,alpha,A,lda,B,ldb,beta,C,ldc);
793 Gblas::time += ((float)(clock() - start)) / (CLOCKS_PER_SEC);
796 sgemm_(ta,tb,n,k,l,alpha,A,lda,B,ldb,beta,C,ldc);
802 float* ap,
int *info) {
804 clock_t start = clock();
806 Gblas::time += ((float)(clock() - start)) / (CLOCKS_PER_SEC);
816 float* ap,
const float *bp,
int *info) {
818 clock_t start = clock();
819 sspgst_(itype,uplo,n,ap,bp,info);
820 Gblas::time += ((float)(clock() - start)) / (CLOCKS_PER_SEC);
823 sspgst_(itype,uplo,n,ap,bp,info);
830 float* ap,
int *info) {
832 clock_t start = clock();
834 Gblas::time += ((float)(clock() - start)) / (CLOCKS_PER_SEC);
844 const char *diag,
const int *m,
const int *n,
846 const float *
A,
const int *lda,
847 float *
B,
const int *ldb) {
849 clock_t start = clock();
850 strmm_(side,uplo,transa,diag,m,n,alpha,A,lda,B,ldb);
851 Gblas::time += ((float)(clock() - start)) / (CLOCKS_PER_SEC);
854 strmm_(side,uplo,transa,diag,m,n,alpha,A,lda,B,ldb);
860 const char *uplo,
const int *n,
861 float *
A,
const int *lda,
862 float *
B,
const int *ldb,
863 float* w,
float* work,
864 const int *lwork,
int *info) {
866 clock_t start = clock();
867 ssygv_(itype,jobz,uplo,n,A,lda,B,ldb,w,work,lwork,info);
868 Gblas::time += ((float)(clock() - start)) / (CLOCKS_PER_SEC);
871 ssygv_(itype,jobz,uplo,n,A,lda,B,ldb,w,work,lwork,info);
877 const int *n,
float *
A,
const int *lda,
878 float *
B,
const int *ldb,
float *alphar,
879 float *alphai,
float *beta,
float *vl,
880 const int *ldvl,
float *vr,
const int *ldvr,
881 float *work,
const int *lwork,
int *info) {
883 clock_t start = clock();
884 sggev_(jobbl, jobvr, n, A, lda, B, ldb, alphar, alphai, beta, vl,
885 ldvl, vr, ldvr, work, lwork, info);
886 Gblas::time += ((float)(clock() - start)) / (CLOCKS_PER_SEC);
889 sggev_(jobbl, jobvr, n, A, lda, B, ldb, alphar, alphai, beta, vl,
890 ldvl, vr, ldvr, work, lwork, info);
897 const int *lda,
int *info) {
899 clock_t start = clock();
900 spotrf_(uplo, n, A, lda, info);
901 Gblas::time += ((float)(clock() - start)) / (CLOCKS_PER_SEC);
904 spotrf_(uplo, n, A, lda, info);
909 inline void trtri<float>(
const char *uplo,
const char *diag,
const int *n,
910 float *
A,
const int *lda,
int *info) {
912 clock_t start = clock();
913 strtri_(uplo, diag, n, A, lda, info);
914 Gblas::time += ((float)(clock() - start)) / (CLOCKS_PER_SEC);
917 strtri_(uplo, diag, n, A, lda, info);
923 const int *n,
const int *k,
const float *alpha,
924 const float *
A,
const int *lda,
925 const float *beta,
float *C,
const int *ldc) {
927 clock_t start = clock();
928 ssyrk_(uplo, trans, n, k, alpha, A, lda, beta, C, ldc);
929 Gblas::time += ((float)(clock() - start)) / (CLOCKS_PER_SEC);
932 ssyrk_(uplo, trans, n, k, alpha, A, lda, beta, C, ldc);
938 const int *m,
const int *n,
const float *alpha,
939 const float *
A,
const int *lda,
940 const float *
B,
const int *ldb,
942 float *C,
const int *ldc) {
944 clock_t start = clock();
945 ssymm_(side, uplo, m, n, alpha, A, lda, B, ldb, beta, C, ldc);
946 Gblas::time += ((float)(clock() - start)) / (CLOCKS_PER_SEC);
949 ssymm_(side, uplo, m, n, alpha, A, lda, B, ldb, beta, C, ldc);
955 const float *
A,
const int *lda,
956 const float *anorm,
float *rcond,
957 float *work,
int *iwork,
int *info) {
959 clock_t start = clock();
960 spocon_(uplo, n, A, lda, anorm, rcond, work, iwork, info);
961 Gblas::time += ((float)(clock() - start)) / (CLOCKS_PER_SEC);
964 spocon_(uplo, n, A, lda, anorm, rcond, work, iwork, info);
970 const int *n,
float *d,
float *e,
972 const float *vu,
const int *il,
const int *iu,
973 const float *abstol,
int *m,
float *w,
975 const int *ldz,
float *work,
int *iwork,
976 int *ifail,
int *info) {
978 clock_t start = clock();
979 sstevx_(jobz, range, n, d, e, vl, vu, il, iu, abstol, m, w, z, ldz,
980 work, iwork, ifail, info);
981 Gblas::time += ((float)(clock() - start)) / (CLOCKS_PER_SEC);
984 sstevx_(jobz, range, n, d, e, vl, vu, il, iu, abstol, m, w, z, ldz,
985 work, iwork, ifail, info);
991 const int *n,
float *d,
float *e,
992 const float *vl,
const float *vu,
993 const int *il,
const int *iu,
996 float *z,
const int *ldz,
int* isuppz,
997 float *work,
int* lwork,
998 int *iwork,
int* liwork,
int *info) {
1000 clock_t start = clock();
1001 sstevr_(jobz, range, n, d, e, vl, vu, il, iu, abstol,
1002 m, w, z, ldz, isuppz, work, lwork, iwork, liwork, info);
1003 Gblas::time += ((float)(clock() - start)) / (CLOCKS_PER_SEC);
1006 sstevr_(jobz, range, n, d, e, vl, vu, il, iu, abstol,
1007 m, w, z, ldz, isuppz, work, lwork, iwork, liwork, info);
1012 inline void syev<float>(
const char *jobz,
const char *uplo,
const int *n,
1013 float *a,
const int *lda,
float *w,
1014 float *work,
const int *lwork,
int *info) {
1016 clock_t start = clock();
1017 ssyev_(jobz, uplo, n, a, lda, w, work, lwork, info);
1018 Gblas::time += ((float)(clock() - start)) / (CLOCKS_PER_SEC);
1021 ssyev_(jobz, uplo, n, a, lda, w, work, lwork, info);
1029 const float *alpha,
const float *
A,
1031 const float *x,
const int *incx,
1032 const float *beta,
float *y,
const int *incy) {
1034 clock_t start = clock();
1035 sgemv_(ta, m, n, alpha, A, lda, x, incx, beta, y, incy);
1036 Gblas::time += ((float)(clock() - start)) / (CLOCKS_PER_SEC);
1039 sgemv_(ta, m, n, alpha, A, lda, x, incx, beta, y, incy);
1045 const float *alpha,
const float *
A,
1046 const int *lda,
const float *x,
1047 const int *incx,
const float *beta,
1048 float *y,
const int *incy) {
1050 clock_t start = clock();
1051 ssymv_(uplo, n, alpha, A, lda, x, incx, beta, y, incy);
1052 Gblas::time += ((float)(clock() - start)) / (CLOCKS_PER_SEC);
1055 ssymv_(uplo, n, alpha, A, lda, x, incx, beta, y, incy);
1061 const char *diag,
const int *n,
1062 const float *
A,
const int *lda,
1063 float *x,
const int *incx) {
1065 clock_t start = clock();
1066 strmv_(uplo, trans, diag, n, A, lda, x, incx);
1067 Gblas::time += ((float)(clock() - start)) / (CLOCKS_PER_SEC);
1070 strmv_(uplo, trans, diag, n, A, lda, x, incx);
1079 clock_t start = clock();
1081 Gblas::time += ((float)(clock() - start)) / (CLOCKS_PER_SEC);
1091 inline float dot<float>(
const int* n,
const float* dx,
const int* incx,
1092 const float* dy,
const int* incy) {
1095 clock_t start = clock();
1096 sdot_(n, dx, incx, dy, incy);
1097 Gblas::time += ((float)(clock() - start)) / (CLOCKS_PER_SEC);
1100 sdot_(n, dx, incx, dy, incy);
1107 inline void axpy<float>(
const int* n,
const float* da,
const float* dx,
1108 const int* incx,
float* dy,
const int* incy) {
1110 clock_t start = clock();
1111 saxpy_(n, da, dx, incx, dy, incy);
1112 Gblas::time += ((float)(clock() - start)) / (CLOCKS_PER_SEC);
1115 saxpy_(n, da, dx, incx, dy, incy);
1132 template<
class Treal>
1133 static void fulltopacked(
const Treal* full, Treal* packed,
const int size){
1135 for (
int col=0;col<size;col++)
1137 for(
int row=0;row<=col;row++)
1139 packed[pind]=full[col*size+row];
1145 template<
class Treal>
1146 static void packedtofull(
const Treal* packed, Treal* full,
const int size){
1147 int psize=(size+1)*size/2;
1150 for(
int pind=0;pind<psize;pind++)
1154 full[col*size+row]=packed[pind];
1160 full[col*size+row]=packed[pind];
1161 full[row*size+col]=packed[pind];
1167 template<
class Treal>
1170 int psize=(size+1)*size/2;
1173 for(
int pind=0;pind<psize;pind++)
1177 full[col*size+row]=packed[pind];
1183 full[col*size+row]=packed[pind];
1184 full[row*size+col]=0;
1190 template<
class Treal>
1192 for(
int col = 0; col < size - 1; col++)
1193 for(
int row = col + 1; row < size; row++)
1194 trifull[col * size + row] = 0;
void potrf< float >(const char *uplo, const int *n, float *A, const int *lda, int *info)
Definition: gblas.h:896
void trmm< float >(const char *side, const char *uplo, const char *transa, const char *diag, const int *m, const int *n, const float *alpha, const float *A, const int *lda, float *B, const int *ldb)
Definition: gblas.h:842
int template_blas_scal(const integer *n, const Treal *da, Treal *dx, const integer *incx)
Definition: template_blas_scal.h:41
void pptrf< float >(const char *uplo, const int *n, float *ap, int *info)
Definition: gblas.h:801
void gemv< float >(const char *ta, const int *m, const int *n, const float *alpha, const float *A, const int *lda, const float *x, const int *incx, const float *beta, float *y, const int *incy)
Definition: gblas.h:1028
static void trifulltofull(Treal *trifull, const int size)
Definition: gblas.h:1191
void spgst< float >(const int *itype, const char *uplo, const int *n, float *ap, const float *bp, int *info)
Definition: gblas.h:814
static bool timekeeping
Definition: gblas.h:225
void symm< float >(const char *side, const char *uplo, const int *m, const int *n, const float *alpha, const float *A, const int *lda, const float *B, const int *ldb, const float *beta, float *C, const int *ldc)
Definition: gblas.h:937
void spptrf_(const char *uplo, const int *n, float *ap, int *info)
void stevx< float >(const char *jobz, const char *range, const int *n, float *d, float *e, const float *vl, const float *vu, const int *il, const int *iu, const float *abstol, int *m, float *w, float *z, const int *ldz, float *work, int *iwork, int *ifail, int *info)
Definition: gblas.h:969
void sgemv_(const char *ta, const int *m, const int *n, const float *alpha, const float *A, const int *lda, const float *x, const int *incx, const float *beta, float *y, const int *incy)
void dspgst_(const int *itype, const char *uplo, const int *n, double *ap, const double *bp, int *info)
void pptrf< double >(const char *uplo, const int *n, double *ap, int *info)
Definition: gblas.h:463
void gemv< double >(const char *ta, const int *m, const int *n, const double *alpha, const double *A, const int *lda, const double *x, const int *incx, const double *beta, double *y, const int *incy)
Definition: gblas.h:691
double dot< double >(const int *n, const double *dx, const int *incx, const double *dy, const int *incy)
Definition: gblas.h:753
void axpy< float >(const int *n, const float *da, const float *dx, const int *incx, float *dy, const int *incy)
Definition: gblas.h:1107
int template_lapack_potrf(const char *uplo, const integer *n, Treal *a, const integer *lda, integer *info)
Definition: template_lapack_potrf.h:41
void strmv_(const char *uplo, const char *trans, const char *diag, const int *n, const float *A, const int *lda, float *x, const int *incx)
int template_lapack_pocon(const char *uplo, const integer *n, const Treal *a, const integer *lda, const Treal *anorm, Treal *rcond, Treal *work, integer *iwork, integer *info)
Definition: template_lapack_pocon.h:40
void sygv< double >(const int *itype, const char *jobz, const char *uplo, const int *n, double *A, const int *lda, double *B, const int *ldb, double *w, double *work, const int *lwork, int *info)
Definition: gblas.h:520
void pocon< float >(const char *uplo, const int *n, const float *A, const int *lda, const float *anorm, float *rcond, float *work, int *iwork, int *info)
Definition: gblas.h:954
int template_blas_trmm(const char *side, const char *uplo, const char *transa, const char *diag, const integer *m, const integer *n, const Treal *alpha, const Treal *a, const integer *lda, Treal *b, const integer *ldb)
Definition: template_blas_trmm.h:41
void strmm_(const char *side, const char *uplo, const char *transa, const char *diag, const int *m, const int *n, const float *alpha, const float *A, const int *lda, float *B, const int *ldb)
void symm< double >(const char *side, const char *uplo, const int *m, const int *n, const double *alpha, const double *A, const int *lda, const double *B, const int *ldb, const double *beta, double *C, const int *ldc)
Definition: gblas.h:598
static void symm(const char *side, const char *uplo, const int *m, const int *n, const T *alpha, const T *A, const int *lda, const T *B, const int *ldb, const T *beta, T *C, const int *ldc)
Definition: gblas.h:340
static void gemm(const char *ta, const char *tb, const int *n, const int *k, const int *l, const T *alpha, const T *A, const int *lda, const T *B, const int *ldb, const T *beta, T *C, const int *ldc)
Definition: gblas.h:230
void stevr< float >(const char *jobz, const char *range, const int *n, float *d, float *e, const float *vl, const float *vu, const int *il, const int *iu, const float *abstol, int *m, float *w, float *z, const int *ldz, int *isuppz, float *work, int *lwork, int *iwork, int *liwork, int *info)
Definition: gblas.h:990
static void pocon(const char *uplo, const int *n, const T *A, const int *lda, const T *anorm, T *rcond, T *work, int *iwork, int *info)
Definition: gblas.h:349
double ddot_(const int *n, const double *dx, const int *incx, const double *dy, const int *incy)
static void spgst(const int *itype, const char *uplo, const int *n, T *ap, const T *bp, int *info)
Definition: gblas.h:266
void dsymm_(const char *side, const char *uplo, const int *m, const int *n, const double *alpha, const double *A, const int *lda, const double *B, const int *ldb, const double *beta, double *C, const int *ldc)
int template_blas_trmv(const char *uplo, const char *trans, const char *diag, const integer *n, const Treal *a, const integer *lda, Treal *x, const integer *incx)
Definition: template_blas_trmv.h:40
static void trmv(const char *uplo, const char *trans, const char *diag, const int *n, const T *A, const int *lda, T *x, const int *incx)
Definition: gblas.h:407
void dsygv_(const int *itype, const char *jobz, const char *uplo, const int *n, double *A, const int *lda, double *B, const int *ldb, double *w, double *work, const int *lwork, int *info)
static void syrk(const char *uplo, const char *trans, const int *n, const int *k, const T *alpha, const T *A, const int *lda, const T *beta, T *C, const int *ldc)
Definition: gblas.h:332
void dtrmv_(const char *uplo, const char *trans, const char *diag, const int *n, const double *A, const int *lda, double *x, const int *incx)
void dgemm_(const char *ta, const char *tb, const int *n, const int *k, const int *l, const double *alpha, const double *A, const int *lda, const double *B, const int *ldb, const double *beta, double *C, const int *ldc)
Definition: allocate.cc:30
void ggev< float >(const char *jobbl, const char *jobvr, const int *n, float *A, const int *lda, float *B, const int *ldb, float *alphar, float *alphai, float *beta, float *vl, const int *ldvl, float *vr, const int *ldvr, float *work, const int *lwork, int *info)
Definition: gblas.h:876
void scal< double >(const int *n, const double *da, double *dx, const int *incx)
Definition: gblas.h:740
int template_lapack_spgst(const integer *itype, const char *uplo, const integer *n, Treal *ap, const Treal *bp, integer *info)
Definition: template_lapack_spgst.h:41
void syev< double >(const char *jobz, const char *uplo, const int *n, double *a, const int *lda, double *w, double *work, const int *lwork, int *info)
Definition: gblas.h:675
int template_blas_syrk(const char *uplo, const char *trans, const integer *n, const integer *k, const Treal *alpha, const Treal *a, const integer *lda, const Treal *beta, Treal *c__, const integer *ldc)
Definition: template_blas_syrk.h:40
void axpy< double >(const int *n, const double *da, const double *dx, const int *incx, double *dy, const int *incy)
Definition: gblas.h:768
void dstevr_(const char *jobz, const char *range, const int *n, double *d, double *e, const double *vl, const double *vu, const int *il, const int *iu, const double *abstol, int *m, double *w, double *z, const int *ldz, int *isuppz, double *work, int *lwork, int *iwork, int *liwork, int *info)
void sspgst_(const int *itype, const char *uplo, const int *n, float *ap, const float *bp, int *info)
void tptri< double >(const char *uplo, const char *diag, const int *n, double *ap, int *info)
Definition: gblas.h:490
void saxpy_(const int *n, const float *da, const float *dx, const int *incx, float *dy, const int *incy)
int template_blas_symm(const char *side, const char *uplo, const integer *m, const integer *n, const Treal *alpha, const Treal *a, const integer *lda, const Treal *b, const integer *ldb, const Treal *beta, Treal *c__, const integer *ldc)
Definition: template_blas_symm.h:40
void gemm< float >(const char *ta, const char *tb, const int *n, const int *k, const int *l, const float *alpha, const float *A, const int *lda, const float *B, const int *ldb, const float *beta, float *C, const int *ldc)
Definition: gblas.h:783
void dstevx_(const char *jobz, const char *range, const int *n, double *d, double *e, const double *vl, const double *vu, const int *il, const int *iu, const double *abstol, int *m, double *w, double *z, const int *ldz, double *work, int *iwork, int *ifail, int *info)
static void trtri(const char *uplo, const char *diag, const int *n, T *A, const int *lda, int *info)
Definition: gblas.h:319
static void sygv(const int *itype, const char *jobz, const char *uplo, const int *n, T *A, const int *lda, T *B, const int *ldb, T *w, T *work, const int *lwork, int *info)
Definition: gblas.h:291
void sygv< float >(const int *itype, const char *jobz, const char *uplo, const int *n, float *A, const int *lda, float *B, const int *ldb, float *w, float *work, const int *lwork, int *info)
Definition: gblas.h:859
void daxpy_(const int *n, const double *da, const double *dx, const int *incx, double *dy, const int *incy)
void spgst< double >(const int *itype, const char *uplo, const int *n, double *ap, const double *bp, int *info)
Definition: gblas.h:476
void sggev_(const char *jobbl, const char *jobvr, const int *n, float *A, const int *lda, float *B, const int *ldb, float *alphar, float *alphai, float *beta, float *vl, const int *ldvl, float *vr, const int *ldvr, float *work, const int *lwork, int *info)
static T dot(const int *n, const T *dx, const int *incx, const T *dy, const int *incy)
Definition: gblas.h:423
void ssyev_(const char *jobz, const char *uplo, const int *n, float *a, const int *lda, float *w, float *work, const int *lwork, int *info)
void scal< float >(const int *n, const float *da, float *dx, const int *incx)
Definition: gblas.h:1076
static void potrf(const char *uplo, const int *n, T *A, const int *lda, int *info)
Definition: gblas.h:312
static void syev(const char *jobz, const char *uplo, const int *n, T *a, const int *lda, T *w, T *work, const int *lwork, int *info)
Definition: gblas.h:380
static void axpy(const int *n, const T *da, const T *dx, const int *incx, T *dy, const int *incy)
Definition: gblas.h:429
void ssymv_(const char *uplo, const int *n, const float *alpha, const float *A, const int *lda, const float *x, const int *incx, const float *beta, float *y, const int *incy)
static float time
Definition: gblas.h:224
void dscal_(const int *n, const double *da, double *dx, const int *incx)
void dsymv_(const char *uplo, const int *n, const double *alpha, const double *A, const int *lda, const double *x, const int *incx, const double *beta, double *y, const int *incy)
void syrk< float >(const char *uplo, const char *trans, const int *n, const int *k, const float *alpha, const float *A, const int *lda, const float *beta, float *C, const int *ldc)
Definition: gblas.h:922
void syev< float >(const char *jobz, const char *uplo, const int *n, float *a, const int *lda, float *w, float *work, const int *lwork, int *info)
Definition: gblas.h:1012
void dpotrf_(const char *uplo, const int *n, double *A, const int *lda, int *info)
int template_lapack_trtri(const char *uplo, const char *diag, const integer *n, Treal *a, const integer *lda, integer *info)
Definition: template_lapack_trtri.h:40
void trtri< float >(const char *uplo, const char *diag, const int *n, float *A, const int *lda, int *info)
Definition: gblas.h:909
void dsyev_(const char *jobz, const char *uplo, const int *n, double *a, const int *lda, double *w, double *work, const int *lwork, int *info)
static void symv(const char *uplo, const int *n, const T *alpha, const T *A, const int *lda, const T *x, const int *incx, const T *beta, T *y, const int *incy)
Definition: gblas.h:398
static void ggev(const char *jobbl, const char *jobvr, const int *n, T *A, const int *lda, T *B, const int *ldb, T *alphar, T *alphai, T *beta, T *vl, const int *ldvl, T *vr, const int *ldvr, T *work, const int *lwork, int *info)
Definition: gblas.h:299
void dtrmm_(const char *side, const char *uplo, const char *transa, const char *diag, const int *m, const int *n, const double *alpha, const double *A, const int *lda, double *B, const int *ldb)
int template_lapack_pptrf(const char *uplo, const integer *n, Treal *ap, integer *info)
Definition: template_lapack_pptrf.h:41
int template_lapack_sygv(const integer *itype, const char *jobz, const char *uplo, const integer *n, Treal *a, const integer *lda, Treal *b, const integer *ldb, Treal *w, Treal *work, const integer *lwork, integer *info)
Definition: template_lapack_sygv.h:40
void stevx< double >(const char *jobz, const char *range, const int *n, double *d, double *e, const double *vl, const double *vu, const int *il, const int *iu, const double *abstol, int *m, double *w, double *z, const int *ldz, double *work, int *iwork, int *ifail, int *info)
Definition: gblas.h:630
void ggev< double >(const char *jobbl, const char *jobvr, const int *n, double *A, const int *lda, double *B, const int *ldb, double *alphar, double *alphai, double *beta, double *vl, const int *ldvl, double *vr, const int *ldvr, double *work, const int *lwork, int *info)
Definition: gblas.h:537
void potrf< double >(const char *uplo, const int *n, double *A, const int *lda, int *info)
Definition: gblas.h:557
void gemm< double >(const char *ta, const char *tb, const int *n, const int *k, const int *l, const double *alpha, const double *A, const int *lda, const double *B, const int *ldb, const double *beta, double *C, const int *ldc)
Definition: gblas.h:445
void ssymm_(const char *side, const char *uplo, const int *m, const int *n, const float *alpha, const float *A, const int *lda, const float *B, const int *ldb, const float *beta, float *C, const int *ldc)
static void trmm(const char *side, const char *uplo, const char *transa, const char *diag, const int *m, const int *n, const T *alpha, const T *A, const int *lda, T *B, const int *ldb)
Definition: gblas.h:279
int template_lapack_tptri(const char *uplo, const char *diag, const integer *n, Treal *ap, integer *info)
Definition: template_lapack_tptri.h:41
void tptri< float >(const char *uplo, const char *diag, const int *n, float *ap, int *info)
Definition: gblas.h:828
void dtptri_(const char *uplo, const char *diag, const int *n, double *ap, int *info)
void sscal_(const int *n, const float *da, float *dx, const int *incx)
void pocon< double >(const char *uplo, const int *n, const double *A, const int *lda, const double *anorm, double *rcond, double *work, int *iwork, int *info)
Definition: gblas.h:615
void stevr< double >(const char *jobz, const char *range, const int *n, double *d, double *e, const double *vl, const double *vu, const int *il, const int *iu, const double *abstol, int *m, double *w, double *z, const int *ldz, int *isuppz, double *work, int *lwork, int *iwork, int *liwork, int *info)
Definition: gblas.h:651
void dsyrk_(const char *uplo, const char *trans, const int *n, const int *k, const double *alpha, const double *A, const int *lda, const double *beta, double *C, const int *ldc)
void ssygv_(const int *itype, const char *jobz, const char *uplo, const int *n, float *A, const int *lda, float *B, const int *ldb, float *w, float *work, const int *lwork, int *info)
void trmv< double >(const char *uplo, const char *trans, const char *diag, const int *n, const double *A, const int *lda, double *x, const int *incx)
Definition: gblas.h:723
int template_blas_gemv(const char *trans, const integer *m, const integer *n, const Treal *alpha, const Treal *a, const integer *lda, const Treal *x, const integer *incx, const Treal *beta, Treal *y, const integer *incy)
Definition: template_blas_gemv.h:41
void dpptrf_(const char *uplo, const int *n, double *ap, int *info)
static void scal(const int *n, const T *da, T *dx, const int *incx)
Definition: gblas.h:417
side
Definition: Matrix.h:73
int template_lapack_syev(const char *jobz, const char *uplo, const integer *n, Treal *a, const integer *lda, Treal *w, Treal *work, const integer *lwork, integer *info)
Definition: template_lapack_syev.h:40
static void fulltopacked(const Treal *full, Treal *packed, const int size)
Definition: gblas.h:1133
static void gemv(const char *ta, const int *m, const int *n, const T *alpha, const T *A, const int *lda, const T *x, const int *incx, const T *beta, T *y, const int *incy)
Definition: gblas.h:389
int template_blas_axpy(const integer *n, const Treal *da, const Treal *dx, const integer *incx, Treal *dy, const integer *incy)
Definition: template_blas_axpy.h:41
void sgemm_(const char *ta, const char *tb, const int *n, const int *k, const int *l, const float *alpha, const float *A, const int *lda, const float *B, const int *ldb, const float *beta, float *C, const int *ldc)
void trtri< double >(const char *uplo, const char *diag, const int *n, double *A, const int *lda, int *info)
Definition: gblas.h:570
static void stevr(const char *jobz, const char *range, const int *n, T *d, T *e, const T *vl, const T *vu, const int *il, const int *iu, const T *abstol, int *m, T *w, T *z, const int *ldz, int *isuppz, T *work, int *lwork, int *iwork, int *liwork, int *info)
Definition: gblas.h:367
void dggev_(const char *jobbl, const char *jobvr, const int *n, double *A, const int *lda, double *B, const int *ldb, double *alphar, double *alphai, double *beta, double *vl, const int *ldvl, double *vr, const int *ldvr, double *work, const int *lwork, int *info)
void dtrtri_(const char *uplo, const char *diag, const int *n, double *A, const int *lda, int *info)
static void pptrf(const char *uplo, const int *n, T *ap, int *info)
Definition: gblas.h:261
void trmm< double >(const char *side, const char *uplo, const char *transa, const char *diag, const int *m, const int *n, const double *alpha, const double *A, const int *lda, double *B, const int *ldb)
Definition: gblas.h:503
void syrk< double >(const char *uplo, const char *trans, const int *n, const int *k, const double *alpha, const double *A, const int *lda, const double *beta, double *C, const int *ldc)
Definition: gblas.h:583
void spocon_(const char *uplo, const int *n, const float *A, const int *lda, const float *anorm, float *rcond, float *work, int *iwork, int *info)
int template_blas_symv(const char *uplo, const integer *n, const Treal *alpha, const Treal *a, const integer *lda, const Treal *x, const integer *incx, const Treal *beta, Treal *y, const integer *incy)
Definition: template_blas_symv.h:40
static void tptri(const char *uplo, const char *diag, const int *n, T *ap, int *info)
Definition: gblas.h:273
void dgemv_(const char *ta, const int *m, const int *n, const double *alpha, const double *A, const int *lda, const double *x, const int *incx, const double *beta, double *y, const int *incy)
int template_lapack_stevr(const char *jobz, const char *range, const integer *n, Treal *d__, Treal *e, const Treal *vl, const Treal *vu, const integer *il, const integer *iu, const Treal *abstol, integer *m, Treal *w, Treal *z__, const integer *ldz, integer *isuppz, Treal *work, integer *lwork, integer *iwork, integer *liwork, integer *info)
Definition: template_lapack_stevr.h:39
void symv< double >(const char *uplo, const int *n, const double *alpha, const double *A, const int *lda, const double *x, const int *incx, const double *beta, double *y, const int *incy)
Definition: gblas.h:707
int template_blas_gemm(const char *transa, const char *transb, const integer *m, const integer *n, const integer *k, const Treal *alpha, const Treal *a, const integer *lda, const Treal *b, const integer *ldb, const Treal *beta, Treal *c__, const integer *ldc)
Definition: template_blas_gemm.h:41
static void stevx(const char *jobz, const char *range, const int *n, T *d, T *e, const T *vl, const T *vu, const int *il, const int *iu, const T *abstol, int *m, T *w, T *z, const int *ldz, T *work, int *iwork, int *ifail, int *info)
Definition: gblas.h:356
void trmv< float >(const char *uplo, const char *trans, const char *diag, const int *n, const float *A, const int *lda, float *x, const int *incx)
Definition: gblas.h:1060
void dpocon_(const char *uplo, const int *n, const double *A, const int *lda, const double *anorm, double *rcond, double *work, int *iwork, int *info)
void strtri_(const char *uplo, const char *diag, const int *n, float *A, const int *lda, int *info)
void stptri_(const char *uplo, const char *diag, const int *n, float *ap, int *info)
void spotrf_(const char *uplo, const int *n, float *A, const int *lda, int *info)
void ssyrk_(const char *uplo, const char *trans, const int *n, const int *k, const float *alpha, const float *A, const int *lda, const float *beta, float *C, const int *ldc)
int template_lapack_ggev(const char *jobvl, const char *jobvr, const integer *n, Treal *a, const integer *lda, Treal *b, const integer *ldb, Treal *alphar, Treal *alphai, Treal *beta, Treal *vl, const integer *ldvl, Treal *vr, const integer *ldvr, Treal *work, const integer *lwork, integer *info)
Definition: template_lapack_ggev.h:40
void sstevr_(const char *jobz, const char *range, const int *n, float *d, float *e, const float *vl, const float *vu, const int *il, const int *iu, const float *abstol, int *m, float *w, float *z, const int *ldz, int *isuppz, float *work, int *lwork, int *iwork, int *liwork, int *info)
void symv< float >(const char *uplo, const int *n, const float *alpha, const float *A, const int *lda, const float *x, const int *incx, const float *beta, float *y, const int *incy)
Definition: gblas.h:1044
int template_lapack_stevx(const char *jobz, const char *range, const integer *n, Treal *d__, Treal *e, const Treal *vl, const Treal *vu, const integer *il, const integer *iu, const Treal *abstol, integer *m, Treal *w, Treal *z__, const integer *ldz, Treal *work, integer *iwork, integer *ifail, integer *info)
Definition: template_lapack_stevx.h:40
static void tripackedtofull(const Treal *packed, Treal *full, const int size)
Definition: gblas.h:1168
Treal template_blas_dot(const integer *n, const Treal *dx, const integer *incx, const Treal *dy, const integer *incy)
Definition: template_blas_dot.h:41
void sstevx_(const char *jobz, const char *range, const int *n, float *d, float *e, const float *vl, const float *vu, const int *il, const int *iu, const float *abstol, int *m, float *w, float *z, const int *ldz, float *work, int *iwork, int *ifail, int *info)
static void packedtofull(const Treal *packed, Treal *full, const int size)
Definition: gblas.h:1146