38 subroutine dswap(n, dx, incx, dy, incy)
39 use,
intrinsic :: iso_fortran_env
41 integer,
intent(in) :: n, incx, incy
42 real(real64),
intent(inout) :: dx, dy
45 subroutine zswap(n, dx, incx, dy, incy)
46 use,
intrinsic :: iso_fortran_env
48 integer,
intent(in) :: n, incx, incy
49 complex(real64),
intent(inout) :: dx, dy
56 subroutine dscal(n, da, dx, incx)
57 use,
intrinsic :: iso_fortran_env
59 integer,
intent(in) :: n, incx
60 real(real64),
intent(in) :: da
61 real(real64),
intent(inout) :: dx
64 subroutine zscal(n, da, dx, incx)
65 use,
intrinsic :: iso_fortran_env
67 integer,
intent(in) :: n, incx
68 complex(real64),
intent(in) :: da
69 complex(real64),
intent(inout) :: dx
72 subroutine zdscal(n, da, dx, incx)
73 use,
intrinsic :: iso_fortran_env
75 integer,
intent(in) :: n, incx
76 real(real64),
intent(in) :: da
77 complex(real64),
intent(inout) :: dx
84 subroutine daxpy (n, da, dx, incx, dy, incy)
85 use,
intrinsic :: iso_fortran_env
87 integer,
intent(in) :: n, incx, incy
88 real(real64),
intent(in) :: da, dx
89 real(real64),
intent(inout) :: dy
92 subroutine zaxpy (n, da, dx, incx, dy, incy)
93 use,
intrinsic :: iso_fortran_env
95 integer,
intent(in) :: n, incx, incy
96 complex(real64),
intent(in) :: da, dx
97 complex(real64),
intent(inout) :: dy
106 subroutine dcopy(n, dx, incx, dy, incy)
107 use,
intrinsic :: iso_fortran_env
109 integer,
intent(in) :: n, incx, incy
110 real(real64),
intent(in) :: dx
111 real(real64),
intent(out) :: dy
114 subroutine zcopy(n, dx, incx, dy, incy)
115 use,
intrinsic :: iso_fortran_env
117 integer,
intent(in) :: n, incx, incy
118 complex(real64),
intent(in) :: dx
119 complex(real64),
intent(out) :: dy
126 real(real64) function ddot(n, dx, incx, dy, incy)
127 use,
intrinsic :: iso_fortran_env
129 integer,
intent(in) :: n, incx, incy
130 real(real64),
intent(in) :: dx, dy
133#if defined(HAVE_ACCELERATE)
134 module procedure zdotc
136 complex(real64) function zdotc(n, dx, incx, dy, incy)
137 use,
intrinsic :: iso_fortran_env
139 integer,
intent(in) :: n, incx, incy
140 complex(real64),
intent(in) :: dx, dy
146#if defined(HAVE_ACCELERATE)
147 module procedure zdotu
149 complex(real64) function zdotu(n, dx, incx, dy, incy)
150 use,
intrinsic :: iso_fortran_env
152 integer,
intent(in) :: n, incx, incy
153 complex(real64),
intent(in) :: dx, dy
165 real(real64) function dnrm2(n, dx, incx)
166 use,
intrinsic :: iso_fortran_env
168 integer,
intent(in) :: n, incx
169 real(real64),
intent(in) :: dx
172 real(real64) function dznrm2(n, dx, incx)
173 use,
intrinsic :: iso_fortran_env
175 integer,
intent(in) :: n, incx
176 complex(real64),
intent(in) :: dx
195 subroutine dsymv(uplo, n, alpha, a, lda, x, incx, beta, y, incy)
196 use,
intrinsic :: iso_fortran_env
198 character(1),
intent(in) :: uplo
199 integer,
intent(in) :: n, lda, incx, incy
200 real(real64),
intent(in) :: alpha, beta
201 real(real64),
intent(in) :: a
202 real(real64),
intent(in) :: x
203 real(real64),
intent(inout) :: y
206 subroutine zsymv(uplo, n, alpha, a, lda, x, incx, beta, y, incy)
207 use,
intrinsic :: iso_fortran_env
209 character(1),
intent(in) :: uplo
210 integer,
intent(in) :: n, lda, incx, incy
211 complex(real64),
intent(in) :: alpha, beta
212 complex(real64),
intent(in) :: a
213 complex(real64),
intent(in) :: x
214 complex(real64),
intent(inout) :: y
232 subroutine dgemv(trans, m, n, alpha, a, lda, x, incx, beta, y, incy)
233 use,
intrinsic :: iso_fortran_env
235 character(1),
intent(in) :: trans
236 integer,
intent(in) :: m, n, lda, incx, incy
237 real(real64),
intent(in) :: alpha, beta
238 real(real64),
intent(in) :: a
239 real(real64),
intent(in) :: x
240 real(real64),
intent(inout) :: y
243 subroutine zgemv(trans, m, n, alpha, a, lda, x, incx, beta, y, incy)
244 use,
intrinsic :: iso_fortran_env
246 character(1),
intent(in) :: trans
247 integer,
intent(in) :: m, n, lda, incx, incy
248 complex(real64),
intent(in) :: alpha, beta
249 complex(real64),
intent(in) :: a
250 complex(real64),
intent(in) :: x
251 complex(real64),
intent(inout) :: y
277 subroutine dgemm(transa, transb, m, n, k, alpha, a, lda, b, ldb, beta, c, ldc)
278 use,
intrinsic :: iso_fortran_env
280 character(1),
intent(in) :: transa, transb
281 integer,
intent(in) :: m, n, k, lda, ldb, ldc
282 real(real64),
intent(in) :: alpha, beta
283 real(real64),
intent(in) :: a
284 real(real64),
intent(in) :: b
285 real(real64),
intent(inout) :: c
288 subroutine zgemm(transa, transb, m, n, k, alpha, a, lda, b, ldb, beta, c, ldc)
289 use,
intrinsic :: iso_fortran_env
291 character(1),
intent(in) :: transa, transb
292 integer,
intent(in) :: m, n, k, lda, ldb, ldc
293 complex(real64),
intent(in) :: alpha, beta
294 complex(real64),
intent(in) :: a
295 complex(real64),
intent(in) :: b
296 complex(real64),
intent(inout) :: c
317 subroutine dtrmm(side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
318 use,
intrinsic :: iso_fortran_env
320 character(1),
intent(in) :: side, uplo, transa, diag
321 integer,
intent(in) :: m, n, lda, ldb
322 real(real64),
intent(in) :: a, alpha
323 real(real64),
intent(inout) :: b
326 subroutine ztrmm(side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
327 use,
intrinsic :: iso_fortran_env
329 character(1),
intent(in) :: side, uplo, transa, diag
330 integer,
intent(in) :: m, n, lda, ldb
331 complex(real64),
intent(in) :: a, alpha
332 complex(real64),
intent(inout) :: b
352 subroutine dsymm(side, uplo, m, n, alpha, a, lda, b, ldb, beta, c, ldc)
353 use,
intrinsic :: iso_fortran_env
355 character(1),
intent(in) :: side, uplo
356 integer,
intent(in) :: m, n, lda, ldb, ldc
357 real(real64),
intent(in) :: alpha, beta, a, b
358 real(real64),
intent(inout) :: c
361 subroutine zsymm(side, uplo, m, n, alpha, a, lda, b, ldb, beta, c, ldc)
362 use,
intrinsic :: iso_fortran_env
364 character(1),
intent(in) :: side, uplo
365 integer,
intent(in) :: m, n, lda, ldb, ldc
366 complex(real64),
intent(in) :: alpha, beta, a, b
367 complex(real64),
intent(inout) :: c
388 subroutine dsyrk(uplo, trans, n, k, alpha, a, lda, beta, c, ldc)
389 use,
intrinsic :: iso_fortran_env
391 character(1),
intent(in) :: uplo, trans
392 integer,
intent(in) :: n, k, lda, ldc
393 real(real64),
intent(in) :: alpha, beta, a
394 real(real64),
intent(inout) :: c
397 subroutine zherk(uplo, trans, n, k, alpha, a, lda, beta, c, ldc)
398 use,
intrinsic :: iso_fortran_env
400 character(1),
intent(in) :: uplo, trans
401 integer,
intent(in) :: n, k, lda, ldc
402 real(real64),
intent(in) :: alpha, beta
403 complex(real64),
intent(in) :: a
404 complex(real64),
intent(inout) :: c
429 subroutine dtrsm(side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
430 use,
intrinsic :: iso_fortran_env
432 character(1),
intent(in) :: side
433 character(1),
intent(in) :: uplo
434 character(1),
intent(in) :: transa
435 character(1),
intent(in) :: diag
436 integer,
intent(in) :: m
437 integer,
intent(in) :: n
438 real(real64),
intent(in) :: alpha
439 real(real64),
intent(in) :: a
440 integer,
intent(in) :: lda
441 real(real64),
intent(inout) :: b
442 integer,
intent(in) :: ldb
445 subroutine ztrsm(side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
446 use,
intrinsic :: iso_fortran_env
448 character(1),
intent(in) :: side
449 character(1),
intent(in) :: uplo
450 character(1),
intent(in) :: transa
451 character(1),
intent(in) :: diag
452 integer,
intent(in) :: m
453 integer,
intent(in) :: n
454 complex(real64),
intent(in) :: alpha
455 complex(real64),
intent(in) :: a
456 integer,
intent(in) :: lda
457 complex(real64),
intent(inout) :: b
458 integer,
intent(in) :: ldb
464#if defined(HAVE_ACCELERATE)
472 complex(real64) function zdotc(n, dx, incx, dy, incy)
473 use,
intrinsic :: iso_c_binding
474 use,
intrinsic :: iso_fortran_env
476 integer,
intent(in) :: n, incx, incy
477 complex(real64),
intent(in) :: dx, dy
480 subroutine cblas_zdotc_sub(n, x, incx, y, incy, dotc)
bind(c, name="cblas_zdotc_sub")
481 use,
intrinsic :: iso_c_binding
483 integer(c_int),
intent(in),
value :: n, incx, incy
484 complex(c_double_complex),
intent(in) :: x, y
485 complex(c_double_complex),
intent(out) :: dotc
498 complex(real64) function zdotu(n, dx, incx, dy, incy)
499 use,
intrinsic :: iso_c_binding
500 use,
intrinsic :: iso_fortran_env
502 integer,
intent(in) :: n, incx, incy
503 complex(real64),
intent(in) :: dx, dy
506 subroutine cblas_zdotu_sub(n, x, incx, y, incy, dotu)
bind(c, name="cblas_zdotu_sub")
507 use,
intrinsic :: iso_c_binding
509 integer(c_int),
intent(in),
value :: n, incx, incy
510 complex(c_double_complex),
intent(in) :: x, y
511 complex(c_double_complex),
intent(out) :: dotu
526 subroutine dazaxpy(n, da, dx, dy)
527 use,
intrinsic :: iso_c_binding
528 use,
intrinsic :: iso_fortran_env
530 integer,
intent(in) :: n
531 real(real64),
intent(in) :: da
532 complex(real64),
intent(in),
target :: dx
533 complex(real64),
intent(inout),
target :: dy
535 real(real64),
pointer :: rx, ry
539 call c_f_pointer(c_loc(dx), rx)
540 call c_f_pointer(c_loc(dy), ry)
551 subroutine zdgemm(transa, transb, m, n, k, alpha, a, lda, b, ldb, beta, c, ldc)
552 use,
intrinsic :: iso_c_binding
553 use,
intrinsic :: iso_fortran_env
555 character(1),
intent(in) :: transa, transb
556 integer,
intent(in) :: m, n, k, lda, ldb, ldc
557 real(real64),
intent(in) :: alpha, beta
558 complex(real64),
intent(in),
target :: a
559 real(real64),
intent(in) :: b
560 complex(real64),
intent(inout),
target :: c
562 real(real64),
pointer :: ra, rc
566 call c_f_pointer(c_loc(a), ra)
567 call c_f_pointer(c_loc(c), rc)
569 call blas_gemm(transa, transb, m, n, k, alpha, ra, lda, b, ldb, beta, rc, ldc)
--------------— axpy ---------------— Constant times a vector plus a vector.
--------------— copy ---------------— Copies a vector, x, to a vector, y.
--------------— dot ---------------— Forms the dot product of two vectors.
--------------— gemm ---------------— performs one of the matrix-matrix operations
--------------— gemv ---------------— SGEMV performs one of the matrix-vector operations
--------------— syrk, herk ---------------— performs one of the symmetric rank k operations
--------------— nrm2 ---------------— Returns the euclidean norm of a vector via the function name,...
--------------— scal ---------------— Scales a vector by a constant.
--------------— swap ---------------— Interchanges two vectors.
--------------— symm, hemm ---------------— performs one of the matrix-matrix operations
--------------— symv ---------------— performs the matrix-vector operation
--------------— trmm ---------------— Performs one of the matrix-matrix operations
--------------------—trsm----------------------— Solves one of the matrix equations
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....
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.
subroutine dazaxpy(n, da, dx, dy)
A real constant times a complex vector plus a complex vector.