pic_sgemv Subroutine

private pure subroutine pic_sgemv(A, x, y, trans_a, alpha, beta)

interface for single precision matrix-vector multiplication

Arguments

Type IntentOptional Attributes Name
real(kind=sp), intent(in) :: A(:,:)
real(kind=sp), intent(in) :: x(:)
real(kind=sp), intent(inout) :: y(:)
character(len=1), intent(in), optional :: trans_a
real(kind=sp), intent(in), optional :: alpha
real(kind=sp), intent(in), optional :: beta

Calls

proc~~pic_sgemv~~CallsGraph proc~pic_sgemv pic_sgemv interface~blas_gemv blas_gemv proc~pic_sgemv->interface~blas_gemv

Called by

proc~~pic_sgemv~~CalledByGraph proc~pic_sgemv pic_sgemv interface~pic_gemv pic_gemv interface~pic_gemv->proc~pic_sgemv

Variables

Type Visibility Attributes Name Initial
integer(kind=default_int), private :: incx
integer(kind=default_int), private :: incy
real(kind=sp), private :: l_alpha
real(kind=sp), private :: l_beta
character(len=1), private :: l_trans_a
integer(kind=default_int), private :: lda
integer(kind=default_int), private :: m
integer(kind=default_int), private :: n

Source Code

   pure subroutine pic_sgemv(A, x, y, trans_a, alpha, beta)
      !! interface for single precision matrix-vector multiplication
      real(sp), intent(in) :: A(:, :)
      real(sp), intent(in) :: x(:)
      real(sp), intent(inout) :: y(:)
      character(len=1), intent(in), optional :: trans_a
      real(sp), intent(in), optional :: alpha
      real(sp), intent(in), optional :: beta
      real(sp) :: l_alpha, l_beta
      character(len=1) :: l_trans_a
      integer(default_int) :: incx, incy, m, n, lda
      if (present(alpha)) then
         l_alpha = alpha
      else
         l_alpha = 1.0_sp
      end if
      if (present(beta)) then
         l_beta = beta
      else
         l_beta = 0.0_sp
      end if
      if (present(trans_a)) then
         l_trans_a = trans_a
      else
         l_trans_a = "n"
      end if
      incx = 1
      incy = 1
      lda = max(1, size(A, 1))
      m = size(A, 1)
      n = size(A, 2)
      call blas_gemv(l_trans_a, m, n, l_alpha, A, lda, x, incx, l_beta, y, incy)
   end subroutine pic_sgemv