Beispiel #1
0
 public function testTree3()
 {
     $deriver = new DerivationVisitor('x');
     $evaluator = new EvaluationVisitor(['x' => 2]);
     $f = Tree::mult(3, Tree::pow('x', 2))->add(Tree::mult(2, 'x'))->add(3);
     $this->assertEquals(19, $evaluator->visit($f));
     $this->assertEquals(14, $evaluator->visit($deriver->visit($f)));
 }
 public function testTreeRender2()
 {
     $deriver = new DerivationVisitor('x');
     $simplfier = SimplifyVisitor::init();
     $renderer = RenderStringVisitor::init();
     $f = Tree::add(Tree::mult(3, 'x'), Tree::mult(2, 'x'), 3)->pow(2);
     $this->assertEquals("(3 * x + 2 * x + 3) ^ 2", $renderer->visit($f));
     $this->assertEquals('10 * (3 * x + 2 * x + 3)', $renderer->visit($simplfier->visit($deriver->visit($f))));
     $this->assertEquals(50, $renderer->visit($simplfier->visit($deriver->visit($deriver->visit($f)))));
 }
 public function testAddNodeWithVariable()
 {
     $deriver = new DerivationVisitor('x');
     $eval = new EvaluationVisitor(['x' => 3]);
     $node = new BinaryMultiplicationNode(new ConstantNode(2), new VariableNode('x'));
     $d = $deriver->visit($node);
     $dd = $deriver->visit($d);
     $this->assertEquals(6, $eval->visit($node));
     $this->assertEquals(2, $eval->visit($d));
     $this->assertEquals(0, $eval->visit($dd));
 }
Beispiel #4
0
 public function testPowerNodeWithVar()
 {
     $deriver = new DerivationVisitor('x');
     $eval2 = new EvaluationVisitor(['x' => 2]);
     $eval3 = new EvaluationVisitor(['x' => 3]);
     $node = new PowerNode(new VariableNode('x'), new ConstantNode(3));
     $d = $deriver->visit($node);
     $this->assertEquals(12, $eval2->visit($d));
     $this->assertEquals(8, $eval2->visit($node));
     $this->assertEquals(27, $eval3->visit($d));
     $this->assertEquals(27, $eval3->visit($node));
 }