#[repr(transparent)]
pub struct OrderedFloat<T>(pub T);
Expand description
A wrapper around floats providing implementations of Eq
, Ord
, and Hash
.
NaN is sorted as greater than all other values and equal to itself, in contradiction with the IEEE standard.
use ordered_float::OrderedFloat;
use std::f32::NAN;
let mut v = [OrderedFloat(NAN), OrderedFloat(2.0), OrderedFloat(1.0)];
v.sort();
assert_eq!(v, [OrderedFloat(1.0), OrderedFloat(2.0), OrderedFloat(NAN)]);
Because OrderedFloat
implements Ord
and Eq
, it can be used as a key in a HashSet
, HashMap
, BTreeMap
, or BTreeSet
(unlike the primitive f32
or f64
types):
let mut s: HashSet<OrderedFloat<f32>> = HashSet::new();
s.insert(OrderedFloat(NAN));
assert!(s.contains(&OrderedFloat(NAN)));
Some non-identical values are still considered equal by the PartialEq
implementation, and will therefore also be considered equal by maps, sets, and the ==
operator:
-0.0
and +0.0
are considered equal. This different sign may show up in printing, or when dividing by zero (the sign of the zero becomes the sign of the resulting infinity).Therefore, OrderedFloat
may be unsuitable for use as a key in interning and memoization applications which require equal results from equal inputs, unless these cases make no difference or are canonicalized before insertion.
OrderedFloat
has #[repr(transparent)]
and permits any value, so it is sound to use transmute or pointer casts to convert between any type T
and OrderedFloat<T>
. However, consider using bytemuck
as a safe alternative if possible.
Converts this type into a mutable reference of the (usually inferred) input type.
Source§ Source§Convert a value to another, using the as
operator.
Convert a value to another, using the as
operator.
Convert a value to another, using the as
operator.
Convert a value to another, using the as
operator.
Convert a value to another, using the as
operator.
Convert a value to another, using the as
operator.
Convert a value to another, using the as
operator.
Convert a value to another, using the as
operator.
Convert a value to another, using the as
operator.
Convert a value to another, using the as
operator.
Convert a value to another, using the as
operator.
Convert a value to another, using the as
operator.
Convert a value to another, using the as
operator.
Convert a value to another, using the as
operator.
Convert a value to another, using the as
operator.
Convert a value to another, using the as
operator.
Convert a value to another, using the as
operator.
Convert a value to another, using the as
operator.
Convert a value to another, using the as
operator.
Convert a value to another, using the as
operator.
Convert a value to another, using the as
operator.
Convert a value to another, using the as
operator.
Convert a value to another, using the as
operator.
Convert a value to another, using the as
operator.
Convert a value to another, using the as
operator.
Convert a value to another, using the as
operator.
Convert a value to another, using the as
operator.
Convert a value to another, using the as
operator.
Convert a value to another, using the as
operator.
Convert a value to another, using the as
operator.
Convert a value to another, using the as
operator.
Convert a value to another, using the as
operator.
Convert a value to another, using the as
operator.
Convert a value to another, using the as
operator.
Convert a value to another, using the as
operator.
Convert a value to another, using the as
operator.
Convert a value to another, using the as
operator.
Convert a value to another, using the as
operator.
Convert a value to another, using the as
operator.
Convert a value to another, using the as
operator.
Convert a value to another, using the as
operator.
Convert a value to another, using the as
operator.
Convert a value to another, using the as
operator.
Convert a value to another, using the as
operator.
Convert a value to another, using the as
operator.
Convert a value to another, using the as
operator.
Convert a value to another, using the as
operator.
Convert a value to another, using the as
operator.
Convert a value to another, using the as
operator.
Convert a value to another, using the as
operator.
Convert a value to another, using the as
operator.
Convert a value to another, using the as
operator.
Converts this type into a shared reference of the (usually inferred) input type.
Source§ Source§Returns the smallest finite number this type can represent
Source§Returns the largest finite number this type can represent
Source§ Source§ Source§ Source§ Source§The resulting type after dereferencing.
Source§Dereferences the value.
Source§ Source§Mutably dereferences the value.
Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§Returns the negative infinite value.
Read more Source§ Source§Returns the smallest finite value that this type can represent.
Read more Source§Returns the smallest positive, normalized value that this type can represent.
Read more Source§Returns the largest finite value that this type can represent.
Read more Source§Returns
true
if this value is
NaN
and false otherwise.
Read more Source§Returns
true
if this value is positive infinity or negative infinity and false otherwise.
Read more Source§Returns
true
if this number is neither infinite nor
NaN
.
Read more Source§ Source§Returns the floating point category of the number. If only one property is going to be tested, it is generally faster to use the specific predicate instead.
Read more Source§Returns the largest integer less than or equal to a number.
Read more Source§Returns the smallest integer greater than or equal to a number.
Read more Source§Returns the nearest integer to a number. Round half-way cases away from
0.0
.
Read more Source§Return the integer part of a number.
Read more Source§Returns the fractional part of a number.
Read more Source§Computes the absolute value of
self
. Returns
Float::nan()
if the number is
Float::nan()
.
Read more Source§Returns a number that represents the sign of
self
.
Read more Source§Returns
true
if
self
is positive, including
+0.0
,
Float::infinity()
, and
Float::nan()
.
Read more Source§Returns
true
if
self
is negative, including
-0.0
,
Float::neg_infinity()
, and
-Float::nan()
.
Read more Source§Fused multiply-add. Computes
(self * a) + b
with only one rounding error, yielding a more accurate result than an unfused multiply-add.
Read more Source§Take the reciprocal (inverse) of a number,
1/x
.
Read more Source§Raise a number to an integer power.
Read more Source§Raise a number to a floating point power.
Read more Source§ Source§Returns
e^(self)
, (the exponential function).
Read more Source§ Source§Returns the natural logarithm of the number.
Read more Source§Returns the logarithm of the number with respect to an arbitrary base.
Read more Source§Returns the base 2 logarithm of the number.
Read more Source§Returns the base 10 logarithm of the number.
Read more Source§Returns the maximum of the two numbers.
Read more Source§Returns the minimum of the two numbers.
Read more Source§The positive difference of two numbers.
Read more Source§ Source§Calculate the length of the hypotenuse of a right-angle triangle given legs of length
x
and
y
.
Read more Source§Computes the sine of a number (in radians).
Read more Source§Computes the cosine of a number (in radians).
Read more Source§Computes the tangent of a number (in radians).
Read more Source§Computes the arcsine of a number. Return value is in radians in the range [-pi/2, pi/2] or NaN if the number is outside the range [-1, 1].
Read more Source§Computes the arccosine of a number. Return value is in radians in the range [0, pi] or NaN if the number is outside the range [-1, 1].
Read more Source§Computes the arctangent of a number. Return value is in radians in the range [-pi/2, pi/2];
Read more Source§Computes the four quadrant arctangent of
self
(
y
) and
other
(
x
).
Read more Source§Simultaneously computes the sine and cosine of the number,
x
. Returns
(sin(x), cos(x))
.
Read more Source§Returns
e^(self) - 1
in a way that is accurate even if the number is close to zero.
Read more Source§Returns
ln(1+n)
(natural logarithm) more accurately than if the operations were performed separately.
Read more Source§ Source§ Source§ Source§ Source§Inverse hyperbolic cosine function.
Read more Source§Inverse hyperbolic tangent function.
Read more Source§Returns the mantissa, base 2 exponent, and sign as integers, respectively. The original number can be recovered by
sign * mantissa * 2 ^ exponent
.
Read more Source§Returns epsilon, a small positive value.
Read more Source§ Source§ Source§ Source§Clamps a value between a min and max.
Read more Source§Returns a number composed of the magnitude of
self
and the sign of
sign
.
Read more Source§ Source§ Source§ Source§ Source§ Source§ Source§Returns the smallest finite value that this type can represent.
Read more Source§Returns the smallest positive, normalized value that this type can represent.
Read more Source§Returns the largest finite value that this type can represent.
Read more Source§ Source§Returns
true
if the number is infinite.
Read more Source§Returns
true
if the number is neither infinite or NaN.
Read more Source§Returns
true
if the number is neither zero, infinite, subnormal or NaN.
Read more Source§Returns the floating point category of the number. If only one property is going to be tested, it is generally faster to use the specific predicate instead.
Read more Source§Returns the largest integer less than or equal to a number.
Read more Source§Returns the smallest integer greater than or equal to a number.
Read more Source§Returns the nearest integer to a number. Round half-way cases away from
0.0
.
Read more Source§Return the integer part of a number.
Read more Source§Returns the fractional part of a number.
Read more Source§Computes the absolute value of
self
. Returns
FloatCore::nan()
if the number is
FloatCore::nan()
.
Read more Source§Returns a number that represents the sign of
self
.
Read more Source§Returns
true
if
self
is positive, including
+0.0
and
FloatCore::infinity()
, and
FloatCore::nan()
.
Read more Source§Returns
true
if
self
is negative, including
-0.0
and
FloatCore::neg_infinity()
, and
-FloatCore::nan()
.
Read more Source§Returns the reciprocal (multiplicative inverse) of the number.
Read more Source§Raise a number to an integer power.
Read more Source§Returns the mantissa, base 2 exponent, and sign as integers, respectively. The original number can be recovered by
sign * mantissa * 2 ^ exponent
.
Read more Source§Returns epsilon, a small positive value.
Read more Source§Converts to degrees, assuming the number is in radians.
Read more Source§Converts to radians, assuming the number is in degrees.
Read more Source§ Source§Returns the minimum of the two numbers.
Read more Source§Returns the maximum of the two numbers.
Read more Source§A value bounded by a minimum and a maximum
Read more Source§ Source§Converts to this type from the input type.
Source§ Source§Converts to this type from the input type.
Source§ Source§Converts to this type from the input type.
Source§ Source§Converts to this type from the input type.
Source§ Source§Converts to this type from the input type.
Source§ Source§Converts to this type from the input type.
Source§ Source§Converts to this type from the input type.
Source§ Source§Converts to this type from the input type.
Source§ Source§Converts to this type from the input type.
Source§ Source§Converts to this type from the input type.
Source§ Source§Converts to this type from the input type.
Source§ Source§Converts to this type from the input type.
Source§ Source§Converts to this type from the input type.
Source§ Source§Converts to this type from the input type.
Source§ Source§Converts to this type from the input type.
Source§ Source§Converts to this type from the input type.
Source§ Source§Converts to this type from the input type.
Source§ Source§Converts an i64
to return an optional value of this type. If the value cannot be represented by this type, then None
is returned.
Converts an u64
to return an optional value of this type. If the value cannot be represented by this type, then None
is returned.
Converts an isize
to return an optional value of this type. If the value cannot be represented by this type, then None
is returned.
Converts an i8
to return an optional value of this type. If the value cannot be represented by this type, then None
is returned.
Converts an i16
to return an optional value of this type. If the value cannot be represented by this type, then None
is returned.
Converts an i32
to return an optional value of this type. If the value cannot be represented by this type, then None
is returned.
Converts a usize
to return an optional value of this type. If the value cannot be represented by this type, then None
is returned.
Converts an u8
to return an optional value of this type. If the value cannot be represented by this type, then None
is returned.
Converts an u16
to return an optional value of this type. If the value cannot be represented by this type, then None
is returned.
Converts an u32
to return an optional value of this type. If the value cannot be represented by this type, then None
is returned.
Converts a f32
to return an optional value of this type. If the value cannot be represented by this type, then None
is returned.
Converts a
f64
to return an optional value of this type. If the value cannot be represented by this type, then
None
is returned.
Read more Source§Converts an
i128
to return an optional value of this type. If the value cannot be represented by this type, then
None
is returned.
Read more Source§Converts an
u128
to return an optional value of this type. If the value cannot be represented by this type, then
None
is returned.
Read more Source§ Source§Convert a &str to OrderedFloat
. Returns an error if the string fails to parse.
use ordered_float::OrderedFloat;
assert!("-10".parse::<OrderedFloat<f32>>().is_ok());
assert!("abc".parse::<OrderedFloat<f32>>().is_err());
assert!("NaN".parse::<OrderedFloat<f32>>().is_ok());
Source§
The associated error which can be returned from parsing.
Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§Creates a number from another value that can be converted into a primitive via the
ToPrimitive
trait. If the source value cannot be represented by the target type, then
None
is returned.
Read more Source§ Source§Returns the multiplicative identity element of
Self
,
1
.
Read more Source§Sets self
to the multiplicative identity element of Self
, 1
.
Returns
true
if
self
is equal to the multiplicative identity.
Read more Source§ Source§ Source§Tests for self
and other
values to be equal, and is used by ==
.
Tests for !=
. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Tests for self
and other
values to be equal, and is used by ==
.
Tests for !=
. The default implementation is almost always sufficient, and should not be overridden without very good reason.
This method returns an ordering between
self
and
other
values if one exists.
Read more Source§Tests less than (for
self
and
other
) and is used by the
<
operator.
Read more Source§Tests less than or equal to (for
self
and
other
) and is used by the
<=
operator.
Read more Source§Tests greater than (for
self
and
other
) and is used by the
>
operator.
Read more Source§Tests greater than or equal to (for
self
and
other
) and is used by the
>=
operator.
Read more Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§Takes an iterator and generates Self
from the elements by multiplying the items.
Takes an iterator and generates Self
from the elements by multiplying the items.
The positive difference of two numbers.
Read more Source§ Source§Returns true if the number is positive and false if the number is zero or negative.
Source§Returns true if the number is negative and false if the number is zero or positive.
Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§ Source§Takes an iterator and generates Self
from the elements by “summing up” the items.
Adds a float directly.
Source§Takes an iterator and generates Self
from the elements by “summing up” the items.
Converts the value of self
to an i64
. If the value cannot be represented by an i64
, then None
is returned.
Converts the value of self
to a u64
. If the value cannot be represented by a u64
, then None
is returned.
Converts the value of self
to an isize
. If the value cannot be represented by an isize
, then None
is returned.
Converts the value of self
to an i8
. If the value cannot be represented by an i8
, then None
is returned.
Converts the value of self
to an i16
. If the value cannot be represented by an i16
, then None
is returned.
Converts the value of self
to an i32
. If the value cannot be represented by an i32
, then None
is returned.
Converts the value of self
to a usize
. If the value cannot be represented by a usize
, then None
is returned.
Converts the value of self
to a u8
. If the value cannot be represented by a u8
, then None
is returned.
Converts the value of self
to a u16
. If the value cannot be represented by a u16
, then None
is returned.
Converts the value of self
to a u32
. If the value cannot be represented by a u32
, then None
is returned.
Converts the value of self
to an f32
. Overflows may map to positive or negative inifinity, otherwise None
is returned if the value cannot be represented by an f32
.
Converts the value of
self
to an
f64
. Overflows may map to positive or negative inifinity, otherwise
None
is returned if the value cannot be represented by an
f64
.
Read more Source§Converts the value of
self
to an
i128
. If the value cannot be represented by an
i128
(
i64
under the default implementation), then
None
is returned.
Read more Source§Converts the value of
self
to a
u128
. If the value cannot be represented by a
u128
(
u64
under the default implementation), then
None
is returned.
Read more Source§ Source§ Source§Returns the additive identity element of
Self
,
0
.
Read more Source§Returns true
if self
is equal to the additive identity.
Sets self
to the additive identity element of Self
, 0
.
🔬This is a nightly-only experimental API. (clone_to_uninit
)
Performs copy-assignment from
self
to
dest
.
Read more Source§ Source§Returns the argument unchanged.
Source§ Source§Calls U::from(self)
.
That is, this conversion is whatever the implementation of From<T> for U
chooses to do.
Returns the smallest finite number this type can represent
Source§ Source§Returns the smallest finite value that this type can represent.
Read more Source§Returns the smallest positive, normalized value that this type can represent.
Read more Source§Returns epsilon, a small positive value.
Read more Source§Returns the largest finite value that this type can represent.
Read more Source§Returns the largest integer less than or equal to a number.
Read more Source§Returns the smallest integer greater than or equal to a number.
Read more Source§Returns the nearest integer to a number. Round half-way cases away from
0.0
.
Read more Source§Return the integer part of a number.
Read more Source§Returns the fractional part of a number.
Read more Source§Computes the absolute value of
self
. Returns
Float::nan()
if the number is
Float::nan()
.
Read more Source§Returns a number that represents the sign of
self
.
Read more Source§Returns
true
if
self
is positive, including
+0.0
,
Float::infinity()
, and with newer versions of Rust
f64::NAN
.
Read more Source§Returns
true
if
self
is negative, including
-0.0
,
Float::neg_infinity()
, and with newer versions of Rust
-f64::NAN
.
Read more Source§Fused multiply-add. Computes
(self * a) + b
with only one rounding error, yielding a more accurate result than an unfused multiply-add.
Read more Source§Take the reciprocal (inverse) of a number,
1/x
.
Read more Source§Raise a number to an integer power.
Read more Source§Raise a number to a real number power.
Read more Source§ Source§Returns
e^(self)
, (the exponential function).
Read more Source§ Source§Returns the natural logarithm of the number.
Read more Source§Returns the logarithm of the number with respect to an arbitrary base.
Read more Source§Returns the base 2 logarithm of the number.
Read more Source§Returns the base 10 logarithm of the number.
Read more Source§ Source§ Source§Returns the maximum of the two numbers.
Read more Source§Returns the minimum of the two numbers.
Read more Source§The positive difference of two numbers.
Read more Source§ Source§Calculate the length of the hypotenuse of a right-angle triangle given legs of length
x
and
y
.
Read more Source§Computes the sine of a number (in radians).
Read more Source§Computes the cosine of a number (in radians).
Read more Source§Computes the tangent of a number (in radians).
Read more Source§Computes the arcsine of a number. Return value is in radians in the range [-pi/2, pi/2] or NaN if the number is outside the range [-1, 1].
Read more Source§Computes the arccosine of a number. Return value is in radians in the range [0, pi] or NaN if the number is outside the range [-1, 1].
Read more Source§Computes the arctangent of a number. Return value is in radians in the range [-pi/2, pi/2];
Read more Source§Computes the four quadrant arctangent of
self
(
y
) and
other
(
x
).
Read more Source§Simultaneously computes the sine and cosine of the number,
x
. Returns
(sin(x), cos(x))
.
Read more Source§Returns
e^(self) - 1
in a way that is accurate even if the number is close to zero.
Read more Source§Returns
ln(1+n)
(natural logarithm) more accurately than if the operations were performed separately.
Read more Source§ Source§ Source§ Source§ Source§Inverse hyperbolic cosine function.
Read more Source§Inverse hyperbolic tangent function.
Read more Source§ Source§🔬This is a nightly-only experimental API. (arbitrary_self_types
)
The target type on which the method may be called.
Source§ Source§The resulting type after obtaining ownership.
Source§Creates owned data from borrowed data, usually by cloning.
Read more Source§Uses borrowed data to replace owned data, usually by cloning.
Read more Source§ Source§ Source§The type returned in the event of a conversion error.
Source§Performs the conversion.
Source§ Source§The type returned in the event of a conversion error.
Source§Performs the conversion.
Source§ Source§Returns the largest finite number this type can represent
Source§ Source§ Source§ Source§ Source§ Source§RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4