Gobelijn API documentation  - generated for commit a0cbea7
 All Classes Namespaces Files Functions Variables Typedefs Friends Macros Pages
polynomial.cpp
Go to the documentation of this file.
1 
6 #include "polynomial.h"
7 
8 #include <cstddef>
9 
10 template <typename T>
12 {
13  T result = 0;
14  T multiplicant = 1;
15  for (T& a : vect) {
16  result += a * multiplicant;
17  multiplicant *= x;
18  }
19  return result;
20 }
21 
22 template <typename T>
24 {
25  Polynomial<T> result;
26  for (size_t i = 0; i < std::max(x.vect.size(), vect.size()); i++) {
27  result.vect.push_back((vect.size() > i ? vect[i] : 0) + (x.vect.size() > i ? x.vect[i] : 0));
28  }
29  return result;
30 }
31 
32 template <typename T>
34 {
35  Polynomial<T> result;
36  for (size_t i = 0; i < std::max(x.vect.size(), vect.size()); i++) {
37  result.vect.push_back((vect.size() > i ? vect[i] : 0) * (x.vect.size() > i ? x.vect[i] : 0));
38  }
39  return result;
40 }
41 
42 template <typename T>
44 {
45  Polynomial<T> result;
46  for (size_t i = 0; i < std::max(x.vect.size(), vect.size()); i++) {
47  result.vect.push_back((vect.size() > i ? vect[i] : 0) - (x.vect.size() > i ? x.vect[i] : 0));
48  }
49  return result;
50 }
51 
52 template <typename T>
54 {
55  Polynomial<T> result;
56  for (size_t i = 1; i < vect.size(); i++) {
57  result.vect.push_back(vect[i] * i);
58  }
59  return result;
60 }
61 
62 template <typename T>
63 T Polynomial<T>::horner(const T& x) const
64 {
65  T result = vect[vect.size() - 1];
66  for (auto i = vect.size() - 2; i >= 0; i--) {
67  result = vect[i] + result * x;
68  }
69  return result;
70 }
71 
72 template class Polynomial<double>;
Polynomial< T > operator+(const Polynomial< T > &x) const
Definition: polynomial.cpp:23
Polynomial< T > operator*(const Polynomial< T > &x) const
Definition: polynomial.cpp:33
Polynomial< T > derive() const
Definition: polynomial.cpp:53
std::vector< T > vect
Definition: polynomial.h:21
T const & max(T const &a, T const &b)
Definition: max1.hpp:9
T operator()(const T &x)
Definition: polynomial.cpp:11
Polynomial< T > operator-(const Polynomial< T > &x) const
Definition: polynomial.cpp:43
T horner(const T &x) const
Definition: polynomial.cpp:63