move some functions to array utils

This commit is contained in:
Dennis Eichhorn 2019-10-19 13:11:27 +02:00
parent b8ca685473
commit e8ecfce4fd
4 changed files with 101 additions and 96 deletions

View File

@ -124,26 +124,6 @@ final class Functions
return self::ackermann($m - 1, self::ackermann($m, $n - 1));
}
/**
* Applying abs to every array value
*
* @param array<float|int> $values Numeric values
*
* @return array<float|int>
*
* @since 1.0.0
*/
public static function abs(array $values) : array
{
$abs = [];
foreach ($values as $value) {
$abs[] = \abs($value);
}
return $abs;
}
/**
* Calculate inverse modular.
*
@ -237,68 +217,6 @@ final class Functions
return !((bool) ($a & 1));
}
/**
* Power all values in array.
*
* @param array<float|int> $values Values to square
* @param float $exp Exponent
*
* @return array<float>
*
* @since 1.0.0
*/
public static function powerFloat(array $values, float $exp = 2.0) : array
{
$squared = [];
foreach ($values as $value) {
$squared[] = $value ** $exp;
}
return $squared;
}
/**
* Power all values in array.
*
* @param array<float|int> $values Values to square
* @param int $exp Exponent
*
* @return array<float|int>
*
* @since 1.0.0
*/
public static function powerInt(array $values, int $exp = 2) : array
{
$squared = [];
foreach ($values as $value) {
$squared[] = $value ** $exp;
}
return $squared;
}
/**
* Sqrt all values in array.
*
* @param array<float|int> $values Values to sqrt
*
* @return array<float|int>
*
* @since 1.0.0
*/
public static function sqrt(array $values) : array
{
$squared = [];
foreach ($values as $value) {
$squared[] = \sqrt($value);
}
return $squared;
}
/**
* Gets the relative position on a circular construct.
*

View File

@ -404,4 +404,86 @@ final class ArrayUtils
{
return \array_sum(self::arrayFlatten($array));
}
/**
* Applying abs to every array value
*
* @param array<float|int> $values Numeric values
*
* @return array<float|int>
*
* @since 1.0.0
*/
public static function abs(array $values) : array
{
$abs = [];
foreach ($values as $value) {
$abs[] = \abs($value);
}
return $abs;
}
/**
* Power all values in array.
*
* @param array<float|int> $values Values to square
* @param float $exp Exponent
*
* @return array<float>
*
* @since 1.0.0
*/
public static function powerFloat(array $values, float $exp = 2.0) : array
{
$squared = [];
foreach ($values as $value) {
$squared[] = $value ** $exp;
}
return $squared;
}
/**
* Power all values in array.
*
* @param array<float|int> $values Values to square
* @param int $exp Exponent
*
* @return array<float|int>
*
* @since 1.0.0
*/
public static function powerInt(array $values, int $exp = 2) : array
{
$squared = [];
foreach ($values as $value) {
$squared[] = $value ** $exp;
}
return $squared;
}
/**
* Sqrt all values in array.
*
* @param array<float|int> $values Values to sqrt
*
* @return array<float|int>
*
* @since 1.0.0
*/
public static function sqrt(array $values) : array
{
$squared = [];
foreach ($values as $value) {
$squared[] = \sqrt($value);
}
return $squared;
}
}

View File

@ -46,11 +46,6 @@ class FunctionsTest extends \PHPUnit\Framework\TestCase
self::assertEquals(5, Functions::invMod(-10, 17));
}
public function testAbs() : void
{
self::assertEquals([1, 3, 4], Functions::abs([-1, 3, -4]));
}
public function testProperties() : void
{
self::assertTrue(Functions::isOdd(3));
@ -70,13 +65,4 @@ class FunctionsTest extends \PHPUnit\Framework\TestCase
self::assertEquals(5, Functions::getRelativeDegree(12, 12, 7));
self::assertEquals(11, Functions::getRelativeDegree(6, 12, 7));
}
public function testPower() : void
{
self::assertEquals([4, 9, 16], Functions::powerInt([2, 3, 4], 2));
self::assertEquals([8, 27, 64], Functions::powerInt([2, 3, 4], 3));
self::assertEqualsWithDelta([2.0, 3.0, 4.0], Functions::powerFloat([4, 9, 16], 1 / 2), 0.0);
self::assertEqualsWithDelta([2.0, 3.0, 4.0], Functions::powerFloat([8, 27, 64], 1 / 3), 0.0);
}
}

View File

@ -144,4 +144,23 @@ class ArrayUtilsTest extends \PHPUnit\Framework\TestCase
ArrayUtils::stringify([new class() {}]);
}
public function testPower() : void
{
self::assertEquals([4, 9, 16], ArrayUtils::powerInt([2, 3, 4], 2));
self::assertEquals([8, 27, 64], ArrayUtils::powerInt([2, 3, 4], 3));
self::assertEqualsWithDelta([2.0, 3.0, 4.0], ArrayUtils::powerFloat([4, 9, 16], 1 / 2), 0.0);
self::assertEqualsWithDelta([2.0, 3.0, 4.0], ArrayUtils::powerFloat([8, 27, 64], 1 / 3), 0.0);
}
public function testSqrt() : void
{
self::assertEqualsWithDelta([2, 3, 4], ArrayUtils::sqrt([4, 9, 16]), 0.01);
}
public function testAbs() : void
{
self::assertEquals([1, 3, 4], ArrayUtils::abs([-1, 3, -4]));
}
}