Add new bisect_failures template function to help identify minimal failing
test cases from complex input data. The utility uses a bisection-like approach
to iteratively simplify data and locate the smallest subset that causes failures.
Features:
- Handles multiple failure types: CGAL exceptions, std::exceptions, exit codes
- Automatic ratio adjustment (starts at 0.5, halves when no fault found)
- Saves intermediate states for debugging (current, bad, error, final_bad)
- Comprehensive test suite with 14 tests covering all combinations:
* Edge cases (empty data, no failures)
* Single element failures (each failure type independently)
* Pair combinations (all 2-element permutations)
* Triple combinations (all 3 failure types together)
* Large datasets (up to 200 elements)
The test suite demonstrates complete combinatorial coverage of three
independent failure conditions and validates the algorithm's ability to
isolate minimal failing cases.
All tests pass in both Debug and Release configurations.
## Summary of Changes
The testsuite of
[Triangulation](https://cgal.geometryfactory.com/CGAL/testsuite/summary-6.1-Ic-159.html?package=Triangulation)
has N's for some platforms. The test platforms have in common to use
boost_1_88_0, but with VC++ or clang on Windows I can't reproduce the
error with this version of boost.
In this PR I use the filter_iterator adaptor of CGAL, to see if the
boost filter_iterator is the problem.
## Release Management
* Affected package(s): Triangulation
* License and copyright ownership: unchanged
## Summary of Changes
Add a new package computing the approximate Fréchet distance between two
polylines in dD under Euclidean metric, or decides if the distance is
smaller than a given value.
## Release Management
* Affected package(s): Frechet_distance
* Feature (if any):
[link](https://cgal.geometryfactory.com/CGAL/Members/wiki/Features/Frechet_Distance)
* License and copyright ownership: MPI, GeometryFactory, cnrs(?)
## TODO:
- [x] check branch size (@sloriot)
- [x] Make it work with `Epick_d<Dimension_tag<2>>` @sloriot
the patches actually correspond to PLC faces,
which must be planar, and do not match the "face patches"
of PMP::isotropic_remeshing for example
+ add a np to CGAL::IO::write_MEDIT(ccdt) to save the corresponding PLC ids,
or just "1" everywhere as patch id
## Summary of Changes
`const` variables declared at global scope have internal linkage, and so
if they are declared in a header file, they are replicated in every file
that `#include` the header. They also can't be the target of `using`
declarations that exports the variable into a C++20 module. This change
marks a number of variables with `inline`, which gives these variables
external linkage, allows the linker to unify all of these variables
between different `.o` files, and also allows for their use in C++20
modules.
There is a separate question whether these variables could or should be
`constexpr` instead of just `const`. The difference between `constexpr`
and `const` has no effect on linkage, and so in the spirit of taking one
step at a time, this patch does not address the `constexpr` vs `const`
question.
This patch fixes#8871. Related to
https://github.com/dealii/dealii/issues/18071.
## Release Management
* Affected package(s): 5.6.1
* Issue(s) solved (if any): #8871
* License and copyright ownership: Same license as used throughout CGAL.