轮回 / 费马
一个为任意大小的数字提供数学和统计操作的库。
v2.1.1
2021-06-30 01:08 UTC
Requires
- php: >=8.0
- php-ds/php-ds: ^1.1
- riimu/kit-baseconversion: ^1
- samsara/common: ^1
Requires (Dev)
Suggests
- ext-ds: *
- ext-gmp: *
This package is auto-updated.
Last update: 2024-09-19 01:19:11 UTC
README
本项目针对8.1版本进行了单元测试,并且只有通过测试的合并才会被接受。
安装
要安装,请使用composer要求该包
composer require "samsara/fermat:^2.1"
或者将其包含在您的composer.json
文件中
{ "require": { "samsara/fermat": "^2.1" } }
项目命名空间为Samsara\Fermat\Core\*
。您可以在Packagist上查看该项目。
模块
模块是位于Samsara\Fermat\Core
之外的命名空间,并提供了超越整数、小数和有理数的功能。
所有这些模块都依赖于核心命名空间,其中一些模块相互之间有不同程度的依赖。
Samsara\Fermat\Complex
:提供复数功能。注意:虚数直接由Core
支持。复数是有实部和虚部的数。Samsara\Fermat\Coordinates
:提供不同的坐标系,可用于描述点及其相互关系。Samsara\Fermat\Expressions
:提供各种表达式,通常是代数表达式,可以将其作为函数处理而不是作为值。Samsara\Fermat\LinearAlgebra
:提供涉及矩阵和向量的数学。Samsara\Fermat\Stats
:提供涉及统计和概率的数学。
文档
Samsara\Fermat\Core\Numbers
工厂类提供了一种方式,可以在Fermat中使用值类,而不需要像这些类可能需要的那么具体。考虑以下代码
<?php use Samsara\Fermat\Core\Core\Numbers; $five = Numbers::make(Numbers::IMMUTABLE, 5); $ten = Numbers::make(Numbers::IMMUTABLE, '10'); echo $five->add($ten); // Prints: "15"
请注意,make()
方法允许您提供整数和字符串作为值。实际上,它还允许您提供浮点数。第一个参数是用于值的特定类,第二个参数是值本身。第三个和第四个参数是可选的,分别表示刻度(小数位数)和数字的基数。刻度和基数参数将只接受整数值。
如果您没有指定刻度值,并且您使用的是默认值,则它自动具有10或输入值的字符串长度中的较大者作为刻度。
以下是一个使用工厂方法创建基数非10的值的示例
<?php use Samsara\Fermat\Core\Core\Numbers; use Samsara\Fermat\Core\Core\Enums\NumberBase; // Value in base5 $five = Numbers::make(Numbers::IMMUTABLE, '10', null, NumberBase::Five); // Value in base10 $ten = Numbers::make(Numbers::IMMUTABLE, '10'); echo $ten->add($five); // Prints: "15" (The sum in base10) echo $five->add($ten); // Prints: "30" (The sum in base5)
您还可以同时使用Fraction
和Number
<?php use Samsara\Fermat\Core\Core\Values\ImmutableDecimal; use Samsara\Fermat\Core\Core\Values\ImmutableFraction; $five = new ImmutableDecimal(5); $oneQuarter = new ImmutableFraction(1, 4); echo $five->add($oneQuarter); // Prints: "5.25" // The asDecimal() method is called on $oneQuarter echo $oneQuarter->add($five); // Prints: "21/4" // Calls getValue() on $five and instantiates a new ImmutableFraction
您可以在此处阅读Fermat的完整文档here。
贡献
请确保您的拉取请求符合以下准则
- 在拉取请求中创建的新文件必须有一个相应的单元测试文件,或者必须被现有测试文件覆盖。
- 您的合并不得使项目的测试覆盖率低于80%。
- 您的合并不得使项目的测试覆盖率下降超过5%。
- 您的合并必须通过PHP 8.1的CI构建测试。
有关更多信息,请参阅贡献部分。