This changelog aggregates the releases of every dashu crate — dashu, dashu-base,
dashu-int, dashu-float, dashu-ratio, dashu-cmplx, dashu-macros, and the
dashu-python binding. Each entry is tagged with the crate and minor version it belongs
to; see the per-crate CHANGELOG.md in each subdirectory (base/, integer/, …) for
full detail.
- dashu-macros: (breaking)
cbig!/static_cbig!coefficients are now decimal by default (was binary); use the0x/0b/0oprefixes for other bases.
- dashu-base:
Approximation::value_with_exact()— the value together with anis_exactflag (feeds dashu-float's exact-tracking Ball ops andhypot). - dashu-int: rkyv 0.7 (
rkyv_v07) and rkyv 0.8 (rkyv_v08) support —UBig/IBigarchive as their native word vectors (zero-copy). - dashu-float:
tuningfeature +ziv_retries()/ziv_retries_reset()— per-Ziv-loop retry counter for profiling how tight each transcendental's error radius is. - dashu-float: rkyv 0.7/0.8 support for
Repr/Context/FBig;Repr::zero_with_signis now public. - dashu-ratio: rkyv 0.7/0.8 support for
RBig/Relaxed. - dashu-cmplx:
serdeandzeroizesupport forCBig; rkyv 0.7/0.8 support; signed-zero preservation on exact-zerosin_cos/sqr/log. - dashu-python: CI wheel/sdist build workflow (
.github/workflows/python-wheels.yml).
- dashu-int / dashu-float / dashu-ratio / dashu-cmplx: unversioned
rand/rkyvfeature aliases now select rand 0.10 / rkyv 0.8 (pinrand_v08/rkyv_v07to keep the old). - dashu-float:
log2's error radius now derived by Ball arithmetic instead of directed intervals (precision-aware propagation; public behavior unchanged, performance at parity). - dashu-float:
exp/exp_m1, the hyperbolic and trigonometric families,powi, andhypotmigrated to the same Ball error-propagation engine. - dashu-ratio: (breaking)
RBig::pow/Relaxed::powtakeisize(wasusize); negative exponents reciprocate. - dashu-cmplx: (breaking) complex infinity is now a terminal value — no arithmetic accepts
an infinite operand anymore (rejects with
FpError::InfiniteInput). - dashu-macros: version-aligned to rc.3 (no functional changes; skipped rc.2).
- dashu-float:
powf/powiwrongly rounded for large|y·ln x|(input-error inflation omitted the result-significand factor). - dashu-float:
sqrt-based radius under-bound inasin/asinh/acosh/hypot. - dashu-float:
atanh(x)forx < 0near the pole returned wrongly-rounded values. - dashu-float:
powfof a base< 1no longer hangs in the Ziv loop (scale_int→ exact-trackingscale_int_tracking). - dashu-float:
cargo test --no-default-featurescompiles again (Ziv counter gated onstd). - dashu-cmplx: dangling intra-doc link in the
fmadocs.
- Unified
f32/f64range detection:into_f32_internal/into_f64_internalnow returnFpResult, so the range decision lives in one place. Context::expof an astronomically large negative value now returnsErr(Underflow).- Ziv driver takes fallible closures; hoisted overflow probes removed.
- Directed overflow/underflow of
FBigresults now saturate to the mode-aware endpoint (Context::unwrap_fp), soUp ≥ Downholds on both ends. - Directed overflow/underflow of
FBig → f32/f64(range detection delegated toencode). TryFrom<FBig> for f32/f64error variant is now mode-independent.- Directed
ln/log2ofx ∈ [1, B)and ofxjust above 1 (radius under-estimates). exp/exp_m1extreme-negative endpoint carried precision 0;ulp()/ulp_lb()panic on an extreme exponent (saturating arithmetic);exp_m1of large negative input short-circuits.expoverflow probe could disagree with the computation;exprange reduction for large|x|.FBig → f32/f64subnormal mis-round (convert atwidth + 24bits); underflow of a catastrophically tiny source short-circuits before conversion.powimemory exhaustion / hang on extreme exponents (margined guard +exp(y·ln x)fallback); panic at the exact exponent ceiling;Repr::cmpoverflow near the exponent ceiling.
- dashu-base:
ParseError::InvalidSyntaxvariant for structurally malformed input (breaking for exhaustiveParseErrormatches). - dashu-float: exact
Add/Sub/Muloperators forRepr(lossless intermediates). - dashu-float: guaranteed-correct rounding for
exp/exp_m1/ln/ln_1p, the trig family, and the hyperbolic family via a Ziv retry loop. - dashu-float:
hypot,powf, andpowinow correctly rounded via Ziv (with exactness tracking forhypot);Repr::is_intis nowconst. - dashu-cmplx: correct rounding for the complex transcendentals (
exp,ln,powf,powi, trig family,abs,arg,sqrt) via a complex Ziv driver.
- dashu-float: (breaking, bound) Ziv-backed transcendentals now require
R: ErrorBoundsinstead ofR: Round. - dashu-float:
FBig::log2now correctly rounded via Ziv (was near-correct). - dashu-cmplx: (breaking, bound) complex transcendentals now require
R: ErrorBounds;powicorrectly rounded via its own Ziv loop. - dashu-cmplx:
FromStrreturnsParseError::InvalidSyntaxfor malformed input. - dashu-ratio:
from_str_radix/from_str_with_radix_prefixreject multiple/separators withParseError::InvalidSyntax. - dashu-macros: literal macros surface the new
ParseError::InvalidSyntaxwith a dedicated panic message.
- dashu-int: NTT squaring/multiplication of an all-zero operand no longer panics (the crash
behind dashu-float's
hypot(3,4)under directed rounding). - dashu-float: directed-rounding hang on exactly-representable results (
acos(±1),asin(0), exacthypot);tanpole check removed (~2× cost);no_stdbuild of the Ziv retry counter. - dashu-cmplx:
SumforCBignow correctly rounded; unlimited-precision arithmetic correct;no_stdbuild of the Ziv retry counter.
crates: dashu-base, dashu-int, dashu-float, dashu-ratio, dashu-cmplx, dashu-macros, dashu-python
- dashu-float (0.5.2): Add
FBig::e(Euler's constant, exact binary splitting),FBig::fma(fused multiply–add, one rounding),FBig::ulp_lb,Context::addsub_vv/vr/rv/rrkernels;x ± 0now rounds to the context precision;mul/sqr/cubicstrictly correctly rounded. - dashu-base (0.5.1): Fix
BitTest::bitat the sign-bit position;FloatEncoding::encodeno longer returnsNaNfor huge exponents. - dashu-int (0.5.1): Fix
to_f64exactness atDoubleWord::MAX; GCD of large similarly-sized integers no longer aborts. - dashu-float (0.5.1): Add
Repr::new_const, correctly-roundedFBig::log2; fix spuriouspowioverflow for base ≈ 1; single-roundingto_f64/to_f32. - dashu-ratio (0.5.1): Add
from_str_expanded/from_str_decimal(repeating notation),num_traits::Pow<isize>; fix GCD memory abort,UBig::try_from(RBig)denominator check. - dashu-cmplx (0.5.1): Add
CBig::from_parts_const(constcbig!). - dashu-macros (0.5.1):
cbig!inconstposition forDoubleWord-fitting coefficients. - dashu-base (0.5.0): Remove
AbsEq(useAbsOrd); full docs +#![deny(missing_docs)]. - dashu-int (0.5.0): Add
to_digits/from_digits; breaking serde format → two's-complement LE bytes,in_radixradix →u8; fixnth_root(0); full docs. - dashu-float (0.5.0): IEEE-754 signed zero;
FpError/FpResulterror model;ConstCache/CachedFBig; hyperbolic functions;hypot;sinh_cosh; breakingis_zero→is_pos_zero, correctly-roundedSum, serde precision padding,ContextreturnsFpResult; remove publicfrom_str_native. - dashu-ratio (0.5.0): breaking
From<RBig/Repr> for FBig→TryFrom(exactness in the target base);in_radixradix →u8; fixUBig::try_from(RBig). - dashu-cmplx (0.5.0): initial release — two-layer
Context/CBigAPI, field arithmetic,powi/powf, transcendentals,CachedCBig,cbig!/static_cbig!, rand,num-complexinterop. - dashu-macros (0.5.0):
cbig!/static_cbig!;#![deny(missing_docs)]. - dashu-python (0.5.0): initial release of dashu-rs on PyPI — six types, panic-free
transcendentals, module
mathAPI, optional serde/rand/rkyv/zeroize.
crates: dashu-base, dashu-int, dashu-float, dashu-ratio, dashu-macros
- dashu-float (0.4.5): Add
quantize,cbrt/nth_root, trig functions + π (Chudnovsky, binary splitting),FpResult,rand_v09/rand_v010; fixto_f32/to_f64rounding, add/sub rounding bugs. - dashu-float (0.4.4): Bump MSRV to 1.68.
- dashu-ratio (0.4.4): Fix
to_f32/to_f64double rounding. - dashu-base (0.4.3): Add
Sign::as_sign_str; fast integersqrtvia nativef64::sqrt. - dashu-int (0.4.3): Add NTT multiplication, asymmetric NTT,
montymodule, specialized squaring, constfrom_u64/from_i64,rand_v09/rand_v010, version-agnostic rand module; double-word mul kernels, runtime threshold tuning (DASHU_THRESHOLD_*); assorted fixes. - dashu-float (0.4.3): Deprecate
from_str_native;TryFromfor primitive ints/floats; formatting trait impls. - dashu-ratio (0.4.3): Add
Binary/Octal/LowerHex/UpperHex,in_radix/in_expanded,rand_v09/rand_v010, version-agnostic rand module. - dashu-base (0.4.2):
log2_boundsstrictly enclosing; MSRV bump. - dashu-int (0.4.2): Add
ones/as_ubig/from_chunks/to_chunks,TryFrom<f32/f64>,IBigbyte conversions, mixed bit ops; fixes; MSRV bump. - dashu-float (0.4.2):
Repr::from_static_words;FBig::from_repr_const;NumOrd/AbsOrdwith ints;Debugno longer shows the rounding mode. - dashu-ratio (0.4.2):
Div<RBig>/Div<Relaxed>forUBig/IBig; division bug fix; MSRV bump. - dashu-macros (0.4.2): Replace
pastewithpastey; MSRV bump. - dashu-base (0.4.1): Deprecate
AbsEq; re-implementnext_up/next_down. - dashu-int (0.4.1):
AbsEq/AbsOrd;from_static_words(static macros);is_multiple_of; consttrailing_zeros/trailing_ones;trailing_onesfix. - dashu-float (0.4.1): Fix
ln/expseries termination;powfno longer panics on base 0. - dashu-ratio (0.4.1):
AbsOrd/NumOrdwith ints/floats;as_relaxed;to_floatenforces precision on zero. - dashu-macros (0.4.1):
static_ubig!/static_ibig!/static_fbig!/static_rbig!. - dashu-base (0.4.0):
is_positive/is_negative; trait moves (SquareRoot/CubicRoot→math,AbsCmp→AbsOrd,square→sqr). - dashu-int (0.4.0):
ConstDivisor;as_ibig;NumOrd; serde format → LE byte sequence;IntoRingrefactor;Modulo→Reduced; removePartialOrd/PartialEqbetweenUBig/IBig. - dashu-float (0.4.0):
NumOrd/NumHash;ErrorBounds; feature defaults (num-orderon);Repr::BASE→UBig;sqrtvia theSquareRoottrait. - dashu-ratio (0.4.0):
is_int;NumOrd/NumHash;simplest_from_float; feature defaults; removePartialOrdbetweenRBig/Relaxed. - dashu-macros (0.4.0): Remove the
embeddedfeature.
crates: dashu-base, dashu-int, dashu-float, dashu-ratio, dashu-macros
- dashu-float (0.3.2): Default precision from the actual digits of integer conversions.
- dashu-ratio (0.3.2): Multiplication bug fix.
- dashu-base (0.3.1):
Inversetrait;AbsCmp/AbsEqfor primitives. - dashu-int (0.3.1):
UniformBits;count_ones/count_zeros;cubic;rand_v08/num-traits_v02feature flags. - dashu-float (0.3.1):
num_traits/rand/serde/diesel/postgres impls;Uniform01/UniformFBig;to_f32/to_f64;round;rand_v08/num-traits_v02. - dashu-ratio (0.3.1):
Sum/Product/Rem/num_traits/rand/serde impls;cubic/pow/round;rand_v08/num-traits_v02. - dashu-macros (0.3.1): Fix
ibig/rbigmacros using incorrect crate names. - dashu-base (0.3.0):
AbsCmp/AbsEq/FloatEncoding/Signed/SquareRoot/CubicRoot/EstimatedLog2; error types moved from int;BitTestrework. - dashu-int (0.3.0):
gcd/gcd_ext/div_rembetweenUBig/IBig;BitTestforIBig;TryFrom<f32/f64>; trait-only exposure;to_le_bytes→Box<[u8]>. - dashu-float (0.3.0): Subnormal
f32/f64conversion;split_at_point. - dashu-ratio (0.3.0): initial release — basic arithmetic, numeric conversion, Diophantine approximations.
- dashu-macros (0.3.0): Const context limited to
u32-fitting literals;embeddedfeature.
crates: dashu-base, dashu-int, dashu-float, dashu-macros
- dashu-base (0.2.1):
RootRem/Rootfor unsigned primitives. - dashu-int (0.2.1):
sqrt/sqrt_rem/nth_root;Sum/Product;num_traits/num_integer/num_order/zeroizeimpls; serdeis_human_readable. - dashu-float (0.2.1):
Sum/Product;powf;sqrt. - dashu-base (0.2.0):
Approximation,Sign,EstimatedLog2. - dashu-int (0.2.0): Expose
Sign/DoubleWord/as_words; const constructors;split_bits/clear_high_bits;ilog/log2_bounds; macros moved to a separatedashu-macrocrate;ZERO/ONE/NEG_ONE;powspeed-up. - dashu-float (0.2.0): initial release — basic arithmetic (
add/sub/mul/div/exp/ln) and base conversion. - dashu-macros (0.2.0): initial release — integer and float literal macros.
crates: dashu-base, dashu-int
- dashu-base (0.1.1): GCD algorithm bug fix.
- dashu-int (0.1.1): Modular inverse;
gcd/extended_gcd. - dashu-base (0.1.0): initial release — common trait definitions.
- dashu-int (0.1.0): initial release — ported from
ibig @ 0.3.5with modifications (seeinteger/NOTICE.md).