mirror of
https://github.com/Karaka-Management/phpOMS.git
synced 2026-01-11 17:58:41 +00:00
Fix #29
This commit is contained in:
parent
5ab51d66b7
commit
184e407201
|
|
@ -148,7 +148,9 @@ class 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);
|
||||
} elseif ($value instanceof Complex) {
|
||||
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
|
||||
{
|
||||
|
||||
|
|
|
|||
|
|
@ -58,6 +58,9 @@ class ComplexTest extends \PHPUnit\Framework\TestCase
|
|||
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->pow(2)->render());
|
||||
self::assertEquals('-44.00 - 117.00i', $cpl->pow(3)->render());
|
||||
|
||||
self::assertEquals(5, $cpl->abs(), '', 0.01);
|
||||
|
||||
self::assertEquals('2.12 + 0.71i', $cpl->sqrt()->render());
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user