21 KiB
21 KiB
Version 1.6.0 (unreleased)
- The crate now requires rustc version 1.47.0 or later.
- The following methods are now
const
functions:
Version 1.5.0 (2020-11-05)
- The
wide_mul
method was added to all fixed-point numbers up to 64 bits wide (issue 25). - Unwrapped methods for arithmetic together with the
Unwrapped
wrapper were added. Unwrapped methods panic on overflow, even when debug assertions are disabled, similar to how wrapping methods will wrap around even when debug assertions are enabled. (This was previously an experimental featureunwrapped
.) - The
serde-str
feature was added. (This was previously an experimental feature.) - For the experimental feature
num-traits
, some missing supertraits were added toFixedOptionalFeatures
. - Bug fix: multiplication of [
FixedI128
] was panicking when multiplying some large negative numbers (issue 26).
Version 1.4.0 (2020-10-22)
- The following methods were added to all fixed-point types, to the
Fixed
trait, and to theWrapping
wrapper: - For the experimental feature
num-traits
, the following traits were implemented where applicable (issue 23): - For the experimental feature
serde-str
, serialization in human-readable formats was made more convenient to write manually (issue 24). This makes it incompatible with the version in 1.3.0.
Version 1.3.0 (2020-10-15)
- The
MulAssign
implementation on fixed-point numbers now accepts an rhs fixed-point number with a different number of fractional bits fromself
. - The following methods were added to all fixed-point types, to the
Fixed
trait, and to theWrapping
wrapper: - The new experimental feature
unwrapped
was added, providing arithmetic methods that panic on overflow even when debug assertions are disabled. - The new experimental feature
serde-str
was added, which makes serialization use the number’s value in human-readable formats.
Version 1.2.0 (2020-09-02)
- The
const_fixed_from_int!
macro was added to make it easy to define constant fixed-point numbers using integer expressions (issue 20).
Version 1.1.0 (2020-07-21)
- The new experimental feature
num-traits
was added to implement some traits, and to also add the relevant traits as supertraits to theFixedOptionalFeatures
trait (issue 18).
Version 1.0.0 (2020-06-04)
- The crate now requires rustc version 1.44.0 or later.
- The following methods are now
const
functions: - All deprecated items were removed.
Version 0.5.7 (2020-05-11)
- The
LosslessTryFrom
andLosslessTryInto
traits were added. - The following methods were added to all fixed-point types, to the
Fixed
trait, and to theWrapping
wrapper:leading_ones
,trailing_ones
- The following method was added to unsigned fixed-point types and
to the
FixedUnsigned
trait:wrapping_next_power_of_two
- The
PHI
andFRAC_1_PHI
constants were added to theconsts
module and as associated constants for fixed-point types.
Version 0.5.6 (2020-05-01)
- The following methods were added to signed fixed-point types and to
the
FixedSigned
trait:checked_signum
,saturating_signum
,wrapping_signum
,overflowing_signum
- The
LossyFrom
andLossyInto
traits were added to the prelude. - Casts deprecated in version 0.3.1 of the az crate were marked as deprecated.
Version 0.5.5 (2020-04-16)
- Bug fix: an incorrect result could be given when comparing a
signed fixed-point number of type
FixedI
to a number that would overflow by exactly one bit when converting toFixedI
. - The following associated constants were added to all fixed-point
types, to the
Fixed
trait, and to theWrapping
wrapper:MIN
,MAX
- The following associated constants were added to the
Fixed
trait and to theWrapping
wrapper:INT_NBITS
,FRAC_NBITS
- The following methods were added to all fixed-point types and to
the
Fixed
trait:int_log2
,int_log10
checked_int_log2
,checked_int_log10
- The following methods were added to the
Wrapping
wrapper:int_log2
,int_log10
- The constants in the
consts
module were also added as associated constants to fixed-point types that can represent them. - The following methods were deprecated:
min_value
,max_value
int_nbits
,frac_nbits
Version 0.5.4 (2020-02-21)
- Bug fix:
rem_euclid_int
and its checked versions were handling overflow incorrectly.
Version 0.5.3 (2020-02-13)
- 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
Version 0.5.2 (2020-02-02)
Wrapping
now supports serialization. (Thanks: Shane Pearman)
Version 0.5.1 (2019-12-22)
ParseFixedError
implementsError
when the newstd
feature is enabled.
Version 0.5.0 (2019-12-06)
- The 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
- Casts deprecated in version 0.3.1 of the az crate were marked as deprecated.
Incompatible changes
- Deprecated methods and modules were removed.
Version 0.4.6 (2019-10-16)
- 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.
Version 0.4.5 (2019-08-30)
- 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.
Version 0.4.4 (2019-08-24)
- 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.
Version 0.4.3 (2019-08-20)
- The 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.
Version 0.4.2 (2019-08-16)
- 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.
Version 0.4.1 (2019-08-12)
- All fixed-point types now implement
FromStr
. - The methods
from_str_binary
,from_str_octal
andfrom_str_hex
were added.
Version 0.4.0 (2019-08-08)
- The 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.
Incompatible changes
- 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.
Contributors
- @jean-airoldie
- @tspiteri
Version 0.3.3 (2019-06-27)
- Conversions to/from
isize
andusize
were added.
Version 0.3.2 (2019-02-27)
- The
Wrapping
wrapper was added.
Version 0.3.1 (2019-02-07)
- Reimplement
From<bool>
for all fixed-point types which can represent the integer 1. This was inadvertently removed in 0.3.0.
Version 0.3.0 (2019-02-03)
- 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
.
Version 0.2.1 (2019-01-29)
- 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.
Version 0.2.0 (2019-01-29)
- 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.
Version 0.1.6 (2019-01-27)
- Optional serde support was added.
Version 0.1.5 (2019-01-26)
- 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.
Version 0.1.4 (2018-11-29)
- Division is now implemented for
FixedI128
andFixedU128
.
Version 0.1.3 (2018-08-23)
- The
f16
feature was added, and new methodsfrom_f16
andto_f16
were added.
Version 0.1.2 (2018-08-15)
- 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.
Version 0.1.1 (2018-08-11)
- 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.
Version 0.1.0 (2018-08-10)
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.