6 #include <gsl/gsl_poly.h> 18 inline std::ostream &
operator<<(std::ostream &os,
const gsl_complex &c) {
19 return os <<
"(" << GSL_REAL(c) <<
"," << GSL_IMAG(c) <<
")";
27 template<
class T,
size_t N>
32 std::array<T, N + 1>
_c;
40 std::copy(std::begin(clst), std::end(clst), std::begin(_c));
48 T
c(
size_t idx)
const {
58 auto eval(gsl_complex z)
const {
60 if constexpr (std::is_same_v<T, gsl_complex>) {
61 return gsl_complex_poly_complex_eval(
67 return gsl_poly_complex_eval(_c.data(),
N, z);
76 auto eval(
double x)
const {
78 if constexpr (std::is_same_v<T, gsl_complex>) {
79 return gsl_complex_poly_complex_eval(
85 return gsl_poly_eval(_c.data(),
N + 1, x);
108 for (
size_t idx = 1; idx < p.
_c.size(); idx++) {
109 os <<
"," << p.
c(idx);
118 inline constexpr
size_t degree()
const {
return N; }
127 std::cout <<
"p1=" << p1 << std::endl;
128 std::cout <<
"p1(-0.5)=" << p1(-0.5) << std::endl;
129 std::cout <<
"----------------" << std::endl;
132 std::cout <<
"p2=" << p2 << std::endl;
133 std::cout <<
"p2(-0.5)=" << p2(-0.5) << std::endl;
134 std::cout <<
"----------------" << std::endl;
137 gsl_complex{ 2., 2. } } };
140 std::cout <<
"p3=" << p3 << std::endl;
141 std::cout <<
"p3(1)=" << p3(1) << std::endl;
142 std::cout <<
"p3({1,2})=" << p3(gsl_complex{ 1., 2. }) << std::endl;
auto eval(gsl_complex z) const
eval Auswertung des Polynoms
std::ostream & operator<<(std::ostream &os, const gsl_complex &c)
operator <<
auto operator()(R x) const
operator () Auswertung des Polynoms
constexpr size_t degree() const
degree
The Polynom class Darstellung von Polynomen.
friend std::ostream & operator<<(std::ostream &os, const Polynom &p)
operator << Ausgabe der Koeffizienten des Polynoms {c0,c1,c2,...,cn}
T c(size_t idx) const
c lese Koeffizienten
Polynom(std::array< T, N+1 > clst)
Polynom Konstruktor.
void ex1()
cppx4a Beispiel Auswertung von Polynomen
auto eval(double x) const
eval Auswertung des Polynoms