public void TestEvaluate_Double() { string expected = "15565"; string polyString = "10000*x^4 + 125*y^3 + 500*x^2 + 75*y + 13"; MultivariatePolynomial poly = MultivariatePolynomial.Parse(polyString); List <Tuple <char, double> > indeterminants = new List <Tuple <char, double> >() { new Tuple <char, double>('x', 1.1d), new Tuple <char, double>('y', 1.2d), }; double result = poly.Evaluate(indeterminants); string actual = result.ToString(); TestContext.WriteLine($"Result: \"{actual}\"."); Assert.AreEqual(expected, actual, $"Test of: MultivariatePolynomial.Evaluate({polyString}) where {string.Join(" and ", indeterminants.Select(tup => $"{tup.Item1} = {tup.Item2}"))}"); }
public void TestEvaluate_Complex() { string expected = "(0, 0)"; string polyString = "x^2 + 1"; MultivariatePolynomial poly = MultivariatePolynomial.Parse(polyString); List <Tuple <char, Complex> > indeterminants = new List <Tuple <char, Complex> >() { new Tuple <char, Complex>('x', Complex.ImaginaryOne) }; Complex evaluated = poly.Evaluate(indeterminants); Complex result = new Complex(Math.Round(evaluated.Real, 1), Math.Round(evaluated.Imaginary, 1)); string actual = result.ToString(); TestContext.WriteLine($"Result: \"{actual}\"."); Assert.AreEqual(expected, actual, $"Test of: MultivariatePolynomial.Evaluate({polyString}) where x = sqrt(-1)"); }
public void TestEvaluate_BigInteger() { string expected = "8551120982818029391"; string polyString = "2*x^4 + 13*y^3 + 29*x^2 + 29*y + 13"; MultivariatePolynomial poly = MultivariatePolynomial.Parse(polyString); List <Tuple <char, BigInteger> > indeterminants = new List <Tuple <char, BigInteger> >() { new Tuple <char, BigInteger>('x', 45468), new Tuple <char, BigInteger>('y', 63570), }; BigInteger result = poly.Evaluate(indeterminants); string actual = result.ToString(); TestContext.WriteLine($"Result: \"{actual}\"."); Assert.AreEqual(expected, actual, $"Test of: MultivariatePolynomial.Evaluate({polyString}) where {string.Join(" and ", indeterminants.Select(tup => $"{tup.Item1} = {tup.Item2}"))}"); }