Line data Source code
1 0 : // Distributed under the MIT License.
2 : // See LICENSE.txt for details.
3 :
4 : #pragma once
5 :
6 : #include <complex>
7 :
8 : /// \cond
9 : class ComplexDataVector;
10 : class DataVector;
11 : class StepperErrorTolerances;
12 : /// \endcond
13 :
14 : /*!
15 : * \ingroup TimeGroup
16 : * \brief Calculate the pointwise worst error.
17 : *
18 : * \details For a `double`, or `std::complex<double>`, calculates
19 : *
20 : * \f{equation}
21 : * \frac{e}{a + r \max(|v|, |v + e|)}
22 : * \f}
23 : *
24 : * where $v$ is \p values, $e$ is \p errors, and $a$ and $r$ are the
25 : * tolerances from \p tolerances. For vector types, calculates the
26 : * largest error over all the points. Only the `absolute` and
27 : * `relative` fields from \p tolerances are used.
28 : *
29 : * Instantiated for `double`, `std::complex<double>`, `DataVector`,
30 : * and `ComplexDataVector`.
31 : */
32 : template <typename T>
33 1 : double largest_stepper_error(const T& values, const T& errors,
34 : const StepperErrorTolerances& tolerances);
|