ported legacy DoubleDouble with tests
.NET Test / .NET tests (push) Successful in 1m14s

This commit is contained in:
2026-09-13 22:19:23 +04:00
parent ec609b26f7
commit 082fd84c87
17 changed files with 2891 additions and 26 deletions
+9 -6
View File
@@ -25,8 +25,10 @@ Do not claim API completeness or accuracy beyond tested contracts.
- Use the ignored, repository-local `.hermes/` directory for plans, checklists,
investigation notes, and handoff context. Create or update notes as useful;
keep them concise and revalidate them against current files. Optional
`.hermes/project-context.md` holds setup and review background. Do not store
secrets, force-add this directory, or make builds or tests depend on it.
`.hermes/README.md` indexes active notes and `.hermes/project-context.md` holds
condensed implementation context. Treat `.hermes/archive/` as historical, not
current instructions or status. Do not store secrets, force-add this directory,
or make builds or tests depend on it.
## Working rules
@@ -67,10 +69,11 @@ Follow `.editorconfig`, not incidental style in unfinished code.
Mathematically equivalent formulas can round differently.
- State and verify algorithm preconditions, especially magnitude ordering for
quick-sum transforms, normalization assumptions, and overflow/underflow limits.
- The internal two-component `DoubleDouble` constructor currently does not normalize.
Do not assume arbitrary pairs are canonical. Establish the intended normalization,
NaN, infinity, and signed-zero contracts before changing construction, equality,
hashing, ordering, or classification; keep those operations consistent.
- The internal two-component `DoubleDouble` constructor does not normalize or
validate. Use `FromComponents` for arbitrary pairs and reserve raw construction
for proven normalized/canonical results. Preserve the documented normalization,
NaN, infinity, and signed-zero contracts across construction, equality, hashing,
ordering, and classification; do not change one in isolation.
- For affected operations, cover cancellation, widely separated magnitudes, zero
and signed zero, subnormals, extreme finite values, infinities, and NaNs. Check
intermediate overflow/underflow even when the final result is representable.