A variant of locate/2,3 with interleaved squashing: The squash algorithm is applied once to the SquashVars initially, and then again after each splitting step, ie. each time one of the LocateVars has been split nondeterministically. A variable may occur both in LocateVars and SquashVars.
The lin/log parameter guides the way domains are split. If it is set to lin then the split is in the arithmetic middle. If it is set to log, the split is such as to have the same number of floats to either side of the split. This is to take the logarithmic distribution of the floats into account.