subroutine init_rdm_list_t(rdm, sign_length, max_nelements, nhashes)
! Initialise an rdm_list_t object.
! Out: rdm - rdm_list_t object to be initialised.
! In: sign_length - the number of signs which can be stored for each element.
! In: max_nelements - the length of the rdm%elements array.
! In: nhashes - the number of unique hashes for indexing the hash table.
use hash, only: init_hash_table
type(rdm_list_t), intent(out) :: rdm
integer, intent(in) :: sign_length, max_nelements, nhashes
integer :: ierr
rdm%sign_length = sign_length
rdm%max_nelements = max_nelements
rdm%nhashes = nhashes
allocate(rdm%elements(0:sign_length, max_nelements))
rdm%elements = 0_int_rdm
allocate(rdm%hash_table(nhashes), stat=ierr)
call init_hash_table(rdm%hash_table)
end subroutine init_rdm_list_t