tem_PathComparison Function

public elemental function tem_PathComparison(left, right) result(relation)

Compare two Paths in the linearized tree Result: -1: left is lower than right 0: left is same than right 1: left is higher than right

Arguments

Type IntentOptional Attributes Name
type(tem_path_type), intent(in) :: left

candidate path

type(tem_path_type), intent(in) :: right

candidate path

Return Value integer

relation between the paths


Source Code

  elemental function tem_PathComparison( left, right ) result(relation)
    ! ---------------------------------------------------------------------------
    !> candidate path
    type(tem_path_type), intent(in) :: left
    !> candidate path
    type(tem_path_type), intent(in) :: right
    !> relation between the paths
    integer :: relation
    ! ---------------------------------------------------------------------------
    integer :: maxPathLen
    integer(kind=long_k) :: diff
    ! ---------------------------------------------------------------------------

    ! Find the greatest common level.
    maxPathLen = min(left%level-1, right%level-1)

    ! Difference of treeIDs on that level indicates the relation of the two
    ! paths.
    diff =  left%Node( left%Level - maxPathLen)                                &
      &  - right%Node(right%Level - maxPathLen)

    ! Normalize the relation.
    relation = int(diff / max(1_long_k, abs(diff)))

  end function tem_PathComparison