diff --git a/src/Determinants/slater_rules.irp.f b/src/Determinants/slater_rules.irp.f index 6ece0aba..202d310d 100644 --- a/src/Determinants/slater_rules.irp.f +++ b/src/Determinants/slater_rules.irp.f @@ -220,8 +220,10 @@ subroutine get_double_excitation(det1,det2,exc,phase,Nint) ibclr(-1_bit_kind,n)+1_bit_kind ) )) else nperm = nperm + popcnt(iand(det1(k,ispin), & - ibset(0_bit_kind,m-1)-1_bit_kind)) + & - popcnt(iand(det1(j,ispin), ibclr(-1_bit_kind,n) +1_bit_kind)) + ibset(0_bit_kind,m-1)-1_bit_kind)) + if (n < bit_kind_size) then + nperm = nperm + popcnt(iand(det1(j,ispin), ibclr(-1_bit_kind,n) +1_bit_kind)) + endif do i=j+1,k-1 nperm = nperm + popcnt(det1(i,ispin)) end do @@ -246,8 +248,10 @@ subroutine get_double_excitation(det1,det2,exc,phase,Nint) ibclr(-1_bit_kind,n)+1_bit_kind ) )) else nperm = nperm + popcnt(iand(det1(k,ispin), & - ibset(0_bit_kind,m-1)-1_bit_kind)) + & - popcnt(iand(det1(j,ispin), ibclr(-1_bit_kind,n) +1_bit_kind)) + ibset(0_bit_kind,m-1)-1_bit_kind)) + if (n < bit_kind_size) then + nperm = nperm + popcnt(iand(det1(j,ispin), ibclr(-1_bit_kind,n) +1_bit_kind)) + endif do l=j+1,k-1 nperm = nperm + popcnt(det1(l,ispin)) end do @@ -334,9 +338,10 @@ subroutine get_mono_excitation(det1,det2,exc,phase,Nint) nperm = popcnt(iand(det1(j,ispin), & iand(ibset(0_bit_kind,m-1)-1_bit_kind,ibclr(-1_bit_kind,n)+1_bit_kind))) else - nperm = nperm + & - popcnt(iand(det1(k,ispin),ibset(0_bit_kind,m-1)-1_bit_kind)) +& - popcnt(iand(det1(j,ispin),ibclr(-1_bit_kind,n)+1_bit_kind)) + nperm = nperm + popcnt(iand(det1(k,ispin),ibset(0_bit_kind,m-1)-1_bit_kind)) + if (n < bit_kind_size) then + nperm = nperm + popcnt(iand(det1(j,ispin),ibclr(-1_bit_kind,n)+1_bit_kind)) + endif do i=j+1,k-1 nperm = nperm + popcnt(det1(i,ispin)) end do