docs: public static Complex_F64[] findRoots(double... coefficients) {
          int N = coefficients.length-1;
  
          // Construct the companion matrix
          DMatrixRMaj c = new DMatrixRMaj(N,N);
  
          double a = coefficients[N];
          for( int i = 0; i < N; i++ ) {
              c.set(i,N-1,-coefficients[i]/a);
          }
          for( int i = 1; i < N; i++ ) {
              c.set(i,i-1,1);
          }
  
          // use generalized eigenvalue decomposition to find the roots
          EigenDecomposition_F64<DMatrixRMaj> evd =  DecompositionFactory_DDRM.eig(N,false);
  
          evd.decompose(c);
  
          Complex_F64[] roots = new Complex_F64[N];
  
          for( int i = 0; i < N; i++ ) {
              roots[i] = evd.getEigenvalue(i);
          }
  
          return roots;
      }