find_index_adaptive Function

public pure function find_index_adaptive(list, val) result(ix)

Adaptive search (combination of linear and binary search) of sorted list for the smallest ix such that list(ix) >= val. On failure, returns size(list)+1

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(in) :: list(:)

Sorted list

real(kind=dp), intent(in) :: val

Value to search for

Return Value integer


Calls

proc~~find_index_adaptive~~CallsGraph proc~find_index_adaptive find_index_adaptive proc~find_index_bsearch find_index_bsearch proc~find_index_adaptive->proc~find_index_bsearch proc~find_index_linear find_index_linear proc~find_index_adaptive->proc~find_index_linear

Called by

proc~~find_index_adaptive~~CalledByGraph proc~find_index_adaptive find_index_adaptive proc~lt_lin_interp_list LT_lin_interp_list proc~lt_lin_interp_list->proc~find_index_adaptive proc~lt_get_spaced_data LT_get_spaced_data proc~lt_get_spaced_data->proc~lt_lin_interp_list proc~lt2_set_col LT2_set_col proc~lt2_set_col->proc~lt_get_spaced_data proc~lt_add_col LT_add_col proc~lt_add_col->proc~lt_get_spaced_data proc~lt_set_col LT_set_col proc~lt_set_col->proc~lt_get_spaced_data

Source Code

  pure function find_index_adaptive(list, val) result(ix)
    real(dp), intent(in) :: list(:)
    !< Sorted list
    real(dp), intent(in) :: val
    !< Value to search for
    integer              :: ix
    integer, parameter   :: binary_search_limit = 40

    if (size(list) < binary_search_limit) then
       ix = find_index_linear(list, val)
    else
       ix = find_index_bsearch(list, val)
    end if
  end function find_index_adaptive