docs(doxygen): 100% public-API coverage (228 → 0 undocumented)
Completes the work begun in the previous commit on this branch. Every
public symbol under code/include/ now carries a brief Doxygen comment
(0 undocumented per scripts/doxygen-coverage.sh, with the `detail::`
implementation namespaces excluded as before).
Trajectory on this branch:
start (after Doxyfile fix): 24.0 % (165 / 437 in the no-detail set
was 105 / 437 when detail counted)
after PR #17 base commit : 42.4 % (165 / 396)
this commit : 100.0 % (396 / 396)
Files touched (all .hpp / .h headers under code/include/):
* cgal/Conformal_map_traits.h
* clausen.hpp, conformal_mesh.hpp, constants.hpp (already docd)
* cp_euclidean_functional.hpp, cut_graph.hpp, discrete_elliptic_utility.hpp
* euclidean_functional.hpp, euclidean_geometry.hpp, euclidean_hessian.hpp
* fundamental_domain.hpp, gauss_bonnet.hpp
* hyper_ideal_{functional,geometry,hessian,utility,visualization_utility}.hpp
* inversive_distance_functional.hpp, layout.hpp
* matrix_utility.hpp, mesh_builder.hpp, mesh_io.hpp
* newton_solver.hpp, p2_utility.hpp, period_matrix.hpp, projective_math.hpp
* serialization.hpp, spherical_functional.hpp, spherical_geometry.hpp
* spherical_hessian.hpp, viewer_utils.h
CI:
.gitea/workflows/doxygen-pages.yml now enforces
`scripts/doxygen-coverage.sh --threshold 100`, so any future regression
(a new public function landed without a `///` brief) fails the build
before the Doxygen HTML is published to Codeberg Pages.
Doxygen warnings remain at 0.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -54,13 +54,9 @@
|
||||
|
||||
namespace conformallab {
|
||||
|
||||
// ── Full finite-difference Hessian (baseline, Phase 4a) ──────────────────────
|
||||
//
|
||||
// Returns the n×n sparse Hessian, where n = hyper_ideal_dimension(mesh, m).
|
||||
// eps: finite-difference step size (default 1e-5 gives ~1e-10 relative error).
|
||||
//
|
||||
// Cost: n × full-gradient evaluations ≈ O(n·F). Use for small meshes or
|
||||
// as a correctness reference for the block-FD variant below.
|
||||
/// Full finite-difference HyperIdeal Hessian (baseline, Phase 4a).
|
||||
/// Cost: `n` full-gradient evaluations ≈ `O(n·F)`. Use for small
|
||||
/// meshes or as a correctness reference for the block-FD variant.
|
||||
inline Eigen::SparseMatrix<double> hyper_ideal_hessian(
|
||||
ConformalMesh& mesh,
|
||||
const std::vector<double>& x,
|
||||
@@ -96,10 +92,8 @@ inline Eigen::SparseMatrix<double> hyper_ideal_hessian(
|
||||
return H;
|
||||
}
|
||||
|
||||
// ── Symmetrised Hessian (full-FD variant) ────────────────────────────────────
|
||||
//
|
||||
// The FD Hessian is symmetric in exact arithmetic; floating-point rounding
|
||||
// can introduce tiny asymmetries. This helper returns (H + Hᵀ)/2.
|
||||
/// Symmetrised full-FD HyperIdeal Hessian: returns `(H + Hᵀ) / 2` to
|
||||
/// scrub the tiny asymmetries introduced by floating-point rounding.
|
||||
inline Eigen::SparseMatrix<double> hyper_ideal_hessian_sym(
|
||||
ConformalMesh& mesh,
|
||||
const std::vector<double>& x,
|
||||
@@ -137,6 +131,10 @@ inline Eigen::SparseMatrix<double> hyper_ideal_hessian_sym(
|
||||
// vs full-FD ≈ 99,200 → ~33× speed-up.
|
||||
// On brezel.obj (F=13824, n≈14000): 165 888 face evaluations
|
||||
// vs full-FD ≈ 193 M → ~1166× speed-up.
|
||||
/// Per-face block-FD HyperIdeal Hessian (Phase 9b). Uses the locality
|
||||
/// lemma `∂G_x/∂y = Σ_{f: x,y ∈ local(f)} ∂(β or α)/∂y` to perturb only
|
||||
/// the 6 face-local DOFs at a time, giving an `F·12` face-evaluation
|
||||
/// budget vs `n·F` for full-FD (~96× speed-up on brezel.obj).
|
||||
inline Eigen::SparseMatrix<double> hyper_ideal_hessian_block_fd(
|
||||
ConformalMesh& mesh,
|
||||
const std::vector<double>& x,
|
||||
@@ -213,11 +211,9 @@ inline Eigen::SparseMatrix<double> hyper_ideal_hessian_block_fd(
|
||||
return H;
|
||||
}
|
||||
|
||||
// ── Symmetrised block-FD Hessian ─────────────────────────────────────────────
|
||||
//
|
||||
// The per-face block is symmetric to within FD rounding, but the
|
||||
// accumulation may amplify tiny asymmetries. This helper returns
|
||||
// (H + Hᵀ)/2, identical in spirit to `hyper_ideal_hessian_sym`.
|
||||
/// Symmetrised block-FD HyperIdeal Hessian: returns `(H + Hᵀ) / 2` of
|
||||
/// `hyper_ideal_hessian_block_fd(...)` for downstream solvers that
|
||||
/// require strict symmetry.
|
||||
inline Eigen::SparseMatrix<double> hyper_ideal_hessian_block_fd_sym(
|
||||
ConformalMesh& mesh,
|
||||
const std::vector<double>& x,
|
||||
|
||||
Reference in New Issue
Block a user