|
Go to the documentation of this file.
26template < typename T, int N>
27T horner(T x, const T (&c)[N]) noexcept
30 for ( int i = N - 2; i >= 0; --i) {
37template < int Nstart, typename T, int N>
38std::complex<T> horner( const std::complex<T>& z, const T (&coeffs)[N]) noexcept
40 static_assert(0 <= Nstart && Nstart < N && N >= 2, "invalid array bounds");
42 const T rz = std::real(z);
43 const T iz = std::imag(z);
45 const T s = std::norm(z);
46 T a = coeffs[N - 1], b = coeffs[N - 2];
48 for ( int i = N - 3; i >= Nstart; --i) {
54 return { rz*a + b, iz*a };
T horner(T x, const T(&c)[N]) noexcept
|