Locate solution intervals for the given variables with the required precision. This works well if the problem has a finite number of solutions. locate/2,3 work by nondeterministically splitting the intervals of the variables until they are narrower than Precision (in either absolute or relative terms).
The LinLog parameter guides the way domains are split. If it is set to lin then the split is linear (i.e. the arithmetic mean of the bounds is used). If it is set to log, the split is logarithmic (i.e. the geometric mean of the bounds is used). Note that if log is used, there will be roughly the same number of representable floating point numbers on either side of the split, due to the logarithmic distribution of these numbers.
locate/3 is defined in terms of locate/4 as follows:
locate(Vars, Precision, LinLog) :- locate(Vars, [], Precision, LinLog).