Every instance of CheckedFloat is guaranteed to satisfy the property given by the provided FloatChecker.
In particular, this can be used to have a floating point type that forbids values like
NaN, infinity, negatives, etc. all by providing different checkers.
CheckedFloat supports all the typical operations of a normal float type.
However, all operations that yield another float type (e.g., add, sub, sin, etc.)
instead yield a custom Result type specified by the FloatChecker.
All methods from the Float type are supported by this wrapper in checked context.
For documentation, see the original method definitions in Float.
CheckedFloat also supports an implementation of Ord, which allows for directly sorting CheckedFloat collections.
The convention for this implementation has ordering -NaN < -Inf < ... < -0 = +0 < ... < +Inf < +NaN.