12 template<
typename ValueType>
18 template<
typename ValueType>
23 namespace parameterize {
26 template<
typename ValueType>
33 template<
typename ValueType>
44 template<
typename ValueType>
50 auto q = 2*b*b*b/27-b*c/3+d;
51 auto v = sqrt(q*q+4*p*p*p/27);
52 auto z = -std::pow(q+v/2,1./3);
53 auto s = z-p/(3*z)-b/3;
66 template<
typename ValueType>
67 constexpr
coeff<ValueType> optimal_gaussian(ValueType s_w, ValueType s_v, ValueType T) {
69 return optimal_gaussian<ValueType>(l);
74 template<
typename ValueType>
79 template<
typename ValueType>
81 auto& [g,h,k] = coeff;
84 auto r = z - current.x;
88 current.ddx += 2*k/(T*T)*r;
90 auto correct = current;
93 current.x += current.dx*T+current.ddx*T*T/2;
94 current.dx += current.ddx*T;
96 return {correct, current };