Releases: stillwater-sc/universal
Releases · stillwater-sc/universal
Universal v4.7.1
[4.7.1] - 2026-05-27
Added
- elreal: Phase A foundation -- type skeleton and refinement protocol by @Ravenwater
- elreal: Phase B -- rational and string construction with lazy refinement (#884) by @Ravenwater
- elreal: Phase C -- ring operations with depth-1 EFT refinement (#885) by @Ravenwater
- elreal: Phase D -- sign, compare, ordering with refinement budget (#886) by @Ravenwater
- elreal: Phase E.1 -- math constants as 4-component static expansions (#893) by @Ravenwater
- elreal: Phase E.2 -- sqrt + hypot with depth-1 EFT refinement on sqrt (#894) by @Ravenwater
- elreal: Phase E.3 -- exp/log/pow family with depth-1 derivative refinement (#895) by @Ravenwater
- elreal: Phase E.4 -- hyperbolic family with depth-1 derivative refinement (#896) by @Ravenwater
- elreal: Phase E.5 -- inverse trig family with depth-1 derivative refinement (#897) by @Ravenwater
- elreal: Phase E.6 -- forward trig (sin/cos/tan) with derivative refinement (#898) by @Ravenwater
- elreal: Phase F -- geometric predicates via lazy real arithmetic (#899) by @Ravenwater
- elreal: Phase G -- elreal as a cross-implementation validation oracle (#900) by @Ravenwater
- constants: High-precision (~320-digit) reference string constants (#915) by @Ravenwater
- elreal: Phase 1 -- block representation (#934) by @Ravenwater
- elreal: Phase 2 -- ZBCL lazy co-list (#935) by @Ravenwater
- elreal: Phase 3 -- block-level error-free transforms (#936) by @Ravenwater
- ereal: Expand addition.cpp corner-case coverage across LEVEL 1-4 (#958) by @Ravenwater
- elreal: Phase 4 -- bit-perfect McCleeary threeAdd + add() (#940) by @Ravenwater
- ereal: Refactor subtraction.cpp to standard test pattern (#963) by @Ravenwater
- ereal: Refactor multiplication.cpp to standard test pattern (#965) by @Ravenwater
- ereal: Refactor division.cpp to standard test pattern (#969) by @Ravenwater
- ereal: Rename identities.cpp -> algebraic_identities.cpp, standardize (#971) by @Ravenwater
- ereal: Refactor math/constants/ tests to standard pattern (#972) by @Ravenwater
- ereal: Refactor maxlimbs_threshold.cpp + wire into build (#973) by @Ravenwater
- ereal: Standardize math/functions classify/numerics/truncate/minmax/next (#950 cat 1) (#974) by @Ravenwater
- ereal: Standardize + property coverage for math/functions exp/log (#950 cat 2) (#975) by @Ravenwater
- ereal: Standardize + property coverage for math/functions trig/hyperbolic (#950 cat 3) (#976) by @Ravenwater
- ereal: Standardize + property coverage for math/functions pow/sqrt/hypot (#950 cat 4) (#977) by @Ravenwater
- ereal: Standardize math/functions fractional/error_gamma + smoke (#950 cat 5, final) (#978) by @Ravenwater
- ereal: Verify conversion/geometry single-operator scope (#979) by @Ravenwater
- ereal: Audit api/ -- classify demos vs tests, refactor + ASCII (#980) by @Ravenwater
- ereal: Add Priest normal-form structural oracle (#954 D1) (#983) by @Ravenwater
- ereal: Precision-lifting self-oracle (#954 D2) (#984) by @Ravenwater
- ereal: Structural stress test + Priest-normal fuzz retrofit (#954 D3) (#985) by @Ravenwater
- internal: EFT primitive exactness proof (#988, #987 Layer 1) (#994) by @Ravenwater
- ereal: Independent exact-value oracle -- keystone (#989, #987 Layer 2) (#995) by @Ravenwater
- bfloat16: Add ldexp/frexp/scalbn/logb/ilogb exponent functions (#1015) by @Ravenwater
CI/CD
- Allow elreal scope in conventional-commits PR title check by @Ravenwater
- cmake: Gate ccache save to main + set max-size to stop PR-run eviction (#1010) by @Ravenwater
Changed
- elreal: Back out for McCleeary LFPERA rewrite (#922) by @Ravenwater
- internal: Standardize internal/expansion regression tests + pedagogical api.cpp (#1000) by @Ravenwater
Documentation
- Add Algorithmic Details section (LNS add/sub, multi-component) by @Ravenwater
- algorithmic-details: Correct multi-component validation strategy by @Ravenwater
- algorithmic-details: Correct fabricated API claims after audit by @Ravenwater
- elreal: Phase H -- user-facing reference, algorithmic deep-dive, ELREALO retirement (#901) by @Ravenwater
- internal: Shewchuk/Priest conformance audit + citation fixes (#990, #987 Layer 3) (#996) by @Ravenwater
- internal: EFT operator diagrams + testing reference (#997) by @Ravenwater
Fixed
- Streamlining the last long running AuxReal bisection test by @Ravenwater
- elreal: Numeric_limits self-includes elreal_impl; denorm_min == min() by @Ravenwater
- elreal: Rename _inline member to _inl_buf for MSVC compatibility (#919) by @Ravenwater
- ereal: Enhance constant print info (#924) by @Ravenwater
- cfloat: Work around clang miscompile in to_native (#938) by @Ravenwater
- ereal: Improve regression tests for ereal (#943) by @Ravenwater
- ereal: Apply IEEE 754 rules for Inf/NaN in operator+= / operator-= (#960) by @Ravenwater
- ereal: Port Priest canonical renormalize to fix associativity (#961) by @Ravenwater
- ereal: IEEE 754 signed-zero subtraction (#964) by @Ravenwater
- ereal: IEEE 754 special values for multiplication (#967) by @Ravenwater
- ereal: IEEE 754 division-by-zero + special values (#970) by @Ravenwater
- ereal: Renormalize expansion_product output to Priest canonical form (#982) by @Ravenwater
- einteger: Correct multiply carry propagation + shift canonicalization (#992) by @Ravenwater
- erational: Correct ieee754 conversion (both directions) + add tests (#993) by @Ravenwater
- ereal: Fixing expansion ops api demo by @Ravenwater
- ereal: Stop ereal regression tests from running for hours in CI (#1001) by @Ravenwater
- ereal: UBSan signed-overflow in check_priest_normal on non-finite limbs (#1003) by @Ravenwater
- ereal: Checking exponent regression test by @Ravenwater
- ereal: Deliver extended precision in mathlib transcendentals (#1004) by @Ravenwater
- ereal: Parse high-precision decimals without precision loss or NaN (#1011) by @Ravenwater
- internal: Correct inverted is_nonoverlapping expansion predicate (#1012) by @Ravenwater
- qd: Correct qd_pi_3 constant (was pi/2) and make the constants test enforce (#1014) by @Ravenwater
Performance
- elreal: Phase I -- throughput baseline and elreal-vs-ereal crossover (#902) by @Ravenwater
- elreal: Phase K.1 -- small-buffer optimisation on _components ([#9...
Universal v4.7.0
[4.7.0] - 2026-05-19
Added
- lns: CORDIC hyperbolic add/sub policy (Phase E of #777) (#836) by @Ravenwater
- lns: Novel Cotransformation Combination policy (Phase F of #777) (#837) by @Ravenwater
- utility: Constexpr string-parse primitives (Phase A of #835) (#838) by @Ravenwater
- integer, fixpnt: Migrate/implement parse() onto string_parse (Phase B1 of #835) (#839) by @Ravenwater
- utility: High-precision decimal-to-binary converter (Phase B2a of #835) (#841) by @Ravenwater
- posit: Route decimal string parse through decimal_to_binary (Phase B2b of #835) (#843) by @Ravenwater
- cfloat: Route decimal string parse through decimal_to_binary (Phase B2c of #835) (#846) by @Ravenwater
- API parity for decimal string parse in extended-precision FP family (Phase C of #835) (#847) by @Ravenwater
- API parity / implementation for decimal string parse in specialized FP (Phase D of #835) (#850) by @Ravenwater
- Exact d2b-based decimal parse via distillation for dd, qd, floatcascade (#851) by @Ravenwater
- Operator>> hygiene + ereal nan/inf for decimal/elastic family (Phase E of #835) (#858) by @Ravenwater
- hfloat: Implement parse() for decimal string input (#859) by @Ravenwater
- dfloat: Comprehensive parse coverage across BID and DPD (#860) by @Ravenwater
- einteger: Complete binary/octal parse + setbyte + reduce sign fix (#863) by @Ravenwater
- edecimal: Extend parse to decimal-point and scientific notation (#865) by @Ravenwater
- erational: Extend parse to p/q, decimal, and scientific notation (#866) by @Ravenwater
- efloat: Implement parse() for decimal and scientific literals (#867) by @Ravenwater
CI/CD
- codeql: Drop pull_request trigger, switch c-cpp to manual CI_LITE build (#845) by @Ravenwater
Fixed
- einteger: Correct borrow propagation in Knuth Algorithm D step D4 (#861) by @Ravenwater
- einteger: Operator>>= leaves spurious limb past the shift boundary (#864) by @Ravenwater
- ereal: Reject trailing garbage in parse + comprehensive test coverage (#868) by @Ravenwater
- hfloat: Parse() for hfp128 yields correct values by @Ravenwater
- hfloat: Parse() delivers full fbits precision via d2b by @Ravenwater
- hfloat: To_hex / components support wide configs (no truncation) by @Ravenwater
- hfloat: Maxpos / maxneg / minpos / minneg correct for fbits >= 64 by @Ravenwater
- dfloat/api: Replace strstream + fix round-trip test by @Ravenwater
Miscellaneous
- deps: Bump devalue from 5.6.4 to 5.8.1 in /docs-site (#834) by @dependabot[bot]
- hfloat: Address CodeRabbit review nits by @Ravenwater
- hfloat: Align multi-line hex print in api.cpp (CodeRabbit nit) by @Ravenwater
Testing
- utility: Adopt canonical ReportTestSuite pattern for string_parse foundation test (#840) by @Ravenwater
Universal v4.6.16
[4.6.16] - 2026-05-13
Added
- zfpblock: Full constexpr promotion of ZFP transform codec (#830) by @Ravenwater
- zfpblock: Full constexpr promotion of zfparray multi-block container (#831) by @Ravenwater
Documentation
- Wrapup 2026-05-10 -- elastic-types partial-constexpr cascade by @Ravenwater
- Wrapup 2026-05-13 -- zfpblock constexpr completion + Epic #723 closed by @Ravenwater
Fixed
- posit: Replace flaky random division test with targeted bit-pattern tests (#833) by @Ravenwater
Miscellaneous
- deps: Bump astro from 6.1.8 to 6.3.2 in /docs-site (#832) by @dependabot[bot]
Universal v4.6.15
[4.6.15] - 2026-05-11
Added
- takum: Full constexpr support across all operators (#817) by @Ravenwater
- unum: Partial constexpr support (construction + bitwise) (#820) by @Ravenwater
- valid: Partial constexpr support (API surface) (#821) by @Ravenwater
- unum1: Full constexpr support across remaining surface (#822) by @Ravenwater
- edecimal: Partial constexpr support (API surface) (#824) by @Ravenwater
- efloat: Partial constexpr support (API surface) (#825) by @Ravenwater
- einteger: Partial constexpr support (API surface) (#826) by @Ravenwater
- erational: Partial constexpr support (API surface) (#827) by @Ravenwater
- ereal: Partial constexpr support (API surface) (#828) by @Ravenwater
Universal v4.6.14
[4.6.14] - 2026-05-05
Added
- e8m0: Full constexpr support across all operators (#810) by @Ravenwater
- microfloat: Full constexpr support across all operators (#811) by @Ravenwater
- mxfloat: Full constexpr support across all operators (#812) by @Ravenwater
- nvblock: Full constexpr support across all operators (#813) by @Ravenwater
- Partial constexpr support for accessor subset(zfpblock) (#814) by @Ravenwater
Documentation
- Wrapup 2026-05-05 -- OCP/NVIDIA block-format constexpr chain by @Ravenwater
Universal v4.6.13
[4.6.13] - 2026-05-04
Added
- areal: Full constexpr support across all operators (#792) by @Ravenwater
- dbns: Full constexpr support across all operators (#795) by @Ravenwater
- dd: Full constexpr support across all operators (#796) by @Ravenwater
- dd_cascade: Full constexpr support across all operators (#797) by @Ravenwater
- td_cascade: Full constexpr support across all operators (#798) by @Ravenwater
- qd_cascade: Full constexpr support across all operators (#799) by @Ravenwater
- qd: Full constexpr support across all operators (#800) by @Ravenwater
- dfixpnt: Full constexpr support across all operators (#803) by @Ravenwater
- dfloat: Full constexpr support across all operators (#805) by @Ravenwater
- hfloat: Full constexpr support across all operators (#806) by @Ravenwater
CI/CD
- Force Node.js 24 for JavaScript actions in all workflows (#790) by @Ravenwater
Documentation
- Changelog entry + session log for 2026-05-04 by @Ravenwater
Fixed
- lns: Correcting the LNS paper references (#794) by @Ravenwater
- dfixpnt: Handle ndigits >= 20 overflow in to_int64 and operator=(double) (#807) by @Ravenwater
- qd: To_digits robust to non-canonical limbs (qd/dd/floatcascade) (#808) by @Ravenwater
Universal v4.6.12
[4.6.12] - 2026-04-28
Added
- lns: Scaffolding for configurable add/sub algorithms (Phase A of #777) (#784) by @Ravenwater
- lns: Mitchell-style LookupAddSub algorithm (Phase B of #777) (#785) by @Ravenwater
- lns: Polynomial and ArnoldBailey add/sub algorithms (Phase C of #777) (#786) by @Ravenwater
- lns: Benchmark suite + design doc for add/sub algorithms (Phase D of #777) (#787) by @Ravenwater
Documentation
- lns: Introduce a 4-page LNS section (#789) by @Ravenwater
- Introduce sb_add / sb_sub naming convention (#791) by @Ravenwater
Fixed
- tools: Code hygiene for MSVC (bigobj, narrowing, ASCII docs, posit if-constexpr) (#778) by @Ravenwater
- integer: Implement WholeNumber/NaturalNumber operator-= (#779) by @Ravenwater
- lns: Per-algorithm tolerance for add/sub regression suite (#788) by @Ravenwater
Universal v4.6.11
[4.6.11] - 2026-04-26
Added
- bfloat16: Full constexpr support across all operators (#751) by @Ravenwater
- internal: Promote blocktriple and blocksignificand arithmetic to constexpr (#753) by @Ravenwater
- posit: Full constexpr arithmetic, comparison, and conversion-out (#755) by @Ravenwater
- cfloat: Full constexpr arithmetic, comparison, and conversion-out (#756) by @Ravenwater
- integer: Full constexpr arithmetic, comparison, shifts, conversions (#757) by @Ravenwater
- internal: Blockbinary mul/div/mod constexpr foundation (#760) by @Ravenwater
- fixpnt: Full constexpr arithmetic, comparison, shifts, conversions (#761) by @Ravenwater
- math: Add sw::math::constexpr_math facility with constexpr log2 (#762) by @Ravenwater
- math: Add constexpr exp2 to sw::math::constexpr_math (#769) by @Ravenwater
- math: Add constexpr log (natural logarithm) to sw::math::constexpr_math (#771) by @Ravenwater
- math: Add constexpr pow to sw::math::constexpr_math (#770) by @Ravenwater
- math: Add constexpr sqrt to sw::math::constexpr_math (#772) by @Ravenwater
- math: Add constexpr exp (natural exponential) to sw::math::constexpr_math (#775) by @Ravenwater
- lns: Full constexpr support across all operators (#776) by @Ravenwater
Miscellaneous
- deps: Bump postcss from 8.5.6 to 8.5.10 in /docs-site (#754) by @dependabot[bot]
Testing
- math: Harden pow signed-zero and special-value test checks (CodeRabbit) (#773) by @Ravenwater
Universal v4.6.10
[4.6.10] - 2026-04-24
Added
- posit: Enable constexpr integer construction (Phase 1 of #713) (#714) by @Ravenwater
- blockbinary: Promote arithmetic operators to constexpr (PR 2 of #713) (#716) by @Ravenwater
- posit: Enable constexpr IEEE-754 construction (Phase 2 of #713) (#717) by @Ravenwater
Miscellaneous
- deps: Bump astro and @astrojs/starlight in /docs-site (#712) by @dependabot[bot]
Universal v4.6.9
[4.6.9] - 2026-04-17
Added
- bisection: Core template class with encode/decode by @Ravenwater
- tools: Pre-built generators for known number systems by @Ravenwater
- tools: Bisection arithmetic operators and math functions by @Ravenwater
- tools: Add standalone bisection CLI REPL (#701) by @Ravenwater
- bisection: Template AuxReal for high-precision interval bisection (#703) by @Ravenwater
- bisection: Validation suite and documentation (#705) by @Ravenwater
- bisection: Promote storage to blockbinary for nbits > 64 (#706) by @Ravenwater
- edecimal: Adding an performance test (#707) by @Ravenwater
CI/CD
- Allow 'bisection' as a conventional commit scope (#702) by @Ravenwater
Changed
- docs-site: Make src/content/docs/ 100% generated by @Ravenwater
Documentation
- Changelog and session log for 2026-03-30/31 by @Ravenwater
- Update docs-site README for 100% generated workflow by @Ravenwater
- Update Docker quick start for current tooling by @Ravenwater
- Analysis of Lindstrom's bisection coding framework by @Ravenwater
Fixed
- docker: Multi-stage build and security hardening by @Ravenwater
- bisection: Sign-extend encode output and fix negation test by @Ravenwater
- bisection: Address CodeRabbit review items for PR #694 by @Ravenwater
- tools: Tighten LNSGenerator static_assert to m <= 6 by @Ravenwater
- tools: Address CodeRabbit review items for bisection generators by @Ravenwater
- tools: Add missing include and document golden ratio refinement by @Ravenwater
- ci: Replace exhaustive C API shim tests with focused API coverage by @Ravenwater
- ci: Use double instead of long double for posit128/256 API tests by @Ravenwater
- ci: Use fromd/told API consistently for POWER/ARM/RISC-V compat by @Ravenwater
- ci: Make special-value tests self-checking with NAR propagation by @Ravenwater
- ci: Add non-zero reinterpret tests for posit64/128/256 by @Ravenwater
- tools: Address CodeRabbit review for bisection arithmetic tests by @Ravenwater
- tools: Correct NaN comparison in arithmetic verification by @Ravenwater
- tools: Include division-by-zero in arithmetic verification by @Ravenwater
- cmake: Clean up stale install config and orphan files (#709) by @Ravenwater
- tools: Guard header include for MSVC without /Zc:__cplusplus (#711) by @Ravenwater
Miscellaneous
- Retrigger CI after PR title fix by @Ravenwater
- Remove all tracked files from generated content directory by @Ravenwater
- docs: Clean command removes all generated artifacts by @Ravenwater
- ci: Bump ccache-action to v1.2.22 and force Node.js 24 by @Ravenwater
- deps: Bump defu from 6.1.4 to 6.1.6 in /docs-site by @dependabot[bot]
- deps: Bump vite from 6.4.1 to 6.4.2 in /docs-site by @dependabot[bot]