public void TestComplicatedParseSqrt2() { string somePolynomial = "(x*x + sqrt2*x + 1)*(x*x - sqrt2*x + 1)"; SlowOperatorBasedField<double> rationalField = new SlowOperatorBasedField<double>(); PolynomialOverFieldRing<double> rationalPolynomialRing = new PolynomialOverFieldRing<double>(rationalField); IRing<Polynomial<double>> rationalWithSqrt2Ring = new QuotientRing<Polynomial<double>> (new PrincipalIdeal<Polynomial<double>> (rationalPolynomialRing, new Polynomial<double>(new double[] {-2, 0, 1}, rationalField))); var sqrt2 = rationalField.CreateMonomial(1, 1); PolynomialParser parser = new PolynomialParser (new PolynomialParserOptions() { Aliases = new Dictionary<string, object>() { {"sqrt2", sqrt2} } }); Polynomial<Polynomial<double>> parsed = parser.Parse(somePolynomial, rationalWithSqrt2Ring); PolynomialRing<Polynomial<double>> complexPolynomialRing = new PolynomialRing<Polynomial<double>>(rationalWithSqrt2Ring); Polynomial<Polynomial<double>> expectedResult = complexPolynomialRing.Add( rationalWithSqrt2Ring.CreateMonomial(rationalWithSqrt2Ring.Identity, 4), complexPolynomialRing.Identity); Assert.IsTrue(complexPolynomialRing.Comparer.Equals(parsed, expectedResult)); }
public void TestParse() { string somePolynomial = "(x*x + 1)*(x*x - 1)"; PolynomialParser parser = new PolynomialParser(); IRing<double> ring = new SlowOperatorBasedRing<double>(); Polynomial<double> parsed = parser.Parse(somePolynomial, ring); PolynomialRing<double> polynomialRing = new PolynomialRing<double>(ring); Assert.IsTrue(polynomialRing.Comparer.Equals(parsed, new Polynomial<double>(new double[] {-1, 0, 0, 0, 1}, ring))); }