text: void locate(float xx[], unsigned long n, float x, unsigned long *j)
  {
  	unsigned long ju,jm,jl;
  	int ascnd;
  
  	jl=0;
  	ju=n+1;
  	ascnd=(xx[n] >= xx[1]);
  	while (ju-jl > 1) {
  		jm=(ju+jl) >> 1;
  		if (x >= xx[jm] == ascnd)
  			jl=jm;
  		else
  			ju=jm;
  	}
  	if (x == xx[1]) *j=1;
  	else if(x == xx[n]) *j=n-1;
  	else *j=jl;
  }
  