mirror of
https://github.com/Karaka-Management/phpOMS.git
synced 2026-02-10 05:58:42 +00:00
Fix #29
This commit is contained in:
parent
5ab51d66b7
commit
184e407201
|
|
@ -148,7 +148,9 @@ class Complex
|
||||||
|
|
||||||
public function pow($value) : Complex
|
public function pow($value) : Complex
|
||||||
{
|
{
|
||||||
if (is_numeric($value)) {
|
if (is_int($value)) {
|
||||||
|
return $this->powInteger($value);
|
||||||
|
} elseif (is_numeric($value)) {
|
||||||
return $this->powScalar($value);
|
return $this->powScalar($value);
|
||||||
} elseif ($value instanceof Complex) {
|
} elseif ($value instanceof Complex) {
|
||||||
return $this->powComplex($value);
|
return $this->powComplex($value);
|
||||||
|
|
@ -162,6 +164,28 @@ class Complex
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Power with integer
|
||||||
|
*
|
||||||
|
* @param int $value Power
|
||||||
|
*
|
||||||
|
* @return Complex
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
public function powInteger(int $value) : Complex
|
||||||
|
{
|
||||||
|
if ($value === 0) {
|
||||||
|
return new self(1, 0);
|
||||||
|
} elseif ($value === 1) {
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
for ($i = $value; $i > 0; --$i) {
|
||||||
|
return $this->multComplex($this->powInteger($i));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public function powScalar() : Complex
|
public function powScalar() : Complex
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -58,6 +58,9 @@ class ComplexTest extends \PHPUnit\Framework\TestCase
|
||||||
self::assertEquals('0.16 - 0.12i', $cpl->reciprocal()->render(2));
|
self::assertEquals('0.16 - 0.12i', $cpl->reciprocal()->render(2));
|
||||||
|
|
||||||
self::assertEquals('7.00 + 24.00i', $cpl->square()->render());
|
self::assertEquals('7.00 + 24.00i', $cpl->square()->render());
|
||||||
|
self::assertEquals('7.00 + 24.00i', $cpl->pow(2)->render());
|
||||||
|
self::assertEquals('-44.00 - 117.00i', $cpl->pow(3)->render());
|
||||||
|
|
||||||
self::assertEquals(5, $cpl->abs(), '', 0.01);
|
self::assertEquals(5, $cpl->abs(), '', 0.01);
|
||||||
|
|
||||||
self::assertEquals('2.12 + 0.71i', $cpl->sqrt()->render());
|
self::assertEquals('2.12 + 0.71i', $cpl->sqrt()->render());
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user