traverse Function

pure function traverse(iseed, reverse) result(ilocation)

Arguments

Type IntentOptional Attributes Name
integer(kind=ip), intent(in) :: iseed
logical, intent(in) :: reverse

if reverse, then ilocation -> iseed

Return Value integer(kind=ip)


Calls

proc~~traverse~~CallsGraph proc~traverse problem_5::traverse proc~map problem_5::map proc~traverse->proc~map

Called by

proc~~traverse~~CalledByGraph proc~traverse problem_5::traverse program~problem_5 problem_5 program~problem_5->proc~traverse

Source Code

    pure function traverse(iseed, reverse) result(ilocation)
        integer(ip),intent(in) :: iseed
        logical,intent(in) :: reverse !! if reverse, then ilocation -> iseed
        integer(ip) :: ilocation
        integer :: i
        ilocation = iseed ! initialize
        if (reverse) then
            do i = NSTAGES, 1, -1
                ilocation = map(ilocation,mappings(i),reverse) ! this is really iseed
            end do
        else
            do i = 1, NSTAGES
                ilocation = map(ilocation,mappings(i),reverse)
            end do
        end if
    end function traverse