Sey 是一个具有任意精度的强大数学解释器。

1.0.0 2021-11-05 18:02 UTC

This package is auto-updated.

Last update: 2024-08-29 05:50:08 UTC


README

The word Sey on a blue background

Sey

Tests Formats Version Total Downloads License

Sey,发音为“赛”,是一个具有任意精度的强大数学解释器。

安装

需要PHP 8.0.0+ 及 bcmath 扩展

您可以通过composer安装此包

composer require felixdorn/sey

用法

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

精度

默认情况下,最大浮点精度为16。

您可以更改它

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

语法

它只是数学。

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()

变量

您不能在代码中定义变量,但可以在编译时传递它们。

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

函数

  • sqrt: bcsqrt

  • powmod: bcpowmod

  • pi(): 定制的 bcpi 函数

    此函数返回具有您定义的精度(最多999位)的π。

  • !(n): 定制的 bcfact 函数

    这计算 n!,如果您需要快速完成,可能应该使用查找表。

自定义函数

您可以覆盖内置函数。

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

函数名必须匹配以下正则表达式 [a-z_A-Z!]+[a-z_A-Z0-9]*

因此,第一个字符必须是字母或 !,后跟任意数量的字母或数字。

测试

composer test

seyFélix Dorn 创建,遵循 MIT 许可证