- Bug fix:
rem_euclid_int
and its checked versions were handling overflow incorrectly.
- Bug fix:
round_to_zero
was returning incorrect results for negative whole number operands. - Bug fix: all remainder operations with a fixed-point LHS and an integer RHS were giving an incorrect answer (https://gitlab.com/tspiteri/fixed/issues/13).
- Bug fix: Euclidean division operations by integers were giving an incorrect answer.
Rem
andRemAssign
were implemented for fixed-point numbers.- The following methods were added to all fixed-point types and to
the
Fixed
trait:checked_rem
div_euclid
,rem_euclid
checked_div_euclid
,checked_rem_euclid
saturating_div_euclid
wrapping_div_euclid
overflowing_div_euclid
- The following methods were added to the
Wrapping
wrapper:div_euclid
,rem_euclid
div_euclid_int
,rem_euclid_int
- The following methods were deprecated:
wrapping_rem_int
,overflowing_rem_int
Wrapping
now supports serialization. (Thanks: Shane Pearman)
ParseFixedError
implementsError
when the newstd
feature is enabled.
- The fixed crate now requires rustc version 1.39.0 or later.
- The following methods were added to all fixed-point types and to
the
Fixed
trait:from_be_bytes
,from_le_bytes
,from_ne_bytes
to_be_bytes
,to_le_bytes
,to_ne_bytes
div_euclid_int
,rem_euclid_int
checked_div_euclid_int
,checked_rem_euclid_int
wrapping_div_euclid_int
,wrapping_rem_euclid_int
overflowing_div_euclid_int
,overflowing_rem_euclid_int
- Deprecated methods and modules were removed.
- Conversions to/from
bf16
are now provided when thef16
option is enabled. - The following methods are now
const
functions:saturating_neg
,saturating_add
,saturating_sub
,saturating_mul_int
,saturating_abs
- Support for casts using the az crate was added.
- Bug fix: display of many decimal numbers was panicking in debug mode or including a leading zero in release mode.
- Many methods were added to
Wrapping
for convenience, even if they do not involve wrapping.
- Bug fix: rounding could produce bad output for
Binary
,Octal
,LowerHex
andUpperHex
. - The following methods are now
const
functions:is_power_of_two
,abs
,wrapping_abs
,overflowing_abs
- The method
round_to_zero
was added. - The method
round_ties_to_even
and its checked versions were added.
- The fixed crate now requires rustc version 1.34.0 or later.
- The precision argument is no longer ignored when formatting fixed-point numbers; precision should now be handled the same as for primitive floating-point numbers in the standard library.
- Parsing strings now rounds to the nearest with ties rounded to even.
- Checked versions of string parsing methods are now available as
inherent methods to all fixed-point numbers, and as methods in the
Fixed
trait. Wrapping
now has methods for parsing with wrapping, including an implementation ofFromStr
.- The following methods are now
const
functions:min_value
,max_value
,from_bits
,to_bits
count_ones
,count_zeros
,leading_zeros
,trailing_zeros
rotate_left
,rotate_right
wrapping_neg
,wrapping_add
,wrapping_sub
,wrapping_mul_int
,wrapping_shl
,wrapping_shr
overflowing_neg
,overflowing_add
,overflowing_sub
,overflowing_mul_int
,overflowing_shl
,overflowing_shr
is_positive
,is_negative
- The associated constants
INT_NBITS
andFRAC_NBITS
were added. - The reexports in the
frac
module and theLeEqU*
traits were moved into the newtypes::extra
module.
- The new methods
from_num
andto_num
together with their checked versions were added to all fixed-point numbers. - The methods
from_fixed
,to_fixed
,from_int
,to_int
,from_float
, andto_float
, and their checked versions, were deprecated. - The new method
from_num
was added to theWrapping
wrapper. - Bug fix: parsing of decimal fractions was fixed to give correctly rounded results for long decimal fraction strings, for example with four fractional bits, 0.96874999… (just below 31⁄32) and 0.96875 (31⁄32) are now parsed correctly as 0.9375 (15⁄16) and 1.0.
- All fixed-point types now implement
FromStr
. - The methods
from_str_binary
,from_str_octal
andfrom_str_hex
were added.
- The fixed crate now requires rustc version 1.31.0 or later.
- The
traits
module was added, with its traitsFixed
,FixedSigned
,FixedUnsigned
,FromFixed
,ToFixed
,LossyFrom
andLossyInto
. - The
saturating_neg
method was added to all fixed-point numbers, and thesaturating_abs
method was added to signed fixed-point numbers. - The
consts
module was added. - The
signum
method now wraps instead of panics in release mode.
- The sealed traits
Int
andFloat
now have no provided methods; the methods in the old implementation are now provided byFromFixed
andToFixed
. - Deprecated methods were removed.
- @jean-airoldie
- @tspiteri
- Conversions to/from
isize
andusize
were added.
- The
Wrapping
wrapper was added.
- Reimplement
From<bool>
for all fixed-point types which can represent the integer 1. This was inadvertently removed in 0.3.0.
- Incompatible change: the return type of
to_int
is now generic. - Incompatible change: the
Int
trait implementation forbool
was removed. - The new method
to_fixed
was added. - The new methods
checked_to_fixed
,checked_to_int
,saturating_to_fixed
,saturating_to_int
,wrapping_to_fixed
,wrapping_to_int
,overflowing_to_fixed
andoverflowing_to_int
were added. - The methods
from_fixed
,to_fixed
,checked_from_fixed
,checked_to_fixed
,saturating_from_fixed
,saturating_to_fixed
,wrapping_from_fixed
,wrapping_to_fixed
,overflowing_from_fixed
andoverflowing_to_fixed
were added to theInt
trait. - The methods
from_fixed
,to_fixed
,checked_to_fixed
,saturating_to_fixed
,wrapping_to_fixed
andoverflowing_to_fixed
were added to theFloat
trait. PartialEq
andPartialCmp
are now implemented for all combinations of fixed-point numbers and primitive integers.- The methods
int_bits
andfrac_bits
were deprecated and replaced by the methodsint_nbits
andfrac_nbits
.
- Bug fix: the
from_fixed
andfrom_int
methods (and their checked counterparts) could return wrong values for negative values. - Bug fix: display was using one fractional digit less than required, thus yielding the same output for diffent fixed-point numbers.
- Incompatible change: The method
from_int
was change to accept a generic parameter. - The new methods
from_fixed
,checked_from_fixed
,saturating_from_fixed
,wrapping_from_fixed
andoverflowing_from_fixed
were added. - The new methods
checked_from_int
,saturating_from_int
,wrapping_from_int
andoverflowing_from_int
were added. - The new methods
from_float
,checked_from_float
,saturating_from_float
,wrapping_from_float
andoverflowing_from_float
were added. - The new method
to_float
was added. - The methods
from_f16
,from_f32
,from_f64
,to_f16
,to_f32
andto_f64
were deprecated. - The
to_int
method was fixed to truncate fractional bits as documented for negative values. - The new methods
ceil
,floor
,round
,checked_ceil
,checked_floor
,checked_round
,saturating_ceil
,saturating_floor
,saturating_round
,wrapping_ceil
,wrapping_floor
,wrapping_round
,overflowing_ceil
,overflowing_floor
andoverflowing_round
were added. - The methods
to_int_ceil
,to_int_floor
andto_int_round
were deprecated.
- Optional serde support was added.
- Lossless infallible conversions between fixed-point numbers and
numeric primitives are now supported using
From
andInto
. - A new module
types
is available with aliases for all supported fixed-point numbers.
- Division is now implemented for
FixedI128
andFixedU128
.
- The
f16
feature was added, and new methodsfrom_f16
andto_f16
were added.
- The crate can now be used without the standard library
std
. - New methods
from_f32
andfrom_f64
were added. - New methods
is_positive
andis_negative
were added to signed fixed-point numbers.
- Comparisons are now supported between all fixed-point numbers with the same underlying integer type.
- New static methods
int_bits
andfrac_bits
were added. - New methods
from_int
,to_int
,to_int_ceil
,to_int_floor
andto_int_round
were added. - New methods
int
andfrac
were added. - Support for multiplication and division by integers was added.
Unsigned
constants provided by the typenum crate are now used for the number of fractional bits.- Many methods and trait implementations available for primitive integers are now also supported by the fixed-point numbers.