| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=int64), | intent(in) | :: | arr(:) | |||
| integer(kind=int64), | intent(in) | :: | val |
pure function binary_search_int_int64(arr, val) result(pos) integer(int64), intent(in) :: arr(:) integer(int64), intent(in) :: val integer(int64) :: pos integer(int64) :: hi, lo lo = 1 hi = size(arr) if(hi < lo) then pos = -lo return end if do while(hi /= lo) pos = int((hi + lo) / 2.0_dp, kind=int64) if(arr(pos) == val) then exit else if(val > arr(pos)) then lo = pos + 1 else hi = pos end if end do if(hi == lo) then if(arr(hi) == val) then pos = hi else pos = -1 end if end if end function binary_search_int_int64