subroutine rparedms(b,ap_b,am_b,xm_p,xm_m,nvec,tamm_dancoff)
use precision, only: dp
implicit none
real(kind=dp), intent(in), dimension(:,:) :: b
real(kind=dp), intent(in), dimension(:,:) :: am_b, ap_b
real(kind=dp), intent(out), dimension(:,:) :: xm_m, xm_p
integer, intent(in) :: nvec
logical :: tamm_dancoff
integer :: xvec_dim
xvec_dim = ubound(b, 1)
if (tamm_dancoff) then
call dgemm('t','n',nvec,nvec,xvec_dim, &
1.0_dp,b,xvec_dim,ap_b,xvec_dim, &
0.0_dp,xm_p,nvec)
else
call dgemm('t','n',nvec,nvec,xvec_dim, &
1.0_dp,b,xvec_dim,ap_b,xvec_dim, &
0.0_dp,xm_p,nvec)
call dgemm('t','n',nvec,nvec,xvec_dim, &
1.0_dp,b,xvec_dim,am_b,xvec_dim, &
0.0_dp,xm_m,nvec)
end if
end subroutine rparedms