int iterativeInterpolatedSearching(int[] array, int value): #header
  If the array is null: #ifNull
    return -1. #invalid
  
  Set nrElems = number of array elements. #getArrayLength
  Set lower boundary lower = 0. #installLMarker
  Set upper boundary upper = nrElems - 1. #installRMarker
  Set current position mid = l + ((value - array[l]) * (r - l)) / (array[r] - array[l]). #installMidMarker
  While (r > l and array[mid] != value): #whileLoop
    If value < array[mid]: #ifLess
      r = mid - 1. #continueLeft
    Otherwise:
      l = mid + 1. #continueRight
    Set mid = l + ((value - array[l]) * (r - l)) / (array[r] - array[l]).; #updateMidElem
  If array[mid] == value: # checkFound
    return mid. #found
  return -1. #notFound