Exemplo n.º 1
0
 public function testTree4()
 {
     $deriver = new DerivationVisitor('x');
     $eval = new EvaluationVisitor(['x' => 2]);
     Tree::init(3)->mult(Tree::init('x')->pow(2))->add(Tree::init(2)->mult('x')->add(3));
     $f = Tree::mult(3, Tree::pow('x', 2))->add(Tree::mult(2, 'x'))->add(3);
     $this->assertEquals(19, $eval->visit($f));
     $this->assertEquals(14, $eval->visit($deriver->visit($f)));
 }
Exemplo n.º 2
0
 /**
  * @return SimplifyVisitor
  */
 public function testVisitor4()
 {
     $visitor = new TypeVisitor(VariableNode::class);
     $this->assertFalse($visitor->visit(Tree::add(2, 3)));
     $this->assertFalse($visitor->visit(Tree::pow(2, 3)));
     $this->assertFalse($visitor->visit(Tree::mult(2, 3)));
     $this->assertFalse($visitor->visit(Tree::init(3)));
     $this->assertTrue($visitor->visit(Tree::init('x')));
 }
Exemplo n.º 3
0
 public function visitPowerNode(PowerNode $node)
 {
     $a = $this->visit($node->getBase());
     $b = $this->visit($node->getExponent());
     //TODO REMOVE
     if ($this->isZeroVisitor->visit($a)) {
         return Tree::init(0);
     }
     if ($this->isZeroVisitor->visit($b)) {
         return Tree::init(1);
     }
     if ($this->isOneVisitor->visit($b)) {
         return $a;
     }
     return new PowerNode($a, $b);
 }