FiniteFloatModule

PackageReified.Refinements
Operations over floats that are known to be neither infinite nor <c>NaN</c>.

Summary

NameSignatureSynopsis
constraint'FiniteFloat.constraint' The portable constraint admitting only finite doubles.
refinementFiniteFloat.refinement No description available.
valueFiniteFloat.value inputReturns the underlying value.
createFiniteFloat.create valueAdmits a finite double, rejecting infinities and NaN.
ofFloatFiniteFloat.ofFloat valueReturns the finite value, or None when it is infinite or NaN.
zeroFiniteFloat.zero The additive identity.
oneFiniteFloat.one The multiplicative identity.
negateFiniteFloat.negate inputNegates the value.
absFiniteFloat.abs inputReturns the magnitude.
minFiniteFloat.min left rightReturns the smaller value.
maxFiniteFloat.max left rightReturns the larger value.
compareFiniteFloat.compare left rightCompares two finite doubles.
averageFiniteFloat.average valuesReturns the arithmetic mean.
sumFiniteFloat.sum valuesTotals a non-empty list, failing when the total leaves the finite range.
minimumFiniteFloat.minimum valuesReturns the smallest value.
maximumFiniteFloat.maximum valuesReturns the largest value.

constraint'

FiniteFloat.constraint'
Member
The portable constraint admitting only finite doubles.

Returns

Constraint<float>

refinement

FiniteFloat.refinement
Member

Returns

Refinement<float, FiniteFloat>

value

FiniteFloat.value input
Member
Returns the underlying value.

Parameters

NameTypeDescription
inputFiniteFloat

Returns

float

create

FiniteFloat.create value
Member
Admits a finite double, rejecting infinities and NaN.

Parameters

NameTypeDescription
valuefloat

Returns

Result<FiniteFloat, Violation>

ofFloat

FiniteFloat.ofFloat value
Member
Returns the finite value, or None when it is infinite or NaN.

Parameters

NameTypeDescription
valuefloat

Returns

FiniteFloat option

zero

FiniteFloat.zero
Member
The additive identity.

Returns

FiniteFloat

one

FiniteFloat.one
Member
The multiplicative identity.

Returns

FiniteFloat

negate

FiniteFloat.negate input
Member
Negates the value. Total — negation cannot leave the finite range.

Parameters

NameTypeDescription
inputFiniteFloat

Returns

FiniteFloat

abs

FiniteFloat.abs input
Member
Returns the magnitude. Total — abs cannot leave the finite range.

Parameters

NameTypeDescription
inputFiniteFloat

Returns

FiniteFloat

min

FiniteFloat.min left right
Member
Returns the smaller value. Total, and meaningful because ordering is lawful.

Parameters

NameTypeDescription
leftFiniteFloat
rightFiniteFloat

Returns

FiniteFloat

max

FiniteFloat.max left right
Member
Returns the larger value. Total, and meaningful because ordering is lawful.

Parameters

NameTypeDescription
leftFiniteFloat
rightFiniteFloat

Returns

FiniteFloat

compare

FiniteFloat.compare left right
Member
Compares two finite doubles. Total and lawful, unlike comparison on float.

Parameters

NameTypeDescription
leftFiniteFloat
rightFiniteFloat

Returns

int

average

FiniteFloat.average values
Member
Returns the arithmetic mean. Computed by dividing before summing, so a list whose total would overflow still averages successfully.

Parameters

NameTypeDescription
valuesNonEmptyList<FiniteFloat>

Returns

Result<FiniteFloat, Violation>

sum

FiniteFloat.sum values
Member
Totals a non-empty list, failing when the total leaves the finite range.

Parameters

NameTypeDescription
valuesNonEmptyList<FiniteFloat>

Returns

Result<FiniteFloat, Violation>

minimum

FiniteFloat.minimum values
Member
Returns the smallest value. Total, because ordering is lawful.

Parameters

NameTypeDescription
valuesNonEmptyList<FiniteFloat>

Returns

FiniteFloat

maximum

FiniteFloat.maximum values
Member
Returns the largest value. Total, because ordering is lawful.

Parameters

NameTypeDescription
valuesNonEmptyList<FiniteFloat>

Returns

FiniteFloat