[ library(ic) | Reference Manual | Alphabetic Index ]
# locate(+LocateVars, +SquashVars, ++Precision, ++LinLog)

Locate solution intervals for LocateVars, interleaving search with squashing.
*LocateVars*
- Collection (a la collection_to_list/2) of variables
*SquashVars*
- Collection of variables
*Precision*
- Minimum required precision (float)
*LinLog*
- Domain splitting method (lin or log)

## Description

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 (i.e. each time one of the LocateVars has been split
nondeterministically during the search). A variable may occur in both
LocateVars and SquashVars.

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.

## See Also

locate / 2, locate / 3, squash / 3, lists : collection_to_list / 2