2017 © Pedro PelĂĄez
 

library math

The Hoa\Math library.

image

hoa/math

The Hoa\Math library.

  • Tuesday, June 26, 2018
  • by Hoa
  • Repository
  • 13 Watchers
  • 97 Stars
  • 870,904 Installations
  • PHP
  • 11 Dependents
  • 0 Suggesters
  • 33 Forks
  • 12 Open issues
  • 19 Versions
  • 6 % Grown

The README.md

Hoa , (*1)


Build status Code coverage Packagist License , (*2)

Hoa is a modular, extensible and structured set of PHP libraries.
Moreover, Hoa aims at being a bridge between industrial and research worlds. , (*3)

Hoa\Math

Help on IRC Help on Gitter Documentation Board, (*4)

This library provides tools around mathematical operations., (*5)

Learn more., (*6)

Installation

With Composer, to include this library into your dependencies, you need to require hoa/math:, (*7)

$ composer require hoa/math '~1.0'

For more installation procedures, please read the Source page., (*8)

Testing

Before running the test suites, the development dependencies must be installed:, (*9)

$ composer install

Then, to run all the test suites:, (*10)

$ vendor/bin/hoa test:run

For more information, please read the contributor guide., (*11)

Quick usage

We propose a quick overview of one feature: evaluation of arithmetical expressions., (*12)

Evaluation of arithmetical expressions

The hoa://Library/Math/Arithmetic.pp describes the form of an arithmetical expression. Therefore, we will use the classical workflow when manipulating a grammar, that involves the Hoa\Compiler library and the Hoa\Math\Visitor\Arithmetic class., (*13)

// 1. Load the compiler.
$compiler = Hoa\Compiler\Llk::load(
    new Hoa\File\Read('hoa://Library/Math/Arithmetic.pp')
);

// 2. Load the visitor, aka the “evaluator”.
$visitor    = new Hoa\Math\Visitor\Arithmetic();

// 3. Declare the expression.
$expression = '1 / 2 / 3 + 4 * (5 * 2 - 6) * PI / avg(7, 8, 9)';

// 4. Parse the expression.
$ast        = $compiler->parse($expression);

// 5. Evaluate.
var_dump(
    $visitor->visit($ast)
);

/**
 * Will output:
 *     float(6.4498519738463)
 */

// Bonus. Print the AST of the expression.
$dump = new Hoa\Compiler\Visitor\Dump();
echo $dump->visit($ast);

/**
 * Will output:
 *     >  #addition
 *     >  >  #division
 *     >  >  >  token(number, 1)
 *     >  >  >  #division
 *     >  >  >  >  token(number, 2)
 *     >  >  >  >  token(number, 3)
 *     >  >  #multiplication
 *     >  >  >  token(number, 4)
 *     >  >  >  #multiplication
 *     >  >  >  >  #group
 *     >  >  >  >  >  #substraction
 *     >  >  >  >  >  >  #multiplication
 *     >  >  >  >  >  >  >  token(number, 5)
 *     >  >  >  >  >  >  >  token(number, 2)
 *     >  >  >  >  >  >  token(number, 6)
 *     >  >  >  >  #division
 *     >  >  >  >  >  token(constant, PI)
 *     >  >  >  >  >  #function
 *     >  >  >  >  >  >  token(id, avg)
 *     >  >  >  >  >  >  token(number, 7)
 *     >  >  >  >  >  >  token(number, 8)
 *     >  >  >  >  >  >  token(number, 9)
 */

We can add functions and constants on the visitor, thanks to the addFunction and addConstant methods. Thus, we will add the rand function (with 2 parameters) and the ANSWER constant, set to 42:, (*14)

$visitor->addFunction('rand', function ($min, $max) {
    return mt_rand($min, $max);
});
$visitor->addConstant('ANSWER', 42);

$expression = 'rand(ANSWER / 2, ANSWER * 2)'
var_dump(
    $visitor->visit($compiler->parse($expression))
);

/**
 * Could output:
 *     int(53)
 */

Documentation

The hack book of Hoa\Math contains detailed information about how to use this library and how it works., (*15)

To generate the documentation locally, execute the following commands:, (*16)

$ composer require --dev hoa/devtools
$ vendor/bin/hoa devtools:documentation --open

More documentation can be found on the project's website: hoa-project.net., (*17)

Getting help

There are mainly two ways to get help:, (*18)

Contribution

Do you want to contribute? Thanks! A detailed contributor guide explains everything you need to know., (*19)

License

Hoa is under the New BSD License (BSD-3-Clause). Please, see LICENSE for details., (*20)

The following projects are using this library:, (*21)

  • PSIH & PMSIpilot, PSIH is the leading French integrator of business intelligence solutions for the healthcare sector,
  • PHP Telegram Bot, Telegram bot based on the official Telegram Bot API.

The Versions

26/06 2018

dev-php7

dev-php7 https://hoa-project.net/

The Hoa\Math library.

  Sources   Download

BSD-3-Clause

The Requires

 

The Development Requires

library math combination set combinatorics permutation sampler arrangement counting

04/08 2017

dev-master

9999999-dev https://hoa-project.net/

The Hoa\Math library.

  Sources   Download

BSD-3-Clause

The Requires

 

The Development Requires

library math combination set combinatorics permutation sampler arrangement counting

16/05 2017

1.17.05.16

1.17.05.16 https://hoa-project.net/

The Hoa\Math library.

  Sources   Download

BSD-3-Clause

The Requires

 

The Development Requires

library math combination set combinatorics permutation sampler arrangement counting

13/01 2017

1.17.01.13

1.17.01.13 https://hoa-project.net/

The Hoa\Math library.

  Sources   Download

BSD-3-Clause

The Requires

 

The Development Requires

library math combination set combinatorics permutation sampler arrangement counting

29/08 2016

1.16.08.29

1.16.08.29 http://hoa-project.net/

The Hoa\Math library.

  Sources   Download

BSD-3-Clause

The Requires

 

The Development Requires

library math combination set combinatorics permutation sampler arrangement counting

22/05 2016

1.16.05.22

1.16.05.22 http://hoa-project.net/

The Hoa\Math library.

  Sources   Download

BSD-3-Clause

The Requires

 

The Development Requires

library math combination set combinatorics permutation sampler arrangement counting

29/01 2016

1.16.01.29

1.16.01.29 http://hoa-project.net/

The Hoa\Math library.

  Sources   Download

BSD-3-Clause

The Requires

 

The Development Requires

library math combination set combinatorics permutation sampler arrangement counting

14/01 2016

1.16.01.15

1.16.01.15 http://hoa-project.net/

The Hoa\Math library.

  Sources   Download

BSD-3-Clause

The Requires

 

The Development Requires

library math combination set combinatorics permutation sampler arrangement counting

14/01 2016

1.16.01.14

1.16.01.14 http://hoa-project.net/

The Hoa\Math library.

  Sources   Download

BSD-3-Clause

The Requires

 

The Development Requires

library math combination set combinatorics permutation sampler arrangement counting

26/10 2015

0.15.10.26

0.15.10.26 http://hoa-project.net/

The Hoa\Math library.

  Sources   Download

BSD-3-Clause

The Requires

 

The Development Requires

library math combination set combinatorics permutation sampler arrangement counting

25/08 2015

0.15.08.25

0.15.08.25 http://hoa-project.net/

The Hoa\Math library.

  Sources   Download

BSD-3-Clause

The Requires

 

The Development Requires

library math combination set combinatorics permutation sampler arrangement counting

29/05 2015

0.15.05.29

0.15.05.29 http://hoa-project.net/

The Hoa\Math library.

  Sources   Download

BSD-3-Clause

The Requires

 

The Development Requires

library math combination set combinatorics permutation sampler arrangement counting

23/02 2015

0.15.02.23

0.15.02.23 http://hoa-project.net/

The Hoa\Math library.

  Sources   Download

BSD-3-Clause

The Requires

 

The Development Requires

library math combination set combinatorics permutation sampler arrangement counting

22/12 2014

0.14.12.22

0.14.12.22 http://hoa-project.net/

The Hoa\Math library.

  Sources   Download

BSD-3-Clause

The Requires

 

library math combination set combinatorics permutation sampler arrangement counting

10/12 2014

0.14.12.10

0.14.12.10 http://hoa-project.net/

The Hoa\Math library.

  Sources   Download

BSD-3-Clause

The Requires

 

library math combination set combinatorics permutation sampler arrangement counting

09/11 2014

0.14.11.09

0.14.11.09 http://hoa-project.net/

The Hoa\Math library.

  Sources   Download

BSD-3-Clause

The Requires

 

library math combination set combinatorics permutation sampler arrangement counting

23/09 2014

0.14.09.23

0.14.09.23 http://hoa-project.net/

The Hoa\Math library.

  Sources   Download

BSD-3-Clause

The Requires

 

library math combination set combinatorics permutation sampler arrangement counting

17/09 2014

0.14.09.17

0.14.09.17 http://hoa-project.net/

The Hoa\Math library.

  Sources   Download

BSD-3-Clause

The Requires

 

library math combination set combinatorics permutation sampler arrangement counting

16/09 2014

0.14.09.16

0.14.09.16 http://hoa-project.net/

The Hoa\Math library.

  Sources   Download

BSD-3-Clause

The Requires

 

library math combination set combinatorics permutation sampler arrangement counting