interface orIntervals subroutine orIntervalsBothScalar(intervalA, intervalB, oredIntervals) type(IntervalT), intent(in) :: intervalA, intervalB type(IntervalT), pointer :: oredIntervals(:) end subroutine orIntervalsBothScalar subroutine orIntervalsOneVector(intervalA, intervalsB, oredIntervals) type(IntervalT), intent(in) :: intervalA, intervalsB(:) type(IntervalT), pointer :: oredIntervals(:) end subroutine orIntervalsOneVector subroutine orIntervalsBothVector(intervalsA, intervalsB, oredIntervals) type(IntervalT), intent(in) :: intervalsA(:), intervalsB(:) type(IntervalT), pointer :: oredIntervals(:) end subroutine orIntervalsBothVector end interface
In all cases the intervals are first converted to RangeT structures as follows:
range%lower%type = INCLUSIVE range%upper%type = EXCLUSIVE range%lower%value = interval%lower range%upper%value = interval%upper
In this form, they can be ORed together by use of the dss_aux call orRangesPair (see section 9.5.7)
NOTE! This function requires the intervals to be well-formed (see section 17.1).