subroutine encode_part_sign(ilut, real_sgn, part_type)
! Encode only the real OR imaginary component of the sign for the
! walker. Sign argument is now a scalar.
!
! In: real_sgn - The new sign component
! part_type - Update real/imaginary part. 1 ==> Re, 2 ==> Im
! InOut: ilut - The bit representation to update
integer(n_int), intent(inout) :: ilut(0:NIfTot)
integer, intent(in) :: part_type
real(dp), intent(in) :: real_sgn
integer(n_int) :: sgn
sgn = transfer(real_sgn, sgn)
iLut(IlutBits%ind_pop + part_type - 1) = sgn
end subroutine encode_part_sign