From 46e52816a917dfd93c8adb5e0435a8d7fc96274e Mon Sep 17 00:00:00 2001 From: Susi Lehtola Date: Sat, 29 Aug 2026 18:29:20 +0300 Subject: [PATCH] Make every header self-contained None of the library headers could be relied upon to compile on their own; they worked only when something else had already pulled in the standard headers they use. Compiling each non-data header in isolation produced eight hard failures: * spherical_micro_batcher.hpp calls std::any_of, std::minmax_element, std::partition, std::sort, std::unique and std::set_union without . * product_quadrature.hpp declares std::unique_ptr members without , so the class had no members at all when compiled alone. This cascaded into spherical_quadrature.hpp, pruned_spherical_quadrature.hpp and the batcher. * util/create_array.hpp uses std::array and std::index_sequence, util/copy_grid.hpp uses std::copy, util/legendre.hpp uses size_t, and util/bound_transform.hpp uses assert and std::tuple, none of them declared. Separately, was not included anywhere in the library, although std::cos, std::sin, std::sqrt, std::pow, std::log and std::abs are used throughout and M_PI appears in nine places. The two Newton solvers also use std::numeric_limits and std::runtime_error without or . Add the includes each header actually needs. Also qualify the one unqualified cos() call in gausslobatto.hpp: is not required to place names in the global namespace, so it only resolved because happened to be reachable. Every non-data header now compiles standalone. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01FDTFYJMQ76iujDFNHzZyXF --- include/integratorxx/batch/spherical_micro_batcher.hpp | 8 ++++++++ .../composite_quadratures/product_quadrature.hpp | 2 ++ .../composite_quadratures/pruned_spherical_quadrature.hpp | 3 +++ .../composite_quadratures/spherical_quadrature.hpp | 1 + .../integratorxx/composite_quadratures/sub_quadrature.hpp | 2 ++ include/integratorxx/quadrature.hpp | 1 + .../quadratures/primitive/gausschebyshev1.hpp | 1 + .../quadratures/primitive/gausschebyshev2.hpp | 1 + .../quadratures/primitive/gausschebyshev2modified.hpp | 1 + .../quadratures/primitive/gausschebyshev3.hpp | 1 + .../integratorxx/quadratures/primitive/gausslegendre.hpp | 4 ++++ .../integratorxx/quadratures/primitive/gausslobatto.hpp | 6 +++++- include/integratorxx/quadratures/radial/becke.hpp | 1 + include/integratorxx/quadratures/radial/mhl.hpp | 1 + include/integratorxx/quadratures/radial/muraknowles.hpp | 1 + .../integratorxx/quadratures/radial/radial_transform.hpp | 2 ++ .../integratorxx/quadratures/radial/treutlerahlrichs.hpp | 1 + include/integratorxx/quadratures/s2/ahrens_beylkin.hpp | 1 + include/integratorxx/quadratures/s2/delley.hpp | 1 + include/integratorxx/quadratures/s2/lebedev_laikov.hpp | 1 + include/integratorxx/quadratures/s2/womersley.hpp | 1 + include/integratorxx/util/bound_transform.hpp | 2 ++ include/integratorxx/util/copy_grid.hpp | 1 + include/integratorxx/util/create_array.hpp | 3 +++ include/integratorxx/util/legendre.hpp | 1 + 25 files changed, 47 insertions(+), 1 deletion(-) diff --git a/include/integratorxx/batch/spherical_micro_batcher.hpp b/include/integratorxx/batch/spherical_micro_batcher.hpp index 03c848b..415b747 100644 --- a/include/integratorxx/batch/spherical_micro_batcher.hpp +++ b/include/integratorxx/batch/spherical_micro_batcher.hpp @@ -7,6 +7,14 @@ #include #include #include +#include +#include +#include +#include +#include +#include +#include +#include namespace IntegratorXX { diff --git a/include/integratorxx/composite_quadratures/product_quadrature.hpp b/include/integratorxx/composite_quadratures/product_quadrature.hpp index 4268570..fce6ebc 100644 --- a/include/integratorxx/composite_quadratures/product_quadrature.hpp +++ b/include/integratorxx/composite_quadratures/product_quadrature.hpp @@ -1,6 +1,8 @@ #pragma once #include +#include +#include namespace IntegratorXX { diff --git a/include/integratorxx/composite_quadratures/pruned_spherical_quadrature.hpp b/include/integratorxx/composite_quadratures/pruned_spherical_quadrature.hpp index d90305f..e642ab7 100644 --- a/include/integratorxx/composite_quadratures/pruned_spherical_quadrature.hpp +++ b/include/integratorxx/composite_quadratures/pruned_spherical_quadrature.hpp @@ -6,6 +6,9 @@ #include #include +#include +#include +#include namespace IntegratorXX { diff --git a/include/integratorxx/composite_quadratures/spherical_quadrature.hpp b/include/integratorxx/composite_quadratures/spherical_quadrature.hpp index e26bf91..09ef168 100644 --- a/include/integratorxx/composite_quadratures/spherical_quadrature.hpp +++ b/include/integratorxx/composite_quadratures/spherical_quadrature.hpp @@ -3,6 +3,7 @@ #include #include #include +#include namespace IntegratorXX { diff --git a/include/integratorxx/composite_quadratures/sub_quadrature.hpp b/include/integratorxx/composite_quadratures/sub_quadrature.hpp index 15809a4..0f35375 100644 --- a/include/integratorxx/composite_quadratures/sub_quadrature.hpp +++ b/include/integratorxx/composite_quadratures/sub_quadrature.hpp @@ -2,6 +2,8 @@ #include #include +#include +#include namespace IntegratorXX { diff --git a/include/integratorxx/quadrature.hpp b/include/integratorxx/quadrature.hpp index 151992f..32487bf 100644 --- a/include/integratorxx/quadrature.hpp +++ b/include/integratorxx/quadrature.hpp @@ -4,6 +4,7 @@ #include #include #include +#include #include namespace IntegratorXX { diff --git a/include/integratorxx/quadratures/primitive/gausschebyshev1.hpp b/include/integratorxx/quadratures/primitive/gausschebyshev1.hpp index 2006c38..9b538aa 100644 --- a/include/integratorxx/quadratures/primitive/gausschebyshev1.hpp +++ b/include/integratorxx/quadratures/primitive/gausschebyshev1.hpp @@ -2,6 +2,7 @@ #include #include +#include namespace IntegratorXX { diff --git a/include/integratorxx/quadratures/primitive/gausschebyshev2.hpp b/include/integratorxx/quadratures/primitive/gausschebyshev2.hpp index 4e772b8..ef64afe 100644 --- a/include/integratorxx/quadratures/primitive/gausschebyshev2.hpp +++ b/include/integratorxx/quadratures/primitive/gausschebyshev2.hpp @@ -2,6 +2,7 @@ #include #include +#include namespace IntegratorXX { diff --git a/include/integratorxx/quadratures/primitive/gausschebyshev2modified.hpp b/include/integratorxx/quadratures/primitive/gausschebyshev2modified.hpp index eb0c96a..83c8c17 100644 --- a/include/integratorxx/quadratures/primitive/gausschebyshev2modified.hpp +++ b/include/integratorxx/quadratures/primitive/gausschebyshev2modified.hpp @@ -2,6 +2,7 @@ #include #include +#include namespace IntegratorXX { diff --git a/include/integratorxx/quadratures/primitive/gausschebyshev3.hpp b/include/integratorxx/quadratures/primitive/gausschebyshev3.hpp index 2ab040e..39a8034 100644 --- a/include/integratorxx/quadratures/primitive/gausschebyshev3.hpp +++ b/include/integratorxx/quadratures/primitive/gausschebyshev3.hpp @@ -2,6 +2,7 @@ #include #include +#include namespace IntegratorXX { diff --git a/include/integratorxx/quadratures/primitive/gausslegendre.hpp b/include/integratorxx/quadratures/primitive/gausslegendre.hpp index a5ea0d0..755c305 100644 --- a/include/integratorxx/quadratures/primitive/gausslegendre.hpp +++ b/include/integratorxx/quadratures/primitive/gausslegendre.hpp @@ -3,6 +3,10 @@ #include #include #include +#include +#include +#include +#include namespace IntegratorXX { diff --git a/include/integratorxx/quadratures/primitive/gausslobatto.hpp b/include/integratorxx/quadratures/primitive/gausslobatto.hpp index 49a510d..830e83d 100644 --- a/include/integratorxx/quadratures/primitive/gausslobatto.hpp +++ b/include/integratorxx/quadratures/primitive/gausslobatto.hpp @@ -3,6 +3,10 @@ #include #include #include +#include +#include +#include +#include namespace IntegratorXX { @@ -47,7 +51,7 @@ struct quadrature_traits> { for(size_t idx = 1; idx < mid; ++idx) { // Initial guess const point_type i = static_cast(npts - 1 - idx); - point_type z = cos (i * M_PI / ( npts - 1.0)); + point_type z = std::cos(i * M_PI / (npts - 1.0)); // Old value of root point_type z_old = -2.0; diff --git a/include/integratorxx/quadratures/radial/becke.hpp b/include/integratorxx/quadratures/radial/becke.hpp index 68a88ad..a8e1b6e 100644 --- a/include/integratorxx/quadratures/radial/becke.hpp +++ b/include/integratorxx/quadratures/radial/becke.hpp @@ -2,6 +2,7 @@ #include #include +#include namespace IntegratorXX { diff --git a/include/integratorxx/quadratures/radial/mhl.hpp b/include/integratorxx/quadratures/radial/mhl.hpp index 23eb6b6..ec7cd60 100644 --- a/include/integratorxx/quadratures/radial/mhl.hpp +++ b/include/integratorxx/quadratures/radial/mhl.hpp @@ -2,6 +2,7 @@ #include #include +#include namespace IntegratorXX { diff --git a/include/integratorxx/quadratures/radial/muraknowles.hpp b/include/integratorxx/quadratures/radial/muraknowles.hpp index 883ccb2..70c40cd 100644 --- a/include/integratorxx/quadratures/radial/muraknowles.hpp +++ b/include/integratorxx/quadratures/radial/muraknowles.hpp @@ -3,6 +3,7 @@ #include #include #include +#include namespace IntegratorXX { diff --git a/include/integratorxx/quadratures/radial/radial_transform.hpp b/include/integratorxx/quadratures/radial/radial_transform.hpp index 89257ef..f3ab6fc 100644 --- a/include/integratorxx/quadratures/radial/radial_transform.hpp +++ b/include/integratorxx/quadratures/radial/radial_transform.hpp @@ -1,6 +1,8 @@ #pragma once #include +#include +#include #include diff --git a/include/integratorxx/quadratures/radial/treutlerahlrichs.hpp b/include/integratorxx/quadratures/radial/treutlerahlrichs.hpp index 43e141d..c6ca3ea 100644 --- a/include/integratorxx/quadratures/radial/treutlerahlrichs.hpp +++ b/include/integratorxx/quadratures/radial/treutlerahlrichs.hpp @@ -2,6 +2,7 @@ #include #include +#include namespace IntegratorXX { diff --git a/include/integratorxx/quadratures/s2/ahrens_beylkin.hpp b/include/integratorxx/quadratures/s2/ahrens_beylkin.hpp index bf83484..248710d 100644 --- a/include/integratorxx/quadratures/s2/ahrens_beylkin.hpp +++ b/include/integratorxx/quadratures/s2/ahrens_beylkin.hpp @@ -4,6 +4,7 @@ #include #include #include +#include namespace IntegratorXX { diff --git a/include/integratorxx/quadratures/s2/delley.hpp b/include/integratorxx/quadratures/s2/delley.hpp index bbb58e8..f440904 100644 --- a/include/integratorxx/quadratures/s2/delley.hpp +++ b/include/integratorxx/quadratures/s2/delley.hpp @@ -4,6 +4,7 @@ #include #include #include +#include namespace IntegratorXX { diff --git a/include/integratorxx/quadratures/s2/lebedev_laikov.hpp b/include/integratorxx/quadratures/s2/lebedev_laikov.hpp index 6d5adb6..290917e 100644 --- a/include/integratorxx/quadratures/s2/lebedev_laikov.hpp +++ b/include/integratorxx/quadratures/s2/lebedev_laikov.hpp @@ -4,6 +4,7 @@ #include #include #include +#include namespace IntegratorXX { diff --git a/include/integratorxx/quadratures/s2/womersley.hpp b/include/integratorxx/quadratures/s2/womersley.hpp index 6394f9d..b0a6315 100644 --- a/include/integratorxx/quadratures/s2/womersley.hpp +++ b/include/integratorxx/quadratures/s2/womersley.hpp @@ -5,6 +5,7 @@ #include #include #include +#include namespace IntegratorXX { diff --git a/include/integratorxx/util/bound_transform.hpp b/include/integratorxx/util/bound_transform.hpp index dcf4ecd..70df78e 100644 --- a/include/integratorxx/util/bound_transform.hpp +++ b/include/integratorxx/util/bound_transform.hpp @@ -1,4 +1,6 @@ #pragma once +#include +#include #include diff --git a/include/integratorxx/util/copy_grid.hpp b/include/integratorxx/util/copy_grid.hpp index 9d670c8..0287b63 100644 --- a/include/integratorxx/util/copy_grid.hpp +++ b/include/integratorxx/util/copy_grid.hpp @@ -1,4 +1,5 @@ #pragma once +#include namespace IntegratorXX { diff --git a/include/integratorxx/util/create_array.hpp b/include/integratorxx/util/create_array.hpp index f853964..64fb114 100644 --- a/include/integratorxx/util/create_array.hpp +++ b/include/integratorxx/util/create_array.hpp @@ -1,4 +1,7 @@ #pragma once +#include +#include +#include namespace IntegratorXX { diff --git a/include/integratorxx/util/legendre.hpp b/include/integratorxx/util/legendre.hpp index 3ad4615..13b376a 100644 --- a/include/integratorxx/util/legendre.hpp +++ b/include/integratorxx/util/legendre.hpp @@ -1,4 +1,5 @@ #pragma once +#include #include namespace IntegratorXX {