code: public static EasyLinearEquation createForPolynomial(final BigInteger[] xarray,
                                                           final BigInteger[] fofxarray)
      {
          if (xarray.length != fofxarray.length)
          {
              throw new SecretShareException("Unequal length arrays are not allowed");
          }
          final int numRows = xarray.length;
          final int numCols = xarray.length + 1;
  
          BigInteger[][] cvt = new BigInteger[numRows][];
          for (int row = 0; row < numRows; row++)
          {
              cvt[row] = new BigInteger[numCols];
  
              fillInPolynomial(cvt[row],
                               fofxarray[row],
                               xarray[row]);
          }
  
          return create(cvt);
      }
docs: Create solver for polynomial equations.
  
  Polynomial linear equations are a special case, because the C,x,x^2,x^3 coefficients
  can be turned into the rows we need by being given:
  a) which "x" values were used
  b) what "constant" values were computed
  This information happens to be exactly what the holder of a "Secret" in
  "Secret Sharing" has been given.
  So this constructor can be used to recover the secret if
  given enough of the secrets.
  
  @param xarray the "X" values
  @param fofxarray the "f(x)" values
  @return instance for solving this special case