Skip to content

zRosenthal/math-executor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Simple math expressions calculator

Install via Composer

All instructions to install here: https://packagist.org/packages/Z/math-executor

Sample usage:

require "vendor/autoload.php";

$calculator = new \Z\MathExecutor();

print $calculator->execute("1 + 2 * (2 - (4+10))^2 + sin(10)");

Functions:

Default functions:

  • sin
  • cos
  • tn
  • asin
  • acos
  • atn
  • min
  • max
  • avg

Add custom function to executor:

$executor->addFunction('abs', function($arg) {
    return abs($arg);
}, 1);

Operators:

Default operators: + - * / ^

Add custom operator to executor:

MyNamespace/ModulusToken.php:

<?php
namespace MyNamespace;

use Z\Classes\Token\AbstractOperator;

class ModulusToken extends AbstractOperator
{
    /**
     * Regex of this operator
     * @return string
     */
    public static function getRegex()
    {
        return '\%';
    }

    /**
     * Priority of this operator
     * @return int
     */
    public function getPriority()
    {
        return 3;
    }

    /**
     * Associaion of this operator (self::LEFT_ASSOC or self::RIGHT_ASSOC)
     * @return string
     */
    public function getAssociation()
    {
        return self::LEFT_ASSOC;
    }

    /**
     * Execution of this operator
     * @param InterfaceToken[] $stack Stack of tokens
     * @return TokenNumber            Result of execution
     */
    public function execute(&$stack)
    {
        $op2 = array_pop($stack);
        $op1 = array_pop($stack);
        $result = $op1->getValue() % $op2->getValue();

        return new TokenNumber($result);
    }
}

And adding to executor:

$executor->addOperator('MyNamespace\ModulusToken');

Variables:

Default variables:

$pi = 3.14159265359
$e = 2.71828182846

You can add own variable to executor:

$executor->setVars(array(
    'var1' => 0.15,
    'var2' => 0.22
));

$executor->execute("$var1 + $var2");

About

Simple math expressions calculator - extension of http://github.com/NeonXP/MathExecutor

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages