Version 1.20.0 (2023-07-31)
===========================
* The [gmp-mpfr-sys] dependency was updated to [version 1.6][sys-1-6].
* The following methods were added to [`Integer`][int-1-20]:
* [`prev_prime`][int-pp-1-20], [`prev_prime_mut`][int-ppm-1-20],
[`prev_prime_ref`][int-ppr-1-20]
* The following associated constants were added to [`Integer`][int-1-20]:
* [`ONE`][int-o-1-20], [`NEG_ONE`][int-no-1-20]
* The following associated constants were added to [`Rational`][rat-1-20]:
* [`ZERO`][rat-z-1-20], [`ONE`][rat-o-1-20], [`NEG_ONE`][rat-no-1-20]
[int-1-20]: https://docs.rs/rug/~1.20/rug/struct.Integer.html
[int-no-1-20]: https://docs.rs/rug/~1.20/rug/struct.Integer.html#associatedconstant.NEG_ONE
[int-o-1-20]: https://docs.rs/rug/~1.20/rug/struct.Integer.html#associatedconstant.ONE
[int-pp-1-20]: https://docs.rs/rug/~1.20/rug/struct.Integer.html#method.prev_prime
[int-ppm-1-20]: https://docs.rs/rug/~1.20/rug/struct.Integer.html#method.prev_prime_mut
[int-ppr-1-20]: https://docs.rs/rug/~1.20/rug/struct.Integer.html#method.prev_prime_ref
[rat-1-20]: https://docs.rs/rug/~1.20/rug/struct.Rational.html
[rat-no-1-20]: https://docs.rs/rug/~1.20/rug/struct.Rational.html#associatedconstant.NEG_ONE
[rat-o-1-20]: https://docs.rs/rug/~1.20/rug/struct.Rational.html#associatedconstant.ONE
[rat-z-1-20]: https://docs.rs/rug/~1.20/rug/struct.Rational.html#associatedconstant.ZERO
[sys-1-6]: https://docs.rs/gmp-mpfr-sys/~1.6/gmp_mpfr_sys/index.html
Version 1.19.2 (2023-03-23)
===========================
* Bug fix: a zero denominator could be left after catching a panic from
<code>[Rational][rat-1-19]::[mutate\_numer\_denom][rat-mnd-1-19]</code>
([issue 49]).
Version 1.19.1 (2023-02-14)
===========================
* Bug fix:
<code>[Rational][rat-1-19]::[mutate\_numer\_denom][rat-mnd-1-19]</code> and
<code>[Complex][com-1-19]::[mutate\_real\_imag][com-mri-1-19]</code> were
not unwind-safe ([issue 47]).
Version 1.19.0 (2023-01-06)
===========================
* The crate now requires rustc version 1.65.0 or later.
* The [gmp-mpfr-sys] dependency was updated to [version 1.5][sys-1-5].
* The <code>[Round][r-1-19]::[AwayZero][r-az-1-19]</code> rounding mode was
added.
* The following methods were added to [`Float`][flo-1-19]:
* [`sin_u`][flo-su-1-19], [`sin_u_mut`][flo-sum-1-19],
[`sin_u_round`][flo-suro-1-19], [`sin_u_ref`][flo-sure-1-19]
* [`cos_u`][flo-cu-1-19], [`cos_u_mut`][flo-cum-1-19],
[`cos_u_round`][flo-curo-1-19], [`cos_u_ref`][flo-cure-1-19]
* [`tan_u`][flo-tu-1-19], [`tan_u_mut`][flo-tum-1-19],
[`tan_u_round`][flo-turo-1-19], [`tan_u_ref`][flo-ture-1-19]
* [`sin_pi`][flo-sp-1-19], [`sin_pi_mut`][flo-spm-1-19],
[`sin_pi_round`][flo-spro-1-19], [`sin_pi_ref`][flo-spre-1-19]
* [`cos_pi`][flo-cp-1-19], [`cos_pi_mut`][flo-cpm-1-19],
[`cos_pi_round`][flo-cpro-1-19], [`cos_pi_ref`][flo-cpre-1-19]
* [`tan_pi`][flo-tp-1-19], [`tan_pi_mut`][flo-tpm-1-19],
[`tan_pi_round`][flo-tpro-1-19], [`tan_pi_ref`][flo-tpre-1-19]
* [`asin_u`][flo-asu-1-19], [`asin_u_mut`][flo-asum-1-19],
[`asin_u_round`][flo-asuro-1-19], [`asin_u_ref`][flo-asure-1-19]
* [`acos_u`][flo-acu-1-19], [`acos_u_mut`][flo-acum-1-19],
[`acos_u_round`][flo-acuro-1-19], [`acos_u_ref`][flo-acure-1-19]
* [`atan_u`][flo-atu-1-19], [`atan_u_mut`][flo-atum-1-19],
[`atan_u_round`][flo-aturo-1-19], [`atan_u_ref`][flo-ature-1-19]
* [`atan2_u`][flo-at2u-1-19], [`atan2_u_mut`][flo-at2um-1-19],
[`atan2_u_round`][flo-at2uro-1-19], [`atan2_u_ref`][flo-at2ure-1-19]
* [`asin_pi`][flo-asp-1-19], [`asin_pi_mut`][flo-aspm-1-19],
[`asin_pi_round`][flo-aspro-1-19], [`asin_pi_ref`][flo-aspre-1-19]
* [`acos_pi`][flo-acp-1-19], [`acos_pi_mut`][flo-acpm-1-19],
[`acos_pi_round`][flo-acpro-1-19], [`acos_pi_ref`][flo-acpre-1-19]
* [`atan_pi`][flo-atp-1-19], [`atan_pi_mut`][flo-atpm-1-19],
[`atan_pi_round`][flo-atpro-1-19], [`atan_pi_ref`][flo-atpre-1-19]
* [`atan2_pi`][flo-at2p-1-19], [`atan2_pi_mut`][flo-at2pm-1-19],
[`atan2_pi_round`][flo-at2pro-1-19], [`atan2_pi_ref`][flo-at2pre-1-19]
* [`log2_1p`][flo-l2-1-19], [`log2_1p_mut`][flo-l2m-1-19],
[`log2_1p_round`][flo-l2ro-1-19], [`log2_1p_ref`][flo-l2re-1-19]
* [`log10_1p`][flo-l10-1-19], [`log10_1p_mut`][flo-l10m-1-19],
[`log10_1p_round`][flo-l10ro-1-19], [`log10_1p_ref`][flo-l10re-1-19]
* [`exp2_m1`][flo-e2-1-19], [`exp2_m1_mut`][flo-e2m-1-19],
[`exp2_m1_round`][flo-e2ro-1-19], [`exp2_m1_ref`][flo-e2re-1-19]
* [`exp10_m1`][flo-e10-1-19], [`exp10_m1_mut`][flo-e10m-1-19],
[`exp10_m1_round`][flo-e10ro-1-19], [`exp10_m1_ref`][flo-e10re-1-19]
* [`compound_i`][flo-ci-1-19], [`compound_i_mut`][flo-cim-1-19],
[`compound_i_round`][flo-ciro-1-19], [`compound_i_ref`][flo-cire-1-19]
* [`root_i`][flo-ri-1-19], [`root_i_mut`][flo-rim-1-19],
[`root_i_round`][flo-riro-1-19], [`root_i_ref`][flo-rire-1-19]
* The following methods were added to [`Complex`][com-1-19]:
* [`agm`][com-a-1-19], [`agm_mut`][com-am-1-19],
[`agm_round`][com-aro-1-19], [`agm_ref`][com-are-1-19]
* The following methods are now const functions:
* <code>[Integer][int-1-19]::[as\_limbs][int-al-1-19]</code>
* <code>[Integer][int-1-19]::[as\_neg][int-an-1-19]</code>,
<code>[Integer][int-1-19]::[as\_abs][int-aa-1-19]</code>
* <code>[Integer][int-1-19]::[is\_even][int-ie-1-19]</code>,
<code>[Integer][int-1-19]::[is\_odd][int-io-1-19]</code>
* <code>[Integer][int-1-19]::[cmp0][int-c-1-19]</code>
* <code>[Rational][rat-1-19]::[into\_raw][rat-ir-1-19]</code>,
<code>[Rational][rat-1-19]::[as\_raw][rat-ara-1-19]</code>
* <code>[Rational][rat-1-19]::[numer][rat-n-1-19]</code>,
<code>[Rational][rat-1-19]::[denom][rat-d-1-19]</code>
* <code>[Rational][rat-1-19]::[into\_numer\_denom][rat-ind-1-19]</code>
* <code>[Rational][rat-1-19]::[as\_neg][rat-an-1-19]</code>,
<code>[Rational][rat-1-19]::[as\_abs][rat-aa-1-19]</code>,
<code>[Rational][rat-1-19]::[as\_recip][rat-are-1-19]</code>
* <code>[Rational][rat-1-19]::[cmp0][rat-c-1-19]</code>
* <code>[Rational][rat-1-19]::[is\_integer][rat-ii-1-19]</code>
* <code>[Float][flo-1-19]::[prec][flo-p-1-19]</code>
* <code>[Float][flo-1-19]::[from\_raw][flo-fr-1-19]</code>,
<code>[Float][flo-1-19]::[into\_raw][flo-ir-1-19]</code>,
<code>[Float][flo-1-19]::[as\_raw][flo-ar-1-19]</code>
* <code>[Float][flo-1-19]::[as\_ord][flo-ao-1-19]</code>,
<code>[Float][flo-1-19]::[as\_complex][flo-ac-1-19]</code>
* <code>[Float][flo-1-19]::[is\_nan][flo-ina-1-19]</code>,
<code>[Float][flo-1-19]::[is\_infinite][flo-ii-1-19]</code>,
<code>[Float][flo-1-19]::[is\_finite][flo-if-1-19]</code>,
<code>[Float][flo-1-19]::[is\_zero][flo-iz-1-19]</code>,
<code>[Float][flo-1-19]::[is\_normal][flo-ino-1-19]</code>,
<code>[Float][flo-1-19]::[classify][flo-cl-1-19]</code>
* <code>[Float][flo-1-19]::[cmp0][flo-cm-1-19]</code>
* <code>[Float][flo-1-19]::[get\_exp][flo-ge-1-19]</code>
* <code>[Float][flo-1-19]::[is\_sign\_positive][flo-isp-1-19]</code>,
<code>[Float][flo-1-19]::[is\_sign\_negative][flo-isn-1-19]</code>
* <code>[Complex][com-1-19]::[prec][com-p-1-19]</code>
* <code>[Complex][com-1-19]::[from\_raw][com-fr-1-19]</code>,
<code>[Complex][com-1-19]::[into\_raw][com-ir-1-19]</code>,
<code>[Complex][com-1-19]::[as\_raw][com-ara-1-19]</code>
* <code>[Complex][com-1-19]::[real][com-r-1-19]</code>,
<code>[Complex][com-1-19]::[imag][com-i-1-19]</code>
* <code>[Complex][com-1-19]::[into\_real\_imag][com-iri-1-19]</code>,
<code>[Complex][com-1-19]::[borrow\_real\_imag][com-bri-1-19]</code>
* <code>[Complex][com-1-19]::[as\_ord][com-ao-1-19]</code>
* <code>[Complex][com-1-19]::[eq0][com-e-1-19]</code>
* [`BorrowInteger`][bi-1-19], [`BorrowRational`][br-1-19],
[`BorrowFloat`][bf-1-19] and [`BorrowComplex`][bc-1-19] now implement
[`Clone`], [`Copy`] and formatting traits; and each have a static method
`const_deref`.
[bc-1-19]: https://docs.rs/rug/~1.19/rug/complex/struct.BorrowComplex.html
[bf-1-19]: https://docs.rs/rug/~1.19/rug/float/struct.BorrowFloat.html
[bi-1-19]: https://docs.rs/rug/~1.19/rug/integer/struct.BorrowInteger.html
[br-1-19]: https://docs.rs/rug/~1.19/rug/rational/struct.BorrowRational.html
[com-1-19]: https://docs.rs/rug/~1.19/rug/struct.Complex.html
[com-a-1-19]: https://docs.rs/rug/~1.19/rug/struct.Complex.html#method.agm
[com-am-1-19]: https://docs.rs/rug/~1.19/rug/struct.Complex.html#method.agm_mut
[com-ao-1-19]: https://docs.rs/rug/~1.19/rug/struct.Complex.html#method.as_ord
[com-ara-1-19]: https://docs.rs/rug/~1.19/rug/struct.Complex.html#method.as_raw
[com-are-1-19]: https://docs.rs/rug/~1.19/rug/struct.Complex.html#method.agm_ref
[com-aro-1-19]: https://docs.rs/rug/~1.19/rug/struct.Complex.html#method.agm_round
[com-bri-1-19]: https://docs.rs/rug/~1.19/rug/struct.Complex.html#method.borrow_real_imag
[com-e-1-19]: https://docs.rs/rug/~1.19/rug/struct.Complex.html#method.eq0
[com-fr-1-19]: https://docs.rs/rug/~1.19/rug/struct.Complex.html#method.from_raw
[com-i-1-19]: https://docs.rs/rug/~1.19/rug/struct.Complex.html#method.imag
[com-ir-1-19]: https://docs.rs/rug/~1.19/rug/struct.Complex.html#method.into_raw
[com-iri-1-19]: https://docs.rs/rug/~1.19/rug/struct.Complex.html#method.into_real_imag
[com-mri-1-19]: https://docs.rs/rug/~1.19/rug/struct.Complex.html#method.mutate_real_imag
[com-p-1-19]: https://docs.rs/rug/~1.19/rug/struct.Complex.html#method.prec
[com-r-1-19]: https://docs.rs/rug/~1.19/rug/struct.Complex.html#method.real
[flo-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html
[flo-ac-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.as_complex
[flo-acp-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.acos_pi
[flo-acpm-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.acos_pi_mut
[flo-acpre-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.acos_pi_ref
[flo-acpro-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.acos_pi_round
[flo-acu-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.acos_u
[flo-acum-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.acos_u_mut
[flo-acure-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.acos_u_ref
[flo-acuro-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.acos_u_round
[flo-ao-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.as_ord
[flo-ar-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.as_raw
[flo-asp-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.asin_pi
[flo-aspm-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.asin_pi_mut
[flo-aspre-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.asin_pi_ref
[flo-aspro-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.asin_pi_round
[flo-asu-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.asin_u
[flo-asum-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.asin_u_mut
[flo-asure-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.asin_u_ref
[flo-asuro-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.asin_u_round
[flo-at2p-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.atan2_pi
[flo-at2pm-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.atan2_pi_mut
[flo-at2pre-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.atan2_pi_ref
[flo-at2pro-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.atan2_pi_round
[flo-at2u-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.atan2_u
[flo-at2um-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.atan2_u_mut
[flo-at2ure-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.atan2_u_ref
[flo-at2uro-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.atan2_u_round
[flo-atp-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.atan_pi
[flo-atpm-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.atan_pi_mut
[flo-atpre-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.atan_pi_ref
[flo-atpro-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.atan_pi_round
[flo-atu-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.atan_u
[flo-atum-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.atan_u_mut
[flo-ature-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.atan_u_ref
[flo-aturo-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.atan_u_round
[flo-ci-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.compound_i
[flo-cim-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.compound_i_mut
[flo-cire-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.compound_i_ref
[flo-ciro-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.compound_i_round
[flo-cl-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.classify
[flo-cm-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.cmp0
[flo-cp-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.cos_pi
[flo-cpm-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.cos_pi_mut
[flo-cpre-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.cos_pi_ref
[flo-cpro-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.cos_pi_round
[flo-cu-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.cos_u
[flo-cum-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.cos_u_mut
[flo-cure-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.cos_u_ref
[flo-curo-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.cos_u_round
[flo-e10-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.exp10_m1
[flo-e10m-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.exp10_m1_mut
[flo-e10re-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.exp10_m1_ref
[flo-e10ro-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.exp10_m1_round
[flo-e2-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.exp2_m1
[flo-e2m-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.exp2_m1_mut
[flo-e2re-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.exp2_m1_ref
[flo-e2ro-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.exp2_m1_round
[flo-fr-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.from_raw
[flo-ge-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.get_exp
[flo-if-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.is_finite
[flo-ii-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.is_infinite
[flo-ina-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.is_nan
[flo-ino-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.is_normal
[flo-ir-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.into_raw
[flo-isn-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.is_sign_negative
[flo-isp-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.is_sign_positive
[flo-iz-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.is_zero
[flo-l10-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.log10_1p
[flo-l10m-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.log10_1p_mut
[flo-l10re-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.log10_1p_ref
[flo-l10ro-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.log10_1p_round
[flo-l2-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.log2_1p
[flo-l2m-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.log2_1p_mut
[flo-l2re-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.log2_1p_ref
[flo-l2ro-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.log2_1p_round
[flo-p-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.prec
[flo-ri-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.root_i
[flo-rim-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.root_i_mut
[flo-rire-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.root_i_ref
[flo-riro-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.root_i_round
[flo-sp-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.sin_pi
[flo-spm-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.sin_pi_mut
[flo-spre-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.sin_pi_ref
[flo-spro-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.sin_pi_round
[flo-su-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.sin_u
[flo-sum-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.sin_u_mut
[flo-sure-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.sin_u_ref
[flo-suro-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.sin_u_round
[flo-tp-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.tan_pi
[flo-tpm-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.tan_pi_mut
[flo-tpre-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.tan_pi_ref
[flo-tpro-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.tan_pi_round
[flo-tu-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.tan_u
[flo-tum-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.tan_u_mut
[flo-ture-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.tan_u_ref
[flo-turo-1-19]: https://docs.rs/rug/~1.19/rug/struct.Float.html#method.tan_u_round
[int-1-19]: https://docs.rs/rug/~1.19/rug/struct.Integer.html
[int-aa-1-19]: https://docs.rs/rug/~1.19/rug/struct.Integer.html#method.as_abs
[int-al-1-19]: https://docs.rs/rug/~1.19/rug/struct.Integer.html#method.as_limbs
[int-an-1-19]: https://docs.rs/rug/~1.19/rug/struct.Integer.html#method.as_neg
[int-c-1-19]: https://docs.rs/rug/~1.19/rug/struct.Integer.html#method.cmp0
[int-ie-1-19]: https://docs.rs/rug/~1.19/rug/struct.Integer.html#method.is_even
[int-io-1-19]: https://docs.rs/rug/~1.19/rug/struct.Integer.html#method.is_odd
[issue 47]: https://gitlab.com/tspiteri/rug/-/issues/47
[issue 49]: https://gitlab.com/tspiteri/rug/-/issues/49
[r-1-19]: https://docs.rs/rug/~1.19/rug/float/enum.Round.html
[r-az-1-19]: https://docs.rs/rug/~1.19/rug/float/enum.Round.html#variant.AwayZero
[rat-1-19]: https://docs.rs/rug/~1.19/rug/struct.Rational.html
[rat-aa-1-19]: https://docs.rs/rug/~1.19/rug/struct.Rational.html#method.as_abs
[rat-an-1-19]: https://docs.rs/rug/~1.19/rug/struct.Rational.html#method.as_neg
[rat-ara-1-19]: https://docs.rs/rug/~1.19/rug/struct.Rational.html#method.as_raw
[rat-are-1-19]: https://docs.rs/rug/~1.19/rug/struct.Rational.html#method.as_recip
[rat-c-1-19]: https://docs.rs/rug/~1.19/rug/struct.Rational.html#method.cmp0
[rat-d-1-19]: https://docs.rs/rug/~1.19/rug/struct.Rational.html#method.denom
[rat-ii-1-19]: https://docs.rs/rug/~1.19/rug/struct.Rational.html#method.is_integer
[rat-ind-1-19]: https://docs.rs/rug/~1.19/rug/struct.Rational.html#method.into_numer_denom
[rat-ir-1-19]: https://docs.rs/rug/~1.19/rug/struct.Rational.html#method.into_raw
[rat-mnd-1-19]: https://docs.rs/rug/~1.19/rug/struct.Rational.html#method.mutate_numer_denom
[rat-n-1-19]: https://docs.rs/rug/~1.19/rug/struct.Rational.html#method.numer
[sys-1-5]: https://docs.rs/gmp-mpfr-sys/~1.5/gmp_mpfr_sys/index.html
Version 1.18.0 (2022-11-17)
===========================
* For the [`Integer`][int-1-18] struct, the methods
[`gcd_cofactors`][int-gc-1-18], [`gcd_cofactors_mut`][int-gcm-1-18] and
[`gcd_cofactors_ref`][int-gcr-1-18] were renamed to
[`extended_gcd`][int-eg-1-18], [`extended_gcd_mut`][int-egm-1-18] and
[`extended_gcd_ref`][int-egr-1-18]. The old method names are deprecated.
* All error types now implement [`Clone`], [`Copy`], [`PartialEq`] and [`Eq`].
* The [`IntegerExt64`][ie64-1-18] extension trait was added to support very
large integers better on some 64-bit platforms.
[ie64-1-18]: https://docs.rs/rug/~1.18/rug/integer/trait.IntegerExt64.html
[int-1-18]: https://docs.rs/rug/~1.18/rug/struct.Integer.html
[int-eg-1-18]: https://docs.rs/rug/~1.18/rug/struct.Integer.html#method.extended_gcd
[int-egm-1-18]: https://docs.rs/rug/~1.18/rug/struct.Integer.html#method.extended_gcd_mut
[int-egr-1-18]: https://docs.rs/rug/~1.18/rug/struct.Integer.html#method.extended_gcd_ref
[int-gc-1-18]: https://docs.rs/rug/~1.18/rug/struct.Integer.html#method.gcd_cofactors
[int-gcm-1-18]: https://docs.rs/rug/~1.18/rug/struct.Integer.html#method.gcd_cofactors_mut
[int-gcr-1-18]: https://docs.rs/rug/~1.18/rug/struct.Integer.html#method.gcd_cofactors_ref
Version 1.17.0 (2022-08-06)
===========================
* The new method
<code>[Integer][int-1-17]::[assign\_bytes\_radix\_unchecked][int-abru-1-17]</code>
was added ([issue 41]).
* [`Integer`][int-1-17] now implements [`LowerExp`] and [`UpperExp`] for
convenience by transparently converting the [`Integer`][int-1-17] to a
[`Float`][flo-1-17] ([issue 42]).
* Bug fix: the [`CompleteRound`][cr-1-17] trait is now implemented for
* the value returned from
<code>[Float][flo-1-17]::[mul\_add\_mul\_ref][flo-mamr-1-17]</code>
* the value returned from
<code>[Float][flo-1-17]::[mul\_sub\_mul\_ref][flo-msmr-1-17]</code>
* The [`CompleteRound`][cr-1-17] trait is now also implemented for
* the value returned from negating a reference to [`Float`][flo-1-17],
that is
<code><&[Float][flo-1-17] as [Neg][`Neg`]>::[Output][NegOutput]</code>
* the value returned from negating a reference to [`Complex`][com-1-17],
that is
<code><&[Complex][com-1-17] as [Neg][`Neg`]>::[Output][NegOutput]</code>
[com-1-17]: https://docs.rs/rug/~1.17/rug/struct.Complex.html
[cr-1-17]: https://docs.rs/rug/~1.17/rug/ops/trait.CompleteRound.html
[flo-1-17]: https://docs.rs/rug/~1.17/rug/struct.Float.html
[flo-mamr-1-17]: https://docs.rs/rug/~1.17/rug/struct.Float.html#method.mul_add_mul_ref
[flo-msmr-1-17]: https://docs.rs/rug/~1.17/rug/struct.Float.html#method.mul_sub_mul_ref
[int-1-17]: https://docs.rs/rug/~1.17/rug/struct.Integer.html
[int-abru-1-17]: https://docs.rs/rug/~1.17/rug/struct.Integer.html#method.assign_bytes_radix_unchecked
[issue 41]: https://gitlab.com/tspiteri/rug/-/issues/41
[issue 42]: https://gitlab.com/tspiteri/rug/-/issues/42
Version 1.16.0 (2022-04-28)
===========================
* Now [`Float`][flo-1-16] implements [`Cast`][az-c-1-1],
[`CheckedCast`][az-cc-1-1] and [`UnwrappedCast`][az-uc-1-1] with primitive
integers as the destination types, in addition to the previously supported
[`SaturatingCast`][az-sc-1-1].
* The new methods <code>[Float][flo-1-16]::[total\_cmp][flo-tc-1-16]</code>
and <code>[Complex][com-1-16]::[total\_cmp][com-tc-1-16]</code> were added.
* The new methods
<code>[Complex][com-1-16]::[borrow\_real\_imag][com-bri-1-16]</code> and
<code>[Complex][com-1-16]::[mutate\_real\_imag][com-mri-1-16]</code> were
added.
* Arithmetic operators are overloaded to work on combinations of Rug types and
[`isize`] and [`usize`].
* The [`BorrowInteger`][bi-1-16], [`BorrowRational`][br-1-16],
[`BorrowFloat`][bf-1-16] and [`BorrowComplex`][bc-1-16] structs were added.
[az-c-1-1]: https://docs.rs/az/1.1/az/trait.Cast.html
[az-cc-1-1]: https://docs.rs/az/1.1/az/trait.CheckedCast.html
[az-sc-1-1]: https://docs.rs/az/1.1/az/trait.SaturatingCast.html
[az-uc-1-1]: https://docs.rs/az/1.1/az/trait.UnwrappedCast.html
[bc-1-16]: https://docs.rs/rug/~1.16/rug/complex/struct.BorrowComplex.html
[bf-1-16]: https://docs.rs/rug/~1.16/rug/float/struct.BorrowFloat.html
[bi-1-16]: https://docs.rs/rug/~1.16/rug/integer/struct.BorrowInteger.html
[br-1-16]: https://docs.rs/rug/~1.16/rug/rational/struct.BorrowRational.html
[com-1-16]: https://docs.rs/rug/~1.16/rug/struct.Complex.html
[com-bri-1-16]: https://docs.rs/rug/~1.16/rug/struct.Complex.html#method.borrow_real_imag
[com-mri-1-16]: https://docs.rs/rug/~1.16/rug/struct.Complex.html#method.mutate_real_imag
[com-tc-1-16]: https://docs.rs/rug/~1.16/rug/struct.Complex.html#method.total_cmp
[flo-1-16]: https://docs.rs/rug/~1.16/rug/struct.Float.html
[flo-tc-1-16]: https://docs.rs/rug/~1.16/rug/struct.Float.html#method.total_cmp
Version 1.15.0 (2022-02-03)
===========================
* Now [`Integer`][int-1-15], [`Rational`][rat-1-15], [`Float`][flo-1-15] and
[`Complex`][com-1-15] implement [`Shl`], [`Shr`], [`ShlAssign`] and
[`ShrAssign`] with [`isize`] and [`usize`] as the type of the right-hand
side, in addition to the previously supported [`i32`] and [`u32`].
* The new experimental feature [`num-traits`][feat-nt-1-15] was added to
implement some traits from the [*num-traits* crate] and the [*num-integer*
crate] ([issue 30]).
[com-1-15]: https://docs.rs/rug/~1.15/rug/struct.Complex.html
[feat-nt-1-15]: https://docs.rs/rug/~1.15/rug/index.html#experimental-optional-features
[flo-1-15]: https://docs.rs/rug/~1.15/rug/struct.Float.html
[int-1-15]: https://docs.rs/rug/~1.15/rug/struct.Integer.html
[issue 30]: https://gitlab.com/tspiteri/rug/-/issues/30
[rat-1-15]: https://docs.rs/rug/~1.15/rug/struct.Rational.html
Version 1.14.1 (2022-01-23)
===========================
* Bug fix: <code>[Rational][rat-1-14]::[to_f32][rat-tf-1-14]</code> was
rounding away from zero in some cases when the rational number should be
converted to a subnormal number ([issue 36]).
Version 1.14.0 (2021-11-24)
===========================
* Bug fix: [`OrdFloat`][ofl-1-14] was incorrectly ordering +NaN < −∞.
* The <code>[Integer][int-1-14]::[ZERO][int-z-1-14]</code> associated constant
was added.
* The <code>[Integer][int-1-14]::[shrink_to][int-st-1-14]</code> method was
added.
* The <code>[Rational][rat-1-14]::[is_integer][rat-ii-1-14]</code> method was
added.
* The <code>[Complete][comp-1-14]::[complete_into][comp-ci-1-14]</code>
provided method was added to the [`Complete`][comp-1-14] trait.
* The [`CompleteRound`][compr-1-14] trait was added to make it easier to
convert [`Float`][flo-1-14] and [`Complex`][com-1-14] numbers
[incomplete-computation values][icv-1-14] to their final value.
[com-1-14]: https://docs.rs/rug/~1.14/rug/struct.Complex.html
[comp-1-14]: https://docs.rs/rug/~1.14/rug/trait.Complete.html
[comp-ci-1-14]: https://docs.rs/rug/~1.14/rug/trait.Complete.html#method.complete_into
[compr-1-14]: https://docs.rs/rug/~1.14/rug/ops/trait.CompleteRound.html
[flo-1-14]: https://docs.rs/rug/~1.14/rug/struct.Float.html
[icv-1-14]: https://docs.rs/rug/~1.14/rug/index.html#incomplete-computation-values
[int-1-14]: https://docs.rs/rug/~1.14/rug/struct.Integer.html
[int-st-1-14]: https://docs.rs/rug/~1.14/rug/struct.Integer.html#method.shrink_to
[int-z-1-14]: https://docs.rs/rug/~1.14/rug/struct.Integer.html#associatedconstant.ZERO
[issue 36]: https://gitlab.com/tspiteri/rug/-/issues/36
[ofl-1-14]: https://docs.rs/rug/~1.14/rug/float/struct.OrdFloat.html
[rat-1-14]: https://docs.rs/rug/~1.14/rug/struct.Rational.html
[rat-ii-1-14]: https://docs.rs/rug/~1.14/rug/struct.Rational.html#method.is_integer
[rat-tf-1-14]: https://docs.rs/rug/~1.14/rug/struct.Rational.html#method.to_f32
Version 1.13.0 (2021-07-29)
===========================
* The [incomplete-computation value][icv-1-13] returned by
<code>[Integer][int-1-13]::{[sum][int-s-1-13],[dot][int-d-1-13]}</code> can
now be subtracted from an [`Integer`][int-1-13].
* The [incomplete-computation value][icv-1-13] returned by
<code>[Rational][rat-1-13]::{[sum][rat-s-1-13],[dot][rat-d-1-13]}</code> can
now be subtracted from a [`Rational`][rat-1-13] number.
* The [incomplete-computation value][icv-1-13] returned by
<code>[Float][flo-1-13]::{[sum][flo-s-1-13],[dot][flo-d-1-13]}</code> can
now be subtracted from a [`Float`][flo-1-13].
* The [incomplete-computation value][icv-1-13] returned by
<code>[Complex][com-1-13]::{[sum][com-s-1-13],[dot][com-d-1-13]}</code> can
now be subtracted from a [`Complex`][com-1-13] number.
* The [incomplete-computation value][icv-1-13] returned by
<code>[Integer][int-1-13]::[square\_ref][int-sr-1-13]</code> can now be
added to/subtracted from an [`Integer`][int-1-13].
* The [`Complete`][comp-1-13] trait was added to make it easier to convert
[incomplete-computation values][icv-1-13] to their final value.
* The <code>[Round][rnd-1-13]::[reverse][rnd-r-1-13]</code> method was added.
[com-1-13]: https://docs.rs/rug/~1.13/rug/struct.Complex.html
[com-d-1-13]: https://docs.rs/rug/~1.13/rug/struct.Complex.html#method.dot
[com-s-1-13]: https://docs.rs/rug/~1.13/rug/struct.Complex.html#method.sum
[comp-1-13]: https://docs.rs/rug/~1.13/rug/trait.Complete.html
[flo-1-13]: https://docs.rs/rug/~1.13/rug/struct.Float.html
[flo-d-1-13]: https://docs.rs/rug/~1.13/rug/struct.Float.html#method.dot
[flo-s-1-13]: https://docs.rs/rug/~1.13/rug/struct.Float.html#method.sum
[icv-1-13]: https://docs.rs/rug/~1.13/rug/index.html#incomplete-computation-values
[int-1-13]: https://docs.rs/rug/~1.13/rug/struct.Integer.html
[int-d-1-13]: https://docs.rs/rug/~1.13/rug/struct.Integer.html#method.dot
[int-s-1-13]: https://docs.rs/rug/~1.13/rug/struct.Integer.html#method.sum
[int-sr-1-13]: https://docs.rs/rug/~1.13/rug/struct.Integer.html#method.square_ref
[rat-1-13]: https://docs.rs/rug/~1.13/rug/struct.Rational.html
[rat-d-1-13]: https://docs.rs/rug/~1.13/rug/struct.Rational.html#method.dot
[rat-s-1-13]: https://docs.rs/rug/~1.13/rug/struct.Rational.html#method.sum
[rnd-1-13]: https://docs.rs/rug/~1.13/rug/float/enum.Round.html
[rnd-r-1-13]: https://docs.rs/rug/~1.13/rug/float/enum.Round.html#method.reverse
Version 1.12.0 (2021-03-25)
===========================
* A new method <code>[Integer][int-1-12]::[as\_limbs][int-al-1-12]</code> was
added.
* The [*az* crate] dependency was updated to [version 1.1][az-1-1].
[az-1-1]: https://docs.rs/az/~1.1/az/index.html
[int-1-12]: https://docs.rs/rug/~1.12/rug/struct.Integer.html
[int-al-1-12]: https://docs.rs/rug/~1.12/rug/struct.Integer.html#method.as_limbs
Version 1.11.0 (2020-09-03)
===========================
* The [gmp-mpfr-sys] dependency was updated to [version 1.4][sys-1-4].
* Now it is possible to display [`Float`][flo-1-11] numbers with only one
siginificant digit.
[flo-1-11]: https://docs.rs/rug/~1.11/rug/struct.Float.html
[sys-1-4]: https://docs.rs/gmp-mpfr-sys/~1.4/gmp_mpfr_sys/index.html
Version 1.10.0 (2020-07-23)
===========================
* The [gmp-mpfr-sys] dependency was updated to [version 1.3][sys-1-3].
* Now <code>[Option][`Option`]<[Integer][int-1-10]></code> has the same
size as [`Integer`][int-1-10]; and similar for [`Rational`][rat-1-10],
[`Float`][flo-1-10], [`Complex`][com-1-10], [`RandState`][ras-1-10] and
[`ThreadRandState`][trs-1-10].
[com-1-10]: https://docs.rs/rug/~1.10/rug/struct.Complex.html
[flo-1-10]: https://docs.rs/rug/~1.10/rug/struct.Float.html
[int-1-10]: https://docs.rs/rug/~1.10/rug/struct.Integer.html
[ras-1-10]: https://docs.rs/rug/~1.10/rug/rand/struct.RandState.html
[rat-1-10]: https://docs.rs/rug/~1.10/rug/struct.Rational.html
[sys-1-3]: https://docs.rs/gmp-mpfr-sys/~1.3/gmp_mpfr_sys/index.html
[trs-1-10]: https://docs.rs/rug/~1.10/rug/rand/struct.ThreadRandState.html
Version 1.9.0 (2020-06-01)
==========================
* Displaying [`Float`][flo-1-9] and [`Complex`][com-1-9] numbers, and
converting them to strings, now avoids outputting an exponent term if the
radix point can be moved to the correct place without inserting any extra
digits. For example `"42.0"` will be produced rather than `"4.20e1"` ([issue
18]). This change does not affect output when [`LowerExp`] (`"{:e}"` format)
or [`UpperExp`] (`"{:E}"` format) is used.
* New methods
<code>[Float][flo-1-9]::[to\_sign\_string\_exp][flo-tsse-1-9]</code> and
<code>[Float][flo-1-9]::[to\_sign\_string\_exp\_round][flo-tsser-1-9]</code>
were added.
* A new function
<code>[float][flom-1-9]::[allowed\_exp\_range][flom-aer-1-9]</code> was
added.
* A new method <code>[Float][flo-1-9]::[clamp\_exp][flo-ce-1-9]</code> was
added.
* The following methods are now const functions:
* <code>[Integer][int-1-9]::[from\_raw][int-fr-1-9]</code>,
<code>[Rational][rat-1-9]::[from\_raw][rat-fr-1-9]</code>
* The [*az* crate] is now a public dependency, and wrapping and checked casts
to/from primitives and big numbers are provided through the traits of the
crate.
Compatibility note
------------------
The output of [`Float`][flo-1-9] and [`Complex`][com-1-9] numbers was changed as
specified above.
[com-1-9]: https://docs.rs/rug/~1.9/rug/struct.Complex.html
[flo-1-9]: https://docs.rs/rug/~1.9/rug/struct.Float.html
[flo-ce-1-9]: https://docs.rs/rug/~1.9/rug/struct.Float.html#method.clamp_exp
[flo-tsse-1-9]: https://docs.rs/rug/~1.9/rug/struct.Float.html#method.to_sign_string_exp
[flo-tsser-1-9]: https://docs.rs/rug/~1.9/rug/struct.Float.html#method.to_sign_string_exp_round
[flom-1-9]: https://docs.rs/rug/~1.9/rug/float/index.html
[flom-aer-1-9]: https://docs.rs/rug/~1.9/rug/float/fn.allowed_exp_range.html
[int-1-9]: https://docs.rs/rug/~1.9/rug/struct.Integer.html
[int-fr-1-9]: https://docs.rs/rug/~1.9/rug/struct.Integer.html#method.from_raw
[issue 18]: https://gitlab.com/tspiteri/rug/-/issues/18
[rat-1-9]: https://docs.rs/rug/~1.9/rug/struct.Rational.html
[rat-fr-1-9]: https://docs.rs/rug/~1.9/rug/struct.Rational.html#method.from_raw
Version 1.8.0 (2020-04-08)
==========================
* The following methods are now const functions:
* <code>[Integer][int-1-8]::[new][int-n-1-8]</code>,
<code>[Integer][int-1-8]::[into\_raw][int-ir-1-8]</code>,
<code>[Integer][int-1-8]::[as\_raw][int-araw-1-8]</code>
* <code>[SmallInteger][smi-1-8]::[new][smi-n-1-8]</code>,
<code>[SmallRational][smr-1-8]::[new][smr-n-1-8]</code>
* A new method <code>[Integer][int-1-8]::[as\_rational][int-arat-1-8]</code>
was added.
* A new method <code>[Float][flo-1-8]::[as\_complex][flo-ac-1-8]</code> was
added.
* [`SmallFloat`][smf-1-8] and [`SmallComplex`][smc-1-8] can now be initialized
with [`Special`][spe-1-8].
* New methods <code>[SmallFloat][smf-1-8]::[new][smf-n-1-8]</code> and
<code>[SmallComplex][smc-1-8]::[new][smc-n-1-8]</code> were added.
* [`SmallFloat`][smf-1-8] and [`SmallComplex`][smc-1-8] now implement
[`Default`].
* [`Integer`][int-1-8] now implements
<code>[AsRef][`AsRef`]<[\[][slice][limb_t][sys-limb-1-2][\]][slice]></code>.
* [`Float`][flo-1-8] now implements
<code>[AsRef][`AsRef`]<[OrdFloat][of-1-8]></code>, and
[`OrdFloat`][of-1-8] now implements
<code>[AsRef][`AsRef`]<[Float][flo-1-8]></code> and
<code>[AsMut][`AsMut`]<[Float][flo-1-8]></code>.
* [`Complex`][com-1-8] now implements
<code>[AsRef][`AsRef`]<[OrdComplex][oc-1-8]></code>, and
[`OrdComplex`][oc-1-8] now implements
<code>[AsRef][`AsRef`]<[Complex][com-1-8]></code> and
<code>[AsMut][`AsMut`]<[Complex][com-1-8]></code>.
[com-1-8]: https://docs.rs/rug/~1.8/rug/struct.Complex.html
[flo-1-8]: https://docs.rs/rug/~1.8/rug/struct.Float.html
[flo-ac-1-8]: https://docs.rs/rug/~1.8/rug/struct.Float.html#method.as_complex
[int-1-8]: https://docs.rs/rug/~1.8/rug/struct.Integer.html
[int-arat-1-8]: https://docs.rs/rug/~1.8/rug/struct.Integer.html#method.as_rational
[int-araw-1-8]: https://docs.rs/rug/~1.8/rug/struct.Integer.html#method.as_raw
[int-ir-1-8]: https://docs.rs/rug/~1.8/rug/struct.Integer.html#method.into_raw
[int-n-1-8]: https://docs.rs/rug/~1.8/rug/struct.Integer.html#method.new
[oc-1-8]: https://docs.rs/rug/~1.8/rug/complex/struct.OrdComplex.html
[of-1-8]: https://docs.rs/rug/~1.8/rug/float/struct.OrdFloat.html
[smc-1-8]: https://docs.rs/rug/~1.8/rug/complex/struct.SmallComplex.html
[smc-n-1-8]: https://docs.rs/rug/~1.8/rug/complex/struct.SmallComplex.html#method.new
[smf-1-8]: https://docs.rs/rug/~1.8/rug/float/struct.SmallFloat.html
[smf-n-1-8]: https://docs.rs/rug/~1.8/rug/float/struct.SmallFloat.html#method.new
[smi-1-8]: https://docs.rs/rug/~1.8/rug/integer/struct.SmallInteger.html
[smi-n-1-8]: https://docs.rs/rug/~1.8/rug/integer/struct.SmallInteger.html#method.new
[smr-1-8]: https://docs.rs/rug/~1.8/rug/rational/struct.SmallRational.html
[smr-n-1-8]: https://docs.rs/rug/~1.8/rug/rational/struct.SmallRational.html#method.new
[spe-1-8]: https://docs.rs/rug/~1.8/rug/float/enum.Special.html
[sys-limb-1-2]: https://docs.rs/gmp-mpfr-sys/~1.2/gmp_mpfr_sys/gmp/type.limb_t.html
Version 1.7.0 (2020-01-21)
==========================
* The crate now requires rustc version 1.37.0 or later.
* The [gmp-mpfr-sys] dependency was updated to [version 1.2][sys-1-2].
* The [`RemAssignRound`][rar-1-7] and [`RemFromRound`][rfr-1-7] traits were
added.
* The [`Rem`], [`RemAssign`], [`RemFrom`][rf-1-7], [`RemAssignRound`][rar-1-7]
and [`RemFromRound`][rfr-1-7] traits were implemented for
[`Float`][flo-1-7].
* Arithmetic operations with one [`Integer`][int-1-7] or integer primitive
operand and one [`Rational`][rat-1-7] operand were added.
* A new method
<code>[Integer][int-1-7]::[div\_exact\_from][int-def-1-7]</code> was added.
* New methods <code>[Integer][int-1-7]::[gcd\_u][int-gu-1-7]</code>,
<code>[Integer][int-1-7]::[gcd\_u\_mut][int-gum-1-7]</code> and
<code>[Integer][int-1-7]::[gcd\_u\_ref][int-gur-1-7]</code>were added.
* New methods <code>[Integer][int-1-7]::[lcm\_u][int-lu-1-7]</code>,
<code>[Integer][int-1-7]::[lcm\_u\_mut][int-lum-1-7]</code> and
<code>[Integer][int-1-7]::[lcm\_u\_ref][int-lur-1-7]</code>were added.
* New methods <code>[Float][flo-1-7]::[remainder][flo-r-1-7]</code>,
<code>[Float][flo-1-7]::[remainder\_mut][flo-rm-1-7]</code>,
<code>[Float][flo-1-7]::[remainder\_round][flo-rr-1-7]</code>,
<code>[Float][flo-1-7]::[remainder\_from][flo-rf-1-7]</code>,
<code>[Float][flo-1-7]::[remainder\_from\_round][flo-rfr-1-7]</code> and
<code>[Float][flo-1-7]::[remainder\_ref][flo-rre-1-7]</code> were added.
Compatibility note
------------------
* [`SmallInteger`][smi-1-7], [`SmallRational`][smr-1-7],
[`SmallFloat`][smf-1-7] and [`SmallComplex`][smc-1-7] are no longer [`Sync`]
to avoid the possibility of a [data race][dr-1-7]. References obtained by
dereferencing them, for example the <code>&[Integer][int-1-7]</code>
returned from <code>[SmallInteger][smi-1-7]::[deref][`deref`]</code>, are
still [`Send`] and [`Sync`].
[dr-1-7]: https://internals.rust-lang.org/t/is-this-a-data-race/11582
[flo-1-7]: https://docs.rs/rug/~1.7/rug/struct.Float.html
[flo-r-1-7]: https://docs.rs/rug/~1.7/rug/struct.Float.html#method.remainder
[flo-rf-1-7]: https://docs.rs/rug/~1.7/rug/struct.Float.html#method.remainder_from
[flo-rfr-1-7]: https://docs.rs/rug/~1.7/rug/struct.Float.html#method.remainder_from_round
[flo-rm-1-7]: https://docs.rs/rug/~1.7/rug/struct.Float.html#method.remainder_mut
[flo-rr-1-7]: https://docs.rs/rug/~1.7/rug/struct.Float.html#method.remainder_round
[flo-rre-1-7]: https://docs.rs/rug/~1.7/rug/struct.Float.html#method.remainder_ref
[int-1-7]: https://docs.rs/rug/~1.7/rug/struct.Integer.html
[int-def-1-7]: https://docs.rs/rug/~1.7/rug/struct.Integer.html#method.div_exact_from
[int-gu-1-7]: https://docs.rs/rug/~1.7/rug/struct.Integer.html#method.gcd_u
[int-gum-1-7]: https://docs.rs/rug/~1.7/rug/struct.Integer.html#method.gcd_u_mut
[int-gur-1-7]: https://docs.rs/rug/~1.7/rug/struct.Integer.html#method.gcd_u_ref
[int-lu-1-7]: https://docs.rs/rug/~1.7/rug/struct.Integer.html#method.lcm_u
[int-lum-1-7]: https://docs.rs/rug/~1.7/rug/struct.Integer.html#method.lcm_u_mut
[int-lur-1-7]: https://docs.rs/rug/~1.7/rug/struct.Integer.html#method.lcm_u_ref
[rar-1-7]: https://docs.rs/rug/~1.7/rug/ops/trait.RemAssignRound.html
[rat-1-7]: https://docs.rs/rug/~1.7/rug/struct.Rational.html
[rf-1-7]: https://docs.rs/rug/~1.7/rug/ops/trait.RemFrom.html
[rfr-1-7]: https://docs.rs/rug/~1.7/rug/ops/trait.RemFromRound.html
[smc-1-7]: https://docs.rs/rug/~1.7/rug/complex/struct.SmallComplex.html
[smf-1-7]: https://docs.rs/rug/~1.7/rug/float/struct.SmallFloat.html
[smi-1-7]: https://docs.rs/rug/~1.7/rug/integer/struct.SmallInteger.html
[smr-1-7]: https://docs.rs/rug/~1.7/rug/rational/struct.SmallRational.html
[sys-1-2]: https://docs.rs/gmp-mpfr-sys/~1.2/gmp_mpfr_sys/index.html
Version 1.6.0 (2019-09-03)
==========================
* Arithmetic operator implementations for [`i8`], [`i16`], [`i64`],
[`i128`], [`u8`], [`u16`], [`u64`] and [`u128`] were added to the
existing implementations for [`i32`] and [`u32`].
* A new function
<code>[float][flom-1-6]::[free\_cache][fc-1-6]</code> and its
supporting enum [`FreeCache`][fce-1-6] were added.
* A new method
<code>[RandState][ras-1-6]::[into\_custom\_boxed][ras-icb-1-6]</code>
was added.
* A new struct [`ThreadRandState`][trs-1-6] and a new trait
[`ThreadRandGen`][trg-1-6] were added to the [`rand`][ram-1-6]
module to enable the use of custom random generators that are not
[`Send`] and [`Sync`].
* Numeric type methods which take [`RandState`][ras-1-6] now can
also take [`ThreadRandState`][trs-1-6].
Compatibility note
------------------
* The numeric type methods which took <code>&mut [RandState][ras-1-6]</code>
were changed to take <code>&mut dyn [MutRandState][mrs-1-6]</code> instead.
Under normal use, this does not have any affect apart from allowing the use
of <code>&mut [ThreadRandState][trs-1-6]</code> as well. With function
inlining and optimization, the generated code should have the same
performance.
[fc-1-6]: https://docs.rs/rug/~1.6/rug/float/fn.free_cache.html
[fce-1-6]: https://docs.rs/rug/~1.6/rug/float/enum.FreeCache.html
[flom-1-6]: https://docs.rs/rug/~1.6/rug/float/index.html
[mrs-1-6]: https://docs.rs/rug/~1.6/rug/rand/trait.MutRandState.html
[ram-1-6]: https://docs.rs/rug/~1.6/rug/rand/index.html
[ras-1-6]: https://docs.rs/rug/~1.6/rug/rand/struct.RandState.html
[ras-icb-1-6]: https://docs.rs/rug/~1.6/rug/rand/struct.RandState.html#method.into_custom_boxed
[trg-1-6]: https://docs.rs/rug/~1.6/rug/rand/trait.ThreadRandGen.html
[trs-1-6]: https://docs.rs/rug/~1.6/rug/rand/struct.ThreadRandState.html
Version 1.5.2 (2019-07-26)
==========================
* Bug fix: <code>[Pow][pow-1-5]<[i32][`i32`]> for
[Rational][rat-1-5]</code> was returning the reciprocal of the correct
result.
Version 1.5.1 (2019-07-10)
==========================
* Bug fix: a memory leak in conversions of [`Float`][flo-1-5] to string was
fixed (https://gitlab.com/tspiteri/rug/-/issues/11).
Version 1.5.0 (2019-07-04)
==========================
* A new method
<code>[Integer][int-1-5]::[assign\_digits\_unaligned][int-adu-1-5]</code>
was added to enable reading digits from unaligned memory.
* A new method
<code>[Integer][int-1-5]::[write\_digits\_unaligned][int-wdu-1-5]</code> was
added to enable writing digits to unaligned and uninitialized memory.
* New methods <code>[Float][flo-1-5]::[u\_exp][flo-ue-1-5]</code> and
<code>[Float][flo-1-5]::[i\_exp][flo-ie-1-5]</code> were added.
* A new method <code>[Complex][com-1-5]::[abs\_round][com-ar-1-5]</code> was
added.
* The documentation examples on [`from_raw`][fr-1-5] methods now use
[`MaybeUninit`] instead of
<code>[mem][`mem`]::[uninitialized][`uninitialized`]</code>.
[com-1-5]: https://docs.rs/rug/~1.5/rug/struct.Complex.html
[com-ar-1-5]: https://docs.rs/rug/~1.5/rug/struct.Complex.html#method.abs_round
[flo-1-5]: https://docs.rs/rug/~1.5/rug/struct.Float.html
[flo-ie-1-5]: https://docs.rs/rug/~1.5/rug/struct.Float.html#method.i_exp
[flo-ue-1-5]: https://docs.rs/rug/~1.5/rug/struct.Float.html#method.u_exp
[fr-1-5]: https://docs.rs/rug/~1.5/rug/struct.Integer.html#method.from_raw
[int-1-5]: https://docs.rs/rug/~1.5/rug/struct.Integer.html
[int-adu-1-5]: https://docs.rs/rug/~1.5/rug/struct.Integer.html#method.assign_digits_unaligned
[int-wdu-1-5]: https://docs.rs/rug/~1.5/rug/struct.Integer.html#method.write_digits_unaligned
[pow-1-5]: https://docs.rs/rug/~1.5/rug/ops/trait.Pow.html
[rat-1-5]: https://docs.rs/rug/~1.5/rug/struct.Rational.html
Version 1.4.0 (2019-04-24)
==========================
* The crate now requires rustc version 1.31.0 or later.
* The method <code>[RandState][ras-1-4]::[as\_raw][ras-ar-1-4]</code> was
fixed to take `&self` instead of `&mut self`.
* <code>[float][flom-1-0]::[prec\_min][flom-pmin-1-4]</code> and
<code>[float][flom-1-0]::[prec\_max][flom-pmax-1-4]</code> are now const
functions.
* New methods <code>[Float][flo-1-4]::[copysign][flo-cs-1-4]</code>,
<code>[Float][flo-1-4]::[copysign\_mut][flo-csm-1-4]</code> and
<code>[Float][flo-1-4]::[copysign\_ref][flo-csr-1-4]</code> were added.
[flo-1-4]: https://docs.rs/rug/~1.4/rug/struct.Float.html
[flo-cs-1-4]: https://docs.rs/rug/~1.4/rug/struct.Float.html#method.copysign
[flo-csm-1-4]: https://docs.rs/rug/~1.4/rug/struct.Float.html#method.copysign_mut
[flo-csr-1-4]: https://docs.rs/rug/~1.4/rug/struct.Float.html#method.copysign_ref
[flom-1-4]: https://docs.rs/rug/~1.4/rug/float/index.html
[flom-pmax-1-4]: https://docs.rs/rug/~1.4/rug/float/fn.prec_max.html
[flom-pmin-1-4]: https://docs.rs/rug/~1.4/rug/float/fn.prec_min.html
[ras-1-4]: https://docs.rs/rug/~1.4/rug/rand/struct.RandState.html
[ras-ar-1-4]: https://docs.rs/rug/~1.4/rug/rand/struct.RandState.html#method.as_raw
Version 1.3.0 (2019-01-26)
==========================
* A new method
<code>[SmallRational][smr-1-3]::[assign\_canonical][smr-ac-1-3]</code> was
added.
[smr-1-3]: https://docs.rs/rug/~1.3/rug/rational/struct.SmallRational.html
[smr-ac-1-3]: https://docs.rs/rug/~1.3/rug/rational/struct.SmallRational.html#method.assign_canonical
Version 1.2.3 (2019-01-21)
==========================
* Fixed bug in <code>[Integer][int-1-2]::[assign\_digits][int-ad-1-2]</code>.
(Thanks: Eric Scrivner)
Version 1.2.2 (2018-10-18)
==========================
* The [`NotAssign`][noa-1-2], [`BitAndFrom`][baf-1-2], [`BitOrFrom`][bof-1-2]
and [`BitXorFrom`][bxf-1-2] traits were implemented for [`bool`].
* The [`NegAssign`][nea-1-2] trait was implemented for [`f32`] and [`f64`].
Version 1.2.1 (2018-08-16)
==========================
* The [`Integer`][int-1-2] methods [`from_digits`][int-fd-1-2],
[`assign_digits`][int-ad-1-2], [`significant_digits`][int-sd-1-2],
[`to_digits`][int-td-1-2] and [`write_digits`][int-wd-1-2] now support
[`bool`] [slices][slice].
Version 1.2.0 (2018-06-30)
==========================
* The implementations of [`Sum`] and [`Product`] for [`Integer`][int-1-2] and
[`Rational`][rat-1-2] were generalized to accept more types of elements.
* New methods
<code>[Integer][int-1-2]::[keep\_signed\_bits][int-ksb-1-2]</code>,
<code>[Integer][int-1-2]::[keep\_signed\_bits\_mut][int-ksbm-1-2]</code> and
<code>[Integer][int-1-2]::[keep\_signed\_bits\_ref][int-ksbr-1-2]</code>
were added.
* New methods <code>[Integer][int-1-2]::[sum][int-s-1-2]</code>,
<code>[Integer][int-1-2]::[dot][int-d-1-2]</code> and
<code>[Integer][int-1-2]::[product][int-p-1-2]</code> were added
* New methods <code>[Rational][rat-1-2]::[sum][rat-s-1-2]</code>,
<code>[Rational][rat-1-2]::[dot][rat-d-1-2]</code> and
<code>[Rational][rat-1-2]::[product][rat-p-1-2]</code> were added.
* New methods <code>[Float][flo-1-2]::[dot][flo-d-1-2]</code> and
<code>[Complex][com-1-2]::[dot][com-d-1-2]</code> were added.
[baf-1-2]: https://docs.rs/rug/~1.2/rug/ops/trait.BitAndFrom.html
[bof-1-2]: https://docs.rs/rug/~1.2/rug/ops/trait.BitOrFrom.html
[bxf-1-2]: https://docs.rs/rug/~1.2/rug/ops/trait.BitXorFrom.html
[com-1-2]: https://docs.rs/rug/~1.2/rug/struct.Complex.html
[com-d-1-2]: https://docs.rs/rug/~1.2/rug/struct.Complex.html#method.dot
[flo-1-2]: https://docs.rs/rug/~1.2/rug/struct.Float.html
[flo-d-1-2]: https://docs.rs/rug/~1.2/rug/struct.Float.html#method.dot
[int-1-2]: https://docs.rs/rug/~1.2/rug/struct.Integer.html
[int-ad-1-2]: https://docs.rs/rug/~1.2/rug/struct.Integer.html#method.assign_digits
[int-d-1-2]: https://docs.rs/rug/~1.2/rug/struct.Integer.html#method.dot
[int-fd-1-2]: https://docs.rs/rug/~1.2/rug/struct.Integer.html#method.from_digits
[int-ksb-1-2]: https://docs.rs/rug/~1.2/rug/struct.Integer.html#method.keep_signed_bits
[int-ksbm-1-2]: https://docs.rs/rug/~1.2/rug/struct.Integer.html#method.keep_signed_bits_mut
[int-ksbr-1-2]: https://docs.rs/rug/~1.2/rug/struct.Integer.html#method.keep_signed_bits_ref
[int-p-1-2]: https://docs.rs/rug/~1.2/rug/struct.Integer.html#method.product
[int-s-1-2]: https://docs.rs/rug/~1.2/rug/struct.Integer.html#method.sum
[int-sd-1-2]: https://docs.rs/rug/~1.2/rug/struct.Integer.html#method.significant_digits
[int-td-1-2]: https://docs.rs/rug/~1.2/rug/struct.Integer.html#method.to_digits
[int-wd-1-2]: https://docs.rs/rug/~1.2/rug/struct.Integer.html#method.write_digits
[nea-1-2]: https://docs.rs/rug/~1.2/rug/ops/trait.NegAssign.html
[noa-1-2]: https://docs.rs/rug/~1.2/rug/ops/trait.NotAssign.html
[rat-1-2]: https://docs.rs/rug/~1.2/rug/struct.Rational.html
[rat-d-1-2]: https://docs.rs/rug/~1.2/rug/struct.Rational.html#method.dot
[rat-p-1-2]: https://docs.rs/rug/~1.2/rug/struct.Rational.html#method.product
[rat-s-1-2]: https://docs.rs/rug/~1.2/rug/struct.Rational.html#method.sum
Version 1.1.1 (2018-05-20)
==========================
* Support for unstable [`i128`], [`u128`] and [`TryFrom`] was added in
nightly.
Version 1.1.0 (2018-04-23)
==========================
* Support for [`i128`] and [`u128`] conversions and comparisons was added,
conditional on compiler support.
* Conditional on compiler support, [`TryFrom`] conversions were implemented
for conversions
* from [`Integer`][int-1-1] values to integer primitives,
* from floating-point primitives to [`Rational`][rat-1-1] numbers, and
* from [`Float`][flo-1-1] values to [`Rational`][rat-1-1] numbers.
* A new method <code>[Float][flo-1-1]::[get\_significand][flo-gs-1-1]</code>
was added.
* New methods <code>[Float][flo-1-1]::[u\_pow\_u][flo-upu-1-1]</code> and
<code>[Float][flo-1-1]::[i\_pow\_u][flo-ipu-1-1]</code> were added.
* New methods <code>[Integer][int-1-1]::[from\_digits][int-fd-1-1]</code>,
<code>[Integer][int-1-1]::[to\_digits][int-td-1-1]</code>,
<code>[Integer][int-1-1]::[assign\_digits][int-ad-1-1]</code>,
<code>[Integer][int-1-1]::[write\_digits][int-wd-1-1]</code> and
<code>[Integer][int-1-1]::[significant\_digits][int-sd-1-1]</code> were
added, providing reading from and writing to slices of unsigned integer
primitives.
[flo-1-1]: https://docs.rs/rug/~1.1/rug/struct.Float.html
[flo-gs-1-1]: https://docs.rs/rug/~1.1/rug/struct.Float.html#method.get_significand
[flo-ipu-1-1]: https://docs.rs/rug/~1.1/rug/struct.Float.html#method.i_pow_u
[flo-upu-1-1]: https://docs.rs/rug/~1.1/rug/struct.Float.html#method.u_pow_u
[int-1-1]: https://docs.rs/rug/~1.1/rug/struct.Integer.html
[int-ad-1-1]: https://docs.rs/rug/~1.1/rug/struct.Integer.html#method.assign_digits
[int-fd-1-1]: https://docs.rs/rug/~1.1/rug/struct.Integer.html#method.from_digits
[int-sd-1-1]: https://docs.rs/rug/~1.1/rug/struct.Integer.html#method.significant_digits
[int-td-1-1]: https://docs.rs/rug/~1.1/rug/struct.Integer.html#method.to_digits
[int-wd-1-1]: https://docs.rs/rug/~1.1/rug/struct.Integer.html#method.write_digits
[rat-1-1]: https://docs.rs/rug/~1.1/rug/struct.Rational.html
Version 1.0.2 (2018-04-09)
==========================
* A bug in <code>[Integer][int-1-0]::[reserve][int-r-1-0]</code>, which was
shrinking the capacity in some cases, was fixed.
* The [gmp-mpfr-sys] dependency in [*Cargo.toml*] was fixed to use tilde
instead of caret, since Rug uses internal implementation details.
Version 1.0.1 (2018-03-10)
==========================
* A new method
<code>[Integer][int-1-0]::[is\_power\_of\_two][int-ipot-1-0]</code> was
added.
* A new method <code>[Integer][int-1-0]::[signed\_bits][int-sb-1-0]</code> was
added.
* New methods
<code>[Integer][int-1-0]::[secure\_pow\_mod][int-spm-1-0]</code>,
<code>[Integer][int-1-0]::[secure\_pow\_mod\_mut][int-spmm-1-0]</code> and
<code>[Integer][int-1-0]::[secure\_pow\_mod\_ref][int-spmr-1-0]</code> were
added.
* New methods <code>[Integer][int-1-0]::[div\_rem\_round][int-drr-1-0]</code>,
<code>[Integer][int-1-0]::[div\_rem\_round\_mut][int-drrm-1-0]</code> and
<code>[Integer][int-1-0]::[div\_rem\_round\_ref][int-drrr-1-0]</code> were
added.
* A new method <code>[Complex][com-1-0]::[eq0][com-e-1-0]</code> was added.
* Documentation was improved.
Version 1.0.0 (2018-03-03)
==========================
* The methods <code>[Integer][int-1-0]::[invert\_mut][int-im-1-0]</code> and
<code>[Integer][int-1-0]::[pow\_mod\_mut][int-pmm-1-0]</code> were changed
to return <code>[Result][`Result`]<(), ()></code> instead of [`bool`].
* The <code>[float][flom-1-0]::[Round][rou-1-0]</code>,
<code>[float][flom-1-0]::[Constant][con-1-0]</code> and
<code>[float][flom-1-0]::[Special][spe-1-0]</code> enums are now marked as
non-exhaustive.
* All deprecated items were removed.
* Unsound blanket implementations constrained on <code>T
where [SmallInteger][smi-1-0]: [Assign][ass-1-0]<T></code> inside
[`SmallRational`][smr-1-0] and on <code>T where [SmallFloat][smf-1-0]:
[Assign][ass-1-0]<T></code> inside [`SmallComplex`][smc-1-0] were
removed.
[ass-1-0]: https://docs.rs/rug/~1.0/rug/trait.Assign.html
[com-1-0]: https://docs.rs/rug/~1.0/rug/struct.Complex.html
[com-e-1-0]: https://docs.rs/rug/~1.0/rug/struct.Complex.html#method.eq0
[con-1-0]: https://docs.rs/rug/~1.0/rug/float/enum.Constant.html
[flom-1-0]: https://docs.rs/rug/~1.0/rug/float/index.html
[int-1-0]: https://docs.rs/rug/~1.0/rug/struct.Integer.html
[int-drr-1-0]: https://docs.rs/rug/~1.0/rug/struct.Integer.html#method.div_rem_round
[int-drrm-1-0]: https://docs.rs/rug/~1.0/rug/struct.Integer.html#method.div_rem_round_mut
[int-drrr-1-0]: https://docs.rs/rug/~1.0/rug/struct.Integer.html#method.div_rem_round_ref
[int-im-1-0]: https://docs.rs/rug/~1.0/rug/struct.Integer.html#method.invert_mut
[int-ipot-1-0]: https://docs.rs/rug/~1.0/rug/struct.Integer.html#method.is_power_of_two
[int-pmm-1-0]: https://docs.rs/rug/~1.0/rug/struct.Integer.html#method.pow_mod_mut
[int-r-1-0]: https://docs.rs/rug/~1.0/rug/struct.Integer.html#method.reserve
[int-sb-1-0]: https://docs.rs/rug/~1.0/rug/struct.Integer.html#method.signed_bits
[int-spm-1-0]: https://docs.rs/rug/~1.0/rug/struct.Integer.html#method.secure_pow_mod
[int-spmm-1-0]: https://docs.rs/rug/~1.0/rug/struct.Integer.html#method.secure_pow_mod_mut
[int-spmr-1-0]: https://docs.rs/rug/~1.0/rug/struct.Integer.html#method.secure_pow_mod_ref
[rou-1-0]: https://docs.rs/rug/~1.0/rug/float/enum.Round.html
[smc-1-0]: https://docs.rs/rug/~1.0/rug/complex/struct.SmallComplex.html
[smf-1-0]: https://docs.rs/rug/~1.0/rug/float/struct.SmallFloat.html
[smi-1-0]: https://docs.rs/rug/~1.0/rug/integer/struct.SmallInteger.html
[smr-1-0]: https://docs.rs/rug/~1.0/rug/rational/struct.SmallRational.html
[spe-1-0]: https://docs.rs/rug/~1.0/rug/float/enum.Special.html
Version 0.10.0 (2018-02-17)
===========================
* `Integer::invert_ref` and `Integer::pow_mod_ref` now return an `Option`, not
an object that is assignable to `Result`.
* `Float::random_bits` and `Complex::random_bits` are now assignable to the
number values, not to `Result` objects.
* `Rational::signum`, `Rational::trunc`, `Rational::ceil`, `Rational::floor`
and `Rational::round` now return `Rational`.
* `Complex::abs`, `Complex::arg` and `Complex::norm` now return `Complex`.
* Remove `Default` implementations from all types of `Float` and `Complex`;
now the precision always has to be specified.
* Remove `Sum` and `Product` implementations for `Float` and `Complex`.
* Remove `Clone` and `Copy` implementations from all incomplete computation
types.
* Revamp top-level crate documentation.
* Add `Integer::parse` and `Rational::parse`, and deprecate `ValidInteger`,
`ValidRational`, `valid_str_radix` methods, and `assign_str*` methods.
* Add `Float::parse` and `Complex::parse`, and deprecate `ValidFloat`,
`ValidComplex`, `from_str*` methods, `valid_str_radix` methods, and
`assign_str*` methods.
* Rename `Integer::gcd_coeffs*` methods to `Integer::gcd_cofactors*`.
* `Integer::gcd_cofactors_ref` now supports computing only one cofactor.
* Deprecate `Rational::to_integer` and `Rational::as_numer_denom`.
* Deprecate `Rational::as_mut_numer_denom` and replace with
`Rational::mutate_numer_denom`.
* Deprecate `Complex::as_real_imag`.
Version 0.9.3 (2018-02-09)
==========================
* Add `Integer::square` and `Rational::square` methods.
* Add `Rational::cmp_abs` method.
* Add `Float::sum` and `Complex::sum` methods.
* Add `from_raw`, `into_raw`, `as_raw` and `as_raw_mut` to `RandState`.
* Add `RandGen::boxed_clone` and `RandState::new_custom_boxed`, and thus
support for cloning custom random generators.
* Fix `Float::PartialOrd<f32>` (and `<f64>`) to return `None` when the
primitive is NaN.
Version 0.9.2 (2018-01-12)
==========================
* Require rustc version 1.18.0.
* Require gmp-mpfr-sys version 1.1.0.
* Deprecate most `assign_*` methods, and replace with static methods that
return an assignable object.
* Deprecate `Rational::copy_to_integer` method.
* Add `Rational::assign_canonical` and `Rational::from_canonical` methods.
* Add `Float::ln_u` method.
* Add `Float::round_even` methods.
* Add `Float::gamma_inc` methods.
* Add `Float::random_normal` and `Float::random_exp` methods.
* Deprecate `Float::assign_random_gaussian` methods.
* Add `Complex::cmp_abs` method.
* Add `Complex::root_of_unity` method.
* Deprecate `SmallRational::from_canonicalized_*` methods and replace with
`SmallRational::from_canonical` method.
* Deprecate `SmallRational::assign_canonicalized_*` methods.
* Add `as_nonreallocating_*` methods to `SmallInteger`, `SmallRational`,
`SmallFloat` and `SmallComplex`.
* Fix `SmallFloat::new` and `SmallComplex::new` to produce numbers with a
precision of 53.
* Deprecate and hide `float::Round::AwayFromZero`.
* Add `Integer::signum`, `Rational::signum` and `Float::signum` methods.
* Add missing conversion to/from and comparisons to primitive types.
* Add `from_raw`, `into_raw`, `as_raw` and `as_raw_mut` to `Integer`,
`Rational`, `Float` and `Complex`.
* Add `Float::classify` method.
* Add `Float::mul_add`, `Float::mul_sub`, `Float::mul_add_mul` and
`Float::mul_sub_mul` methods.
* Add `Complex::mul_add` and `Complex::mul_sub` methods.
Version 0.9.1 (2017-11-27)
==========================
* Implement mathematical operations where operands include references to
primitives.
* Remove undefined behaviour: replace `mem::swap(&mut src, &mut
uninitialized)` with `ptr::copy_nonoverlapping(&src, &mut uninitialized,
1)`.
Version 0.9.0 (2017-11-16)
==========================
* Move `rug::float::AssignRound` to `rug::ops::AssignRound`.
* `OrdFloat` now orders +NaN above +∞, while −NaN is still below
−∞.
* Change `Float::subnormalize` methods to require explicit minimum normal
exponent.
* Add `Float::subnormalize_ieee` methods to deduce exponent range from
precision, like old `Float::subnormalize`. The new method also supports all
IEEE 754-2008 precisions corresponding to k storage bits where k ≥ 128 and k
is a multiple of 32.
* Deprecate `Rational::fract` methods and replace with `Rational::rem_trunc`
methods.
* Add `Rational::rem_ceil` and `Rational::rem_floor` methods.
* Add `Rational::rem_round` and `Rational::fract_round` methods.
* Add `Float::next_toward`, `Float::next_up` and `Float::next_down`.
* Add optional serde support.
Version 0.8.0 (2017-10-26)
==========================
* Rename `Integer::sign`, `Rational::sign` and `Float::sign` methods as
`Integer::cmp0`, `Rational::cmp0` and `Float::cmp0`.
* Rename `Float::pos_diff` as `Float::positive_diff`.
* Move `rug::AssignRound` to `rug::float::AssignRound`.
* Add `Integer::clamp`, `Rational::clamp` and `Float::clamp` methods.
* Add `Integer::div_rem_ceil`, `Integer::div_rem_floor` and
`Integer::div_rem_euc` methods.
* Add `DivRounding`, `DivRoundingAssign` and `DivRoundingFrom` traits, and
their `Rem` counterparts, and implement them for `Integer`, and for
combinations of `Integer` with `i32` or `u32`.
* Add `Rational::fract_floor` and `Rational::fract_ceil` methods.
Version 0.7.0 (2017-09-30)
==========================
* Fix swapped `Float::sin_cos_mut` and `Float::sin_cos_round`,
`Float::sinh_cosh_mut` and `Float::sinh_cosh_round`, and
`Float::trunc_fract_mut` and `Float::trunc_fract_round`.
* Fix `Float::to_f32_round`.
* Now `Float::subnormalize` only works for precisions defined in IEEE 754.
* Add `Integer::gcd_coeffs` methods.
Version 0.6.0 (2017-08-09)
==========================
* Requires rustc version 1.17.0.
* Rename `Float::abs_diff` as `Float::pos_diff`.
* Replace `Float::get_sign` with `Float::is_sign_positive` and
`Float::is_sign_negative`.
* Add various `as_neg`, `as_abs` and `as_conj` methods.
* Add `OrdFloat` and `OrdComplex` for complete ordering.
[*Cargo.toml*]: https://doc.rust-lang.org/cargo/guide/dependencies.html
[*az* crate]: https://crates.io/crates/az
[*num-integer* crate]: https://crates.io/crates/num-integer
[*num-traits* crate]: https://crates.io/crates/num-traits
[NegOutput]: https://doc.rust-lang.org/nightly/core/ops/trait.Neg.html#associatedtype.Output
[`AsMut`]: https://doc.rust-lang.org/nightly/core/convert/trait.AsMut.html
[`AsRef`]: https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html
[`Clone`]: https://doc.rust-lang.org/core/clone/trait.Clone.html
[`Copy`]: https://doc.rust-lang.org/core/marker/trait.Copy.html
[`Default`]: https://doc.rust-lang.org/nightly/core/default/trait.Default.html
[`Eq`]: https://doc.rust-lang.org/core/cmp/trait.Eq.html
[`LowerExp`]: https://doc.rust-lang.org/nightly/core/fmt/trait.LowerExp.html
[`MaybeUninit`]: https://doc.rust-lang.org/nightly/core/mem/union.MaybeUninit.html
[`Neg`]: https://doc.rust-lang.org/nightly/core/ops/trait.Neg.html
[`Option`]: https://doc.rust-lang.org/nightly/core/option/enum.Option.html
[`PartialEq`]: https://doc.rust-lang.org/core/cmp/trait.PartialEq.html
[`Product`]: https://doc.rust-lang.org/nightly/core/iter/trait.Product.html
[`RemAssign`]: https://doc.rust-lang.org/nightly/core/ops/trait.RemAssign.html
[`Rem`]: https://doc.rust-lang.org/nightly/core/ops/trait.Rem.html
[`Result`]: https://doc.rust-lang.org/nightly/core/result/enum.Result.html
[`Send`]: https://doc.rust-lang.org/nightly/core/marker/trait.Send.html
[`ShlAssign`]: https://doc.rust-lang.org/nightly/core/ops/trait.ShlAssign.html
[`Shl`]: https://doc.rust-lang.org/nightly/core/ops/trait.Shl.html
[`ShrAssign`]: https://doc.rust-lang.org/nightly/core/ops/trait.ShrAssign.html
[`Shr`]: https://doc.rust-lang.org/nightly/core/ops/trait.Shr.html
[`Sum`]: https://doc.rust-lang.org/nightly/core/iter/trait.Sum.html
[`Sync`]: https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html
[`TryFrom`]: https://doc.rust-lang.org/nightly/std/convert/trait.TryFrom.html
[`UpperExp`]: https://doc.rust-lang.org/nightly/core/fmt/trait.UpperExp.html
[`bool`]: https://doc.rust-lang.org/nightly/core/primitive.bool.html
[`deref`]: https://doc.rust-lang.org/nightly/core/ops/trait.Deref.html#tymethod.deref
[`f32`]: https://doc.rust-lang.org/nightly/core/primitive.f32.html
[`f64`]: https://doc.rust-lang.org/nightly/core/primitive.f64.html
[`i128`]: https://doc.rust-lang.org/nightly/core/primitive.i128.html
[`i16`]: https://doc.rust-lang.org/nightly/core/primitive.i16.html
[`i32`]: https://doc.rust-lang.org/nightly/core/primitive.i32.html
[`i64`]: https://doc.rust-lang.org/nightly/core/primitive.i64.html
[`i8`]: https://doc.rust-lang.org/nightly/core/primitive.i8.html
[`isize`]: https://doc.rust-lang.org/nightly/core/primitive.isize.html
[`mem`]: https://doc.rust-lang.org/nightly/core/mem/index.html
[`u128`]: https://doc.rust-lang.org/nightly/core/primitive.u128.html
[`u16`]: https://doc.rust-lang.org/nightly/core/primitive.u16.html
[`u32`]: https://doc.rust-lang.org/nightly/core/primitive.u32.html
[`u64`]: https://doc.rust-lang.org/nightly/core/primitive.u64.html
[`u8`]: https://doc.rust-lang.org/nightly/core/primitive.u8.html
[`uninitialized`]: https://doc.rust-lang.org/nightly/core/mem/fn.uninitialized.html
[`usize`]: https://doc.rust-lang.org/nightly/core/primitive.usize.html
[gmp-mpfr-sys]: https://crates.io/crates/gmp-mpfr-sys
[slice]: https://doc.rust-lang.org/nightly/core/primitive.slice.html