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);