#include <unsupported/Eigen/Polynomials>
#include <iostream>

using namespace Eigen;
using namespace std;

int main() {
  Vector4d roots = Vector4d::Random();
  cout << "Roots: " << roots.transpose() << endl;
  Eigen::Matrix<double, 5, 1> polynomial;
  roots_to_monicPolynomial(roots, polynomial);
  cout << "Polynomial: ";
  for (int i = 0; i < 4; ++i) {
    cout << polynomial[i] << ".x^" << i << "+ ";
  }
  cout << polynomial[4] << ".x^4" << endl;
  Vector4d evaluation;
  for (int i = 0; i < 4; ++i) {
    evaluation[i] = poly_eval(polynomial, roots[i]);
  }
  cout << "Evaluation of the polynomial at the roots: " << evaluation.transpose();
}