Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | n | |||
real(kind=8), | intent(in), | dimension(0:n) | :: | range | ||
real(kind=8), | intent(in) | :: | x | |||
integer, | intent(out) | :: | index |
subroutine find_index(n,range,x,index) integer,intent(in) :: n real(8),dimension(0:n),intent(in) :: range real(8),intent(in) :: x integer,intent(out) :: index integer :: i,upper,lower,mid if((x<range(0)) .OR. (x>range(n)))then print*,"X out of range!" return endif upper=n lower=0 do while((upper-lower>1)) mid = (upper+lower)/2 !int(dble(upper + lower)/2.d0) if( x >= range(mid))then lower=mid else upper=mid endif enddo index=lower if(x<range(lower) .OR. x>range(lower+1))then print*,"error: x not found within range!" stop endif end subroutine find_index