void hunt(xx,n,x,jlo) int n,*jlo; float xx[],x; { int jm,jhi,inc,ascnd; ascnd=(xx[n] > xx[1]); if (*jlo <= 0 || *jlo > n) { *jlo=0; jhi=n+1; } else { inc=1; if (x >= xx[*jlo] == ascnd) { if (*jlo == n) return; jhi=(*jlo)+1; while (x >= xx[jhi] == ascnd) { *jlo=jhi; inc += inc; jhi=(*jlo)+inc; if (jhi > n) { jhi=n+1; break; } } } else { if (*jlo == 1) { *jlo=0; return; } jhi=(*jlo); *jlo -= 1; while (x < xx[*jlo] == ascnd) { jhi=(*jlo); inc += inc; *jlo=jhi-inc; if (*jlo < 1) { *jlo=0; break; } } } } while (jhi-(*jlo) != 1) { jm=(jhi+(*jlo)) >> 1; if (x > xx[jm] == ascnd) *jlo=jm; else jhi=jm; } }