轮回/费马

一个为任意大小的数字提供数学和统计操作的库。

v2.1.1 2021-06-30 01:08 UTC

README

CircleCI Test Coverage Maintainability Latest Stable Version Total Downloads License

本项目针对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)

您还可以同时使用FractionNumber

<?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构建测试。

有关更多信息,请参阅贡献部分。