subroutine MOtoAO_transform(nBas,S,c,A) ! Perform MO to AO transformation of a matrix A for a given metric S ! and coefficients c implicit none ! Input variables integer,intent(in) :: nBas double precision,intent(in) :: S(nBas,nBas),c(nBas,nBas) ! Local variables double precision,allocatable :: Sc(:,:) ! Output variables double precision,intent(inout):: A(nBas,nBas) ! Memory allocation allocate(Sc(nBas,nBas)) Sc = matmul(S,c) A = matmul(Sc,matmul(A,transpose(Sc))) end subroutine MOtoAO_transform