### 5.1 Floating Point Variables and Floating Point Domains

Floating point domain is defined in a similar way as integer variable domain as an ordered
list of floating point intervals in class org.jacop.floats.core.FloatIntervalDomain.
This class implements an abstract class org.jacop.floats.core.FloatDomain that in turn
extends ordinary JaCoP domain defined in org.jacop.core.Domain. The floating point
variable is defined using the floating point interval as follows.

FloatVar f = new FloatVar(store, "f", 0.0, 10.0);
This java declaration defines floating point variable f with domain 0.0..10.0.

The float variables are used in floating point constraints, discussed in the next section.
Special attention is paid to precision of floating point operations. Basically, JaCoP considers a
floating point interval to represent a single value if a difference between max and min values
of a variable is lower than an epsilon value (ϵ). Epsilon is calculated based on a given
precision and ulp value (ulp is a floating point specific value know as “unit at last position”).
The precision is defined in org.jacop.core.FloatDomain and can be set-up and
obtained using following methods FloatDomain.setPrecision(double p) and
FloatDomain.precision(). Epsilon is defined as a maximum of ulp and the precision.
Class FloatDomain defines also min and max values of floating variables and values of π and
e.