Zsolve_1rhs Subroutine

subroutine Zsolve_1rhs(A, b, trans)

Arguments

Type IntentOptional Attributes Name
complex(kind=8), intent(in), dimension(:,:) :: A
complex(kind=8), intent(inout), dimension(:) :: b
character(len=1), optional :: trans

Calls

proc~~zsolve_1rhs~~CallsGraph proc~zsolve_1rhs Zsolve_1rhs zgetrf zgetrf proc~zsolve_1rhs->zgetrf zgetrs zgetrs proc~zsolve_1rhs->zgetrs

Source Code

subroutine Zsolve_1rhs(A,b,trans)
  complex(8),dimension(:,:),intent(in)  :: A
  complex(8),dimension(:),intent(inout) :: b
  complex(8),dimension(:,:),allocatable :: b_
  character(len=1),optional          :: trans
  character(len=1)                   :: trans_
  integer                            :: m,n,nrhs,lda,ldb
  integer                            :: info
  integer,dimension(:),allocatable   :: ipvt
  trans_="N";if(present(trans))trans_=trans
  lda = max(1,size(A,1))
  ldb = max(1,size(B))
  m   = size(A,1)
  n   = size(A,2)
  nrhs= 1
  allocate(ipvt(min(m,n)))
  call zgetrf(m,n,A,lda,ipvt,info)
  if(info/=0)stop "Error MATRIX/d_mat_solve_linear_system: dgetrf"    
  allocate(b_(ldb,nrhs))
  b_(:,1)=b
  call zgetrs(trans_,n,nrhs,A,lda,ipvt,b_,ldb,info)
  if(info/=0)stop "Error MATRIX/d_mat_solve_linear_system: dgetrs"
  b=b_(:,1)
  deallocate(ipvt,b_)
end subroutine Zsolve_1rhs