Skip to content
/ sey Public
generated from felixdorn/skeleton-php

Sey is a powerful math interpreter with arbitrary-precision.

License

Notifications You must be signed in to change notification settings

felixdorn/sey

Folders and files

NameName
Last commit message
Last commit date

Latest commit

0c52e93 · Oct 1, 2022

History

28 Commits
Nov 5, 2021
Nov 4, 2021
Dec 5, 2021
Nov 5, 2021
Nov 4, 2021
Nov 4, 2021
Nov 4, 2021
Nov 4, 2021
Nov 4, 2021
Oct 1, 2022
Oct 1, 2022
Nov 4, 2021
Nov 4, 2021

Repository files navigation

The word Sey on a blue background

Sey

Tests Formats Version Total Downloads License

Sey, pronounce say, is a powerful math interpreter with arbitrary-precision.

Installation

Requires PHP 8.0.0+ and the bcmath extension

You can install the package via composer:

composer require felixdorn/sey

Usage

Sey::parse('(0.5 + 0.5) / 3)'); // 0.3333333333333333
// or
sey('a / b', ['a' => 1, 'b' => 2]); // 0.5

Precision

By default, the maximum floating precision is 16.

You may change it:

\Felix\Sey\Sey:precision(32);

Syntax

It's just math.

1 + 2
2 - 3
3 * 4
4 / 5
5 % 6
6 ^ 7
7 * (8 + 9)
sqrt(10)
powmod(11)
11(12 - 13)
(14 + 15)^16
!(5)
pi()

Variables

You can not define variables in your code but you can pass them at compile-time.

Sey::parse('2 * r * pi', [
    'r' => 10,
    'pi' => 3.1415
]);

Functions

  • sqrt: bcsqrt

  • powmod: bcpowmod

  • pi(): custom bcpi function

    This function returns pi with your defined precision up to 999 digits.

  • !(n): custom bcfact function

    This computes n!, if you need to do it really quickly, you should probably use a lookup table.

Custom functions

You can override built-ins functions.

Sey::define('!', function (int $n, /* as many arguments as you want */) {
    return $factorials[$n] ?? bcfact($n);
});

The function name must match the following regex [a-z_A-Z!]+[a-z_A-Z0-9]*.

So, first character must be a letter or ! followed by any number of letters or numbers.

Tests

composer test

sey was created by Félix Dorn under the MIT license.

About

Sey is a powerful math interpreter with arbitrary-precision.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages