Octopus
blas.F90
Go to the documentation of this file.
1!! Copyright (C) 2002-2006 M. Marques, A. Castro, A. Rubio, G. Bertsch
2!!
3!! This program is free software; you can redistribute it and/or modify
4!! it under the terms of the GNU General Public License as published by
5!! the Free Software Foundation; either version 2, or (at your option)
6!! any later version.
7!!
8!! This program is distributed in the hope that it will be useful,
9!! but WITHOUT ANY WARRANTY; without even the implied warranty of
10!! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11!! GNU General Public License for more details.
12!!
13!! You should have received a copy of the GNU General Public License
14!! along with this program; if not, write to the Free Software
15!! Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
16!! 02110-1301, USA.
17!!
18
19#include "global.h"
20
21! -----------------------------------------------------------------------
24! -----------------------------------------------------------------------
25module blas_oct_m
26
27 implicit none
28
29 public ! interfaces, plus the wrappers below, in this module
30
31 ! ---------------------------------------------------------------------
32 ! BLAS level I
33 ! ---------------------------------------------------------------------
34
37 interface blas_swap
38 subroutine dswap(n, dx, incx, dy, incy)
39 use, intrinsic :: iso_fortran_env
40 implicit none
41 integer, intent(in) :: n, incx, incy
42 real(real64), intent(inout) :: dx, dy
43 end subroutine dswap
44
45 subroutine zswap(n, dx, incx, dy, incy)
46 use, intrinsic :: iso_fortran_env
47 implicit none
48 integer, intent(in) :: n, incx, incy
49 complex(real64), intent(inout) :: dx, dy
50 end subroutine zswap
51
52 subroutine sswap(n, dx, incx, dy, incy)
53 use, intrinsic :: iso_fortran_env
54 implicit none
55 integer, intent(in) :: n, incx, incy
56 real(real32), intent(inout) :: dx, dy
57 end subroutine sswap
58
59 subroutine cswap(n, dx, incx, dy, incy)
60 use, intrinsic :: iso_fortran_env
61 implicit none
62 integer, intent(in) :: n, incx, incy
63 complex(real32), intent(inout) :: dx, dy
64 end subroutine cswap
65 end interface blas_swap
66
69 interface blas_scal
70 subroutine dscal(n, da, dx, incx)
71 use, intrinsic :: iso_fortran_env
72 implicit none
73 integer, intent(in) :: n, incx
74 real(real64), intent(in) :: da
75 real(real64), intent(inout) :: dx
76 end subroutine dscal
77
78 subroutine zscal(n, da, dx, incx)
79 use, intrinsic :: iso_fortran_env
80 implicit none
81 integer, intent(in) :: n, incx
82 complex(real64), intent(in) :: da
83 complex(real64), intent(inout) :: dx
84 end subroutine zscal
85
86 subroutine zdscal(n, da, dx, incx)
87 use, intrinsic :: iso_fortran_env
88 implicit none
89 integer, intent(in) :: n, incx
90 real(real64), intent(in) :: da
91 complex(real64), intent(inout) :: dx
92 end subroutine zdscal
93
94 subroutine sscal(n, da, dx, incx)
95 use, intrinsic :: iso_fortran_env
96 implicit none
97 integer, intent(in) :: n, incx
98 real(real32), intent(in) :: da
99 real(real32), intent(inout) :: dx
100 end subroutine sscal
101
102 subroutine cscal(n, da, dx, incx)
103 use, intrinsic :: iso_fortran_env
104 implicit none
105 integer, intent(in) :: n, incx
106 complex(real32), intent(in) :: da
107 complex(real32), intent(inout) :: dx
108 end subroutine cscal
109
110 subroutine csscal(n, da, dx, incx)
111 use, intrinsic :: iso_fortran_env
112 implicit none
113 integer, intent(in) :: n, incx
114 real(real32), intent(in) :: da
115 complex(real32), intent(inout) :: dx
116 end subroutine csscal
117 end interface blas_scal
118
121 interface blas_axpy
122 subroutine daxpy (n, da, dx, incx, dy, incy)
123 use, intrinsic :: iso_fortran_env
124 implicit none
125 integer, intent(in) :: n, incx, incy
126 real(real64), intent(in) :: da, dx
127 real(real64), intent(inout) :: dy
128 end subroutine daxpy
129
130 subroutine zaxpy (n, da, dx, incx, dy, incy)
131 use, intrinsic :: iso_fortran_env
132 implicit none
133 integer, intent(in) :: n, incx, incy
134 complex(real64), intent(in) :: da, dx
135 complex(real64), intent(inout) :: dy
136 end subroutine zaxpy
137
138 subroutine saxpy (n, da, dx, incx, dy, incy)
139 use, intrinsic :: iso_fortran_env
140 implicit none
141 integer, intent(in) :: n, incx, incy
142 real(real32), intent(in) :: da, dx
143 real(real32), intent(inout) :: dy
144 end subroutine saxpy
145
146 subroutine caxpy (n, da, dx, incx, dy, incy)
147 use, intrinsic :: iso_fortran_env
148 implicit none
149 integer, intent(in) :: n, incx, incy
150 complex(real32), intent(in) :: da, dx
151 complex(real32), intent(inout) :: dy
152 end subroutine caxpy
153
154 module procedure dazaxpy
155 module procedure sacaxpy
156 end interface blas_axpy
157
160 interface blas_copy
161 subroutine dcopy(n, dx, incx, dy, incy)
162 use, intrinsic :: iso_fortran_env
163 implicit none
164 integer, intent(in) :: n, incx, incy
165 real(real64), intent(in) :: dx
166 real(real64), intent(out) :: dy
167 end subroutine dcopy
168
169 subroutine zcopy(n, dx, incx, dy, incy)
170 use, intrinsic :: iso_fortran_env
171 implicit none
172 integer, intent(in) :: n, incx, incy
173 complex(real64), intent(in) :: dx
174 complex(real64), intent(out) :: dy
175 end subroutine zcopy
176
177 subroutine scopy(n, dx, incx, dy, incy)
178 use, intrinsic :: iso_fortran_env
179 implicit none
180 integer, intent(in) :: n, incx, incy
181 real(real32), intent(in) :: dx
182 real(real32), intent(out) :: dy
183 end subroutine scopy
184
185 subroutine ccopy(n, dx, incx, dy, incy)
186 use, intrinsic :: iso_fortran_env
187 implicit none
188 integer, intent(in) :: n, incx, incy
189 complex(real32), intent(in) :: dx
190 complex(real32), intent(out) :: dy
191 end subroutine ccopy
192 end interface blas_copy
193
196 interface blas_dot
197 real(real64) function ddot(n, dx, incx, dy, incy)
198 use, intrinsic :: iso_fortran_env
199 implicit none
200 integer, intent(in) :: n, incx, incy
201 real(real64), intent(in) :: dx, dy
202 end function ddot
203
204#if defined(HAVE_ACCELERATE)
205 module procedure zdotc
206#else
207 complex(real64) function zdotc(n, dx, incx, dy, incy)
208 use, intrinsic :: iso_fortran_env
209 implicit none
210 integer, intent(in) :: n, incx, incy
211 complex(real64), intent(in) :: dx, dy
212 end function zdotc
213#endif
214 end interface blas_dot
215
216 interface blas_dotu
217#if defined(HAVE_ACCELERATE)
218 module procedure zdotu
219#else
220 complex(real64) function zdotu(n, dx, incx, dy, incy)
221 use, intrinsic :: iso_fortran_env
222 implicit none
223 integer, intent(in) :: n, incx, incy
224 complex(real64), intent(in) :: dx, dy
225 end function zdotu
226#endif
227 end interface blas_dotu
228
235 interface blas_nrm2
236 real(real64) function dnrm2(n, dx, incx)
237 use, intrinsic :: iso_fortran_env
238 implicit none
239 integer, intent(in) :: n, incx
240 real(real64), intent(in) :: dx
241 end function dnrm2
242
243 real(real64) function dznrm2(n, dx, incx)
244 use, intrinsic :: iso_fortran_env
245 implicit none
246 integer, intent(in) :: n, incx
247 complex(real64), intent(in) :: dx
248 end function dznrm2
249
250 real(real32) function snrm2(n, dx, incx)
251 use, intrinsic :: iso_fortran_env
252 implicit none
253 integer, intent(in) :: n, incx
254 real(real32), intent(in) :: dx
255 end function snrm2
257 real(real32) function scnrm2(n, dx, incx)
258 use, intrinsic :: iso_fortran_env
259 implicit none
260 integer, intent(in) :: n, incx
261 complex(real32), intent(in) :: dx
262 end function scnrm2
263 end interface blas_nrm2
265
266 ! ------------------------------------------------------------------
267 ! BLAS level II
268 ! ------------------------------------------------------------------
269
279 interface blas_symv
280 subroutine dsymv(uplo, n, alpha, a, lda, x, incx, beta, y, incy)
281 use, intrinsic :: iso_fortran_env
282 implicit none
283 character(1), intent(in) :: uplo
284 integer, intent(in) :: n, lda, incx, incy
285 real(real64), intent(in) :: alpha, beta
286 real(real64), intent(in) :: a
287 real(real64), intent(in) :: x
288 real(real64), intent(inout) :: y
289 end subroutine dsymv
290
291 subroutine zsymv(uplo, n, alpha, a, lda, x, incx, beta, y, incy)
292 use, intrinsic :: iso_fortran_env
293 implicit none
294 character(1), intent(in) :: uplo
295 integer, intent(in) :: n, lda, incx, incy
296 complex(real64), intent(in) :: alpha, beta
297 complex(real64), intent(in) :: a
298 complex(real64), intent(in) :: x
299 complex(real64), intent(inout) :: y
300 end subroutine zsymv
301
302 subroutine ssymv(uplo, n, alpha, a, lda, x, incx, beta, y, incy)
303 use, intrinsic :: iso_fortran_env
304 implicit none
305 character(1), intent(in) :: uplo
306 integer, intent(in) :: n, lda, incx, incy
307 real(real32), intent(in) :: alpha, beta
308 real(real32), intent(in) :: a
309 real(real32), intent(in) :: x
310 real(real32), intent(inout) :: y
311 end subroutine ssymv
312
313 subroutine csymv(uplo, n, alpha, a, lda, x, incx, beta, y, incy)
314 use, intrinsic :: iso_fortran_env
315 implicit none
316 character(1), intent(in) :: uplo
317 integer, intent(in) :: n, lda, incx, incy
318 complex(real32), intent(in) :: alpha, beta
319 complex(real32), intent(in) :: a
320 complex(real32), intent(in) :: x
321 complex(real32), intent(inout) :: y
322 end subroutine csymv
323 end interface blas_symv
324
338 interface blas_gemv
339 subroutine dgemv(trans, m, n, alpha, a, lda, x, incx, beta, y, incy)
340 use, intrinsic :: iso_fortran_env
341 implicit none
342 character(1), intent(in) :: trans
343 integer, intent(in) :: m, n, lda, incx, incy
344 real(real64), intent(in) :: alpha, beta
345 real(real64), intent(in) :: a
346 real(real64), intent(in) :: x
347 real(real64), intent(inout) :: y
348 end subroutine dgemv
349
350 subroutine zgemv(trans, m, n, alpha, a, lda, x, incx, beta, y, incy)
351 use, intrinsic :: iso_fortran_env
352 implicit none
353 character(1), intent(in) :: trans
354 integer, intent(in) :: m, n, lda, incx, incy
355 complex(real64), intent(in) :: alpha, beta
356 complex(real64), intent(in) :: a
357 complex(real64), intent(in) :: x
358 complex(real64), intent(inout) :: y
359 end subroutine zgemv
360
361 subroutine sgemv(trans, m, n, alpha, a, lda, x, incx, beta, y, incy)
362 use, intrinsic :: iso_fortran_env
363 implicit none
364 character(1), intent(in) :: trans
365 integer, intent(in) :: m, n, lda, incx, incy
366 real(real32), intent(in) :: alpha, beta
367 real(real32), intent(in) :: a
368 real(real32), intent(in) :: x
369 real(real32), intent(inout) :: y
370 end subroutine sgemv
371
372 subroutine cgemv(trans, m, n, alpha, a, lda, x, incx, beta, y, incy)
373 use, intrinsic :: iso_fortran_env
374 implicit none
375 character(1), intent(in) :: trans
376 integer, intent(in) :: m, n, lda, incx, incy
377 complex(real32), intent(in) :: alpha, beta
378 complex(real32), intent(in) :: a
379 complex(real32), intent(in) :: x
380 complex(real32), intent(inout) :: y
381 end subroutine cgemv
382 end interface blas_gemv
383
384
385 ! ------------------------------------------------------------------
386 ! BLAS level III
387 ! ------------------------------------------------------------------
388
405 interface blas_gemm
406 subroutine dgemm(transa, transb, m, n, k, alpha, a, lda, b, ldb, beta, c, ldc)
407 use, intrinsic :: iso_fortran_env
408 implicit none
409 character(1), intent(in) :: transa, transb
410 integer, intent(in) :: m, n, k, lda, ldb, ldc
411 real(real64), intent(in) :: alpha, beta
412 real(real64), intent(in) :: a
413 real(real64), intent(in) :: b
414 real(real64), intent(inout) :: c
415 end subroutine dgemm
416
417 subroutine zgemm(transa, transb, m, n, k, alpha, a, lda, b, ldb, beta, c, ldc)
418 use, intrinsic :: iso_fortran_env
419 implicit none
420 character(1), intent(in) :: transa, transb
421 integer, intent(in) :: m, n, k, lda, ldb, ldc
422 complex(real64), intent(in) :: alpha, beta
423 complex(real64), intent(in) :: a
424 complex(real64), intent(in) :: b
425 complex(real64), intent(inout) :: c
426 end subroutine zgemm
427
428 module procedure zdgemm
429
430 subroutine sgemm(transa, transb, m, n, k, alpha, a, lda, b, ldb, beta, c, ldc)
431 use, intrinsic :: iso_fortran_env
432 implicit none
433 character(1), intent(in) :: transa, transb
434 integer, intent(in) :: m, n, k, lda, ldb, ldc
435 real(real32), intent(in) :: alpha, beta
436 real(real32), intent(in) :: a
437 real(real32), intent(in) :: b
438 real(real32), intent(inout) :: c
439 end subroutine sgemm
440
441 subroutine cgemm(transa, transb, m, n, k, alpha, a, lda, b, ldb, beta, c, ldc)
442 use, intrinsic :: iso_fortran_env
443 implicit none
444 character(1), intent(in) :: transa, transb
445 integer, intent(in) :: m, n, k, lda, ldb, ldc
446 complex(real32), intent(in) :: alpha, beta
447 complex(real32), intent(in) :: a
448 complex(real32), intent(in) :: b
449 complex(real32), intent(inout) :: c
450 end subroutine cgemm
451 end interface
452
467 interface blas_trmm
468 subroutine dtrmm(side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
469 use, intrinsic :: iso_fortran_env
470 implicit none
471 character(1), intent(in) :: side, uplo, transa, diag
472 integer, intent(in) :: m, n, lda, ldb
473 real(real64), intent(in) :: a, alpha
474 real(real64), intent(inout) :: b
475 end subroutine dtrmm
476
477 subroutine ztrmm(side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
478 use, intrinsic :: iso_fortran_env
479 implicit none
480 character(1), intent(in) :: side, uplo, transa, diag
481 integer, intent(in) :: m, n, lda, ldb
482 complex(real64), intent(in) :: a, alpha
483 complex(real64), intent(inout) :: b
484 end subroutine ztrmm
485
486 subroutine strmm(side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
487 use, intrinsic :: iso_fortran_env
488 implicit none
489 character(1), intent(in) :: side, uplo, transa, diag
490 integer, intent(in) :: m, n, lda, ldb
491 real(real32), intent(in) :: a, alpha
492 real(real32), intent(inout) :: b
493 end subroutine strmm
494
495 subroutine ctrmm(side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
496 use, intrinsic :: iso_fortran_env
497 implicit none
498 character(1), intent(in) :: side, uplo, transa, diag
499 integer, intent(in) :: m, n, lda, ldb
500 complex(real32), intent(in) :: a, alpha
501 complex(real32), intent(inout) :: b
502 end subroutine ctrmm
503 end interface blas_trmm
504
520 interface blas_symm
521 subroutine dsymm(side, uplo, m, n, alpha, a, lda, b, ldb, beta, c, ldc)
522 use, intrinsic :: iso_fortran_env
523 implicit none
524 character(1), intent(in) :: side, uplo
525 integer, intent(in) :: m, n, lda, ldb, ldc
526 real(real64), intent(in) :: alpha, beta, a, b
527 real(real64), intent(inout) :: c
528 end subroutine dsymm
529
530 subroutine zsymm(side, uplo, m, n, alpha, a, lda, b, ldb, beta, c, ldc)
531 use, intrinsic :: iso_fortran_env
532 implicit none
533 character(1), intent(in) :: side, uplo
534 integer, intent(in) :: m, n, lda, ldb, ldc
535 complex(real64), intent(in) :: alpha, beta, a, b
536 complex(real64), intent(inout) :: c
537 end subroutine zsymm
538
539 subroutine ssymm(side, uplo, m, n, alpha, a, lda, b, ldb, beta, c, ldc)
540 use, intrinsic :: iso_fortran_env
541 implicit none
542 character(1), intent(in) :: side, uplo
543 integer, intent(in) :: m, n, lda, ldb, ldc
544 real(real32), intent(in) :: alpha, beta, a, b
545 real(real32), intent(inout) :: c
546 end subroutine ssymm
547
548 subroutine csymm(side, uplo, m, n, alpha, a, lda, b, ldb, beta, c, ldc)
549 use, intrinsic :: iso_fortran_env
550 implicit none
551 character(1), intent(in) :: side, uplo
552 integer, intent(in) :: m, n, lda, ldb, ldc
553 complex(real32), intent(in) :: alpha, beta, a, b
554 complex(real32), intent(inout) :: c
555 end subroutine csymm
556 end interface blas_symm
557
574 interface blas_herk
575 subroutine dsyrk(uplo, trans, n, k, alpha, a, lda, beta, c, ldc)
576 use, intrinsic :: iso_fortran_env
577 implicit none
578 character(1), intent(in) :: uplo, trans
579 integer, intent(in) :: n, k, lda, ldc
580 real(real64), intent(in) :: alpha, beta, a
581 real(real64), intent(inout) :: c
582 end subroutine dsyrk
583
584 subroutine zherk(uplo, trans, n, k, alpha, a, lda, beta, c, ldc)
585 use, intrinsic :: iso_fortran_env
586 implicit none
587 character(1), intent(in) :: uplo, trans
588 integer, intent(in) :: n, k, lda, ldc
589 real(real64), intent(in) :: alpha, beta
590 complex(real64), intent(in) :: a
591 complex(real64), intent(inout) :: c
592 end subroutine zherk
593 end interface blas_herk
594
615 interface blas_trsm
616 subroutine dtrsm(side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
617 use, intrinsic :: iso_fortran_env
618 implicit none
619 character(1), intent(in) :: side
620 character(1), intent(in) :: uplo
621 character(1), intent(in) :: transa
622 character(1), intent(in) :: diag
623 integer, intent(in) :: m
624 integer, intent(in) :: n
625 real(real64), intent(in) :: alpha
626 real(real64), intent(in) :: a
627 integer, intent(in) :: lda
628 real(real64), intent(inout) :: b
629 integer, intent(in) :: ldb
630 end subroutine dtrsm
631
632 subroutine ztrsm(side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
633 use, intrinsic :: iso_fortran_env
634 implicit none
635 character(1), intent(in) :: side
636 character(1), intent(in) :: uplo
637 character(1), intent(in) :: transa
638 character(1), intent(in) :: diag
639 integer, intent(in) :: m
640 integer, intent(in) :: n
641 complex(real64), intent(in) :: alpha
642 complex(real64), intent(in) :: a
643 integer, intent(in) :: lda
644 complex(real64), intent(inout) :: b
645 integer, intent(in) :: ldb
646 end subroutine ztrsm
647 end interface blas_trsm
648
649contains
650
651#if defined(HAVE_ACCELERATE)
652
659 complex(real64) function zdotc(n, dx, incx, dy, incy)
660 use, intrinsic :: iso_c_binding
661 use, intrinsic :: iso_fortran_env
662 implicit none
663 integer, intent(in) :: n, incx, incy
664 complex(real64), intent(in) :: dx, dy
665
666 interface
667 subroutine cblas_zdotc_sub(n, x, incx, y, incy, dotc) bind(c, name="cblas_zdotc_sub")
668 use, intrinsic :: iso_c_binding
669 implicit none
670 integer(c_int), intent(in), value :: n, incx, incy
671 complex(c_double_complex), intent(in) :: x, y
672 complex(c_double_complex), intent(out) :: dotc
673 end subroutine cblas_zdotc_sub
674 end interface
675
676 ! no PUSH_SUB, called too often
677
678 call cblas_zdotc_sub(n, dx, incx, dy, incy, zdotc)
680 end function zdotc
681
685 complex(real64) function zdotu(n, dx, incx, dy, incy)
686 use, intrinsic :: iso_c_binding
687 use, intrinsic :: iso_fortran_env
688 implicit none
689 integer, intent(in) :: n, incx, incy
690 complex(real64), intent(in) :: dx, dy
691
692 interface
693 subroutine cblas_zdotu_sub(n, x, incx, y, incy, dotu) bind(c, name="cblas_zdotu_sub")
694 use, intrinsic :: iso_c_binding
695 implicit none
696 integer(c_int), intent(in), value :: n, incx, incy
697 complex(c_double_complex), intent(in) :: x, y
698 complex(c_double_complex), intent(out) :: dotu
699 end subroutine cblas_zdotu_sub
700 end interface
701
702 ! no PUSH_SUB, called too often
703
704 call cblas_zdotu_sub(n, dx, incx, dy, incy, zdotu)
705
706 end function zdotu
707#endif
708
713 subroutine dazaxpy(n, da, dx, dy)
714 use, intrinsic :: iso_c_binding
715 use, intrinsic :: iso_fortran_env
716 implicit none
717 integer, intent(in) :: n
718 real(real64), intent(in) :: da
719 complex(real64), intent(in), target :: dx
720 complex(real64), intent(inout), target :: dy
721
722 real(real64), pointer :: rx, ry
723
724 ! no PUSH_SUB, called too often
725
726 call c_f_pointer(c_loc(dx), rx)
727 call c_f_pointer(c_loc(dy), ry)
728
729 call blas_axpy(2*n, da, rx, 1, ry, 1)
730
731 end subroutine dazaxpy
732
737 subroutine sacaxpy(n, da, dx, dy)
738 use, intrinsic :: iso_c_binding
739 use, intrinsic :: iso_fortran_env
740 implicit none
741 integer, intent(in) :: n
742 real(real32), intent(in) :: da
743 complex(real32), intent(in), target :: dx
744 complex(real32), intent(inout), target :: dy
745
746 real(real32), pointer :: rx, ry
747
748 ! no PUSH_SUB, called too often
749
750 call c_f_pointer(c_loc(dx), rx)
751 call c_f_pointer(c_loc(dy), ry)
752
753 call blas_axpy(2*n, da, rx, 1, ry, 1)
754
755 end subroutine sacaxpy
756
762 subroutine zdgemm(transa, transb, m, n, k, alpha, a, lda, b, ldb, beta, c, ldc)
763 use, intrinsic :: iso_c_binding
764 use, intrinsic :: iso_fortran_env
765 implicit none
766 character(1), intent(in) :: transa, transb
767 integer, intent(in) :: m, n, k, lda, ldb, ldc
768 real(real64), intent(in) :: alpha, beta
769 complex(real64), intent(in), target :: a
770 real(real64), intent(in) :: b
771 complex(real64), intent(inout), target :: c
772
773 real(real64), pointer :: ra, rc
775 ! no PUSH_SUB, called too often
776
777 call c_f_pointer(c_loc(a), ra)
778 call c_f_pointer(c_loc(c), rc)
779
780 call blas_gemm(transa, transb, m, n, k, alpha, ra, lda, b, ldb, beta, rc, ldc)
781
782 end subroutine zdgemm
783
784end module blas_oct_m
785
786
787!! Local Variables:
788!! mode: f90
789!! coding: utf-8
790!! End:
--------------— axpy ---------------— Constant times a vector plus a vector.
Definition: blas.F90:216
--------------— copy ---------------— Copies a vector, x, to a vector, y.
Definition: blas.F90:255
--------------— dot ---------------— Forms the dot product of two vectors.
Definition: blas.F90:291
--------------— gemm ---------------— performs one of the matrix-matrix operations
Definition: blas.F90:500
--------------— gemv ---------------— SGEMV performs one of the matrix-vector operations
Definition: blas.F90:433
--------------— syrk, herk ---------------— performs one of the symmetric rank k operations
Definition: blas.F90:669
--------------— nrm2 ---------------— Returns the euclidean norm of a vector via the function name,...
Definition: blas.F90:330
--------------— scal ---------------— Scales a vector by a constant.
Definition: blas.F90:164
--------------— swap ---------------— Interchanges two vectors.
Definition: blas.F90:132
--------------— symm, hemm ---------------— performs one of the matrix-matrix operations
Definition: blas.F90:615
--------------— symv ---------------— performs the matrix-vector operation
Definition: blas.F90:374
--------------— trmm ---------------— Performs one of the matrix-matrix operations
Definition: blas.F90:562
--------------------—trsm----------------------— Solves one of the matrix equations
Definition: blas.F90:710
void cblas_zdotc_sub(const int N, const void *X, const int incX, const void *Y, const int incY, void *dotc)
void cblas_zdotu_sub(const int N, const void *X, const int incX, const void *Y, const int incY, void *dotu)
This module contains interfaces for BLAS routines You should not use these routines directly....
Definition: blas.F90:120
subroutine zdgemm(transa, transb, m, n, k, alpha, a, lda, b, ldb, beta, c, ldc)
A real matrix multiplying a complex one, added to a complex matrix.
Definition: blas.F90:800
subroutine dazaxpy(n, da, dx, dy)
A real constant times a complex vector plus a complex vector.
Definition: blas.F90:751
subroutine sacaxpy(n, da, dx, dy)
A real constant times a complex vector plus a complex vector, in single precision.
Definition: blas.F90:775