docs: note high-precision requirement for Phase 9c/10 uniformization
Some checks failed
C++ Tests / test-fast (pull_request) Successful in 2m0s
API Docs / doc-build (pull_request) Successful in 53s
Markdown link check / check (pull_request) Successful in 54s
C++ Tests / test-cgal (pull_request) Has been skipped
C++ Tests / quality-gates (pull_request) Failing after 2m14s
Some checks failed
C++ Tests / test-fast (pull_request) Successful in 2m0s
API Docs / doc-build (pull_request) Successful in 53s
Markdown link check / check (pull_request) Successful in 54s
C++ Tests / test-cgal (pull_request) Has been skipped
C++ Tests / quality-gates (pull_request) Failing after 2m14s
The Java uniformization classes (FundamentalPolygonUtility, CanonicalFormUtility) rely on the *Big arbitrary-precision geometry (MathContext(50)) because products of hyperbolic isometry generators grow exponentially and double fails to verify the group relation ∏gᵢ = Id. Record this planning-relevant prerequisite and resolve the contradiction in java-parity.md, which previously listed *Big as permanently out of scope. - CLAUDE.md: † note on the Phase-9 not-yet-ported table - java-parity.md: *Big exception (localized high-precision substrate for 9c/10) - phases.md: precision prerequisite as 9c sub-task + effort estimate - design-decisions.md: new "Scalar type: double, with one localized exception" Core flattening (Newton/energy/Eigen solver) stays double; the substrate (cpp_dec_float_50 / mpreal) is localized to the uniformization module only. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -89,7 +89,16 @@ items were unrecorded and have now been added above:
|
||||
Everything else unmentioned is intentionally out of scope: the `plugin/*` jReality
|
||||
Swing GUI, the `MTJ*`/`Tao*`/`*PETSc` solver bindings (replaced by Eigen), the
|
||||
convergence/`*Series` test harness, and the `*Big` arbitrary-precision geometry
|
||||
(`P2Big`/`PnBig`/`RnBig` — deliberately dropped in favour of `Simple_cartesian<double>`).
|
||||
(`P2Big`/`PnBig`/`RnBig` — deliberately dropped from the core in favour of `Simple_cartesian<double>`).
|
||||
|
||||
> **Exception — `*Big` is NOT permanently out of scope.** The Phase 9c/10 uniformization
|
||||
> classes (`FundamentalPolygonUtility`, `CanonicalFormUtility`, rows 55–56 above) build on
|
||||
> the `*Big` classes in Java for a reason: products of hyperbolic isometry generators grow
|
||||
> exponentially, so `double` fails when verifying the group relation ∏gᵢ = Id (`MathContext(50)`
|
||||
> = 50 significant digits in Java). When those classes are ported, a localized high-precision
|
||||
> substrate (`boost::multiprecision::cpp_dec_float_50` or MPFR `mpreal`) must be reintroduced —
|
||||
> **only inside the uniformization module**, not in the core flattening or the Eigen solver.
|
||||
> See the Phase-9 note in `CLAUDE.md`.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user