public void TestEnumerator3() { Entity expr = "2 + 3 + x"; var pattern = Powf.PHang(Patterns.any1, Patterns.any2); var matches = new Set(); foreach (var match in TreeAnalyzer.GetPatternEnumerator(expr, pattern)) { matches.Add(match); } Assert.IsTrue(matches.Count == 0, "match is NOT empty, but should"); }
public void TestEnumerator2() { Entity expr = "a^x + ((b^y + c^z)^2)^x"; var pattern = Powf.PHang(Patterns.any1, Patterns.any2); var matches = new Set(); foreach (var match in TreeAnalyzer.GetPatternEnumerator(expr, pattern)) { matches.Add(match); } Assert.IsTrue(matches.Count == 5, "not all matched were found"); foreach (var match in matches.FiniteSet()) { Assert.IsNotNull(expr.FindSubtree(match), "match is not in expression"); } }
Minusf(Powf(Cosf(var any1), Integer(2)), Powf(Sinf(var any1a), Integer(2))) when any1 == any1a =>
Sumf(Powf(Cosf(var any1), Integer(2)),
// sin(:)^2 + cos(:)^2 = 1 Sumf(Powf(Sinf(var any1), Integer(2)),
Phif(Powf(Integer prime, var variable)) when prime.IsPrime => new Powf(prime, variable - 1) * (prime - 1),