// SPDX-FileCopyrightText: The Eigen Authors
// SPDX-License-Identifier: MPL-2.0

#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();
}
