Esempio n. 1
0
function pleac_Using_Complex_Numbers()
{
    // PHP offers no native support for complex numbers. However, a 'Math_Complex' class
    // is available for download from PEAR: [http://pear.php.net/package/Math_Complex].
    // Note the following 'include' directives are required:
    //
    //   include_once('Math/Complex.php');
    //   include_once('Math/TrigOp.php');
    //   include_once('Math/ComplexOp.php');
    $a = new Math_Complex(3, 5);
    $b = new Math_Complex(2, -2);
    $c = Math_ComplexOp::mult($a, $b);
    echo $c->toString() . "\n";
    // ----------------------------
    $d = new Math_Complex(3, 4);
    $r = Math_ComplexOp::sqrt($d);
    echo $r->toString() . "\n";
}
Esempio n. 2
0
 /**
  * Returns the exponentiation of a complex numbers to a real power: z = c1^(real)
  *
  * @param Math_Complex $c1
  * @param float $real
  * @return Math_Complex A valid Math_Complex number on success
  * @throws InvalidArgumentException
  */
 public static function powReal(Math_Complex $c1, $real)
 {
     if (!Math_ComplexOp::isComplex($c1)) {
         throw new InvalidArgumentException('First arguments must be Math_Complex object');
     } elseif (!is_numeric($real)) {
         throw new InvalidArgumentException("An real number is needed as second parameter");
     } else {
         $ar = $c1->getReal();
         $ai = $c1->getIm();
         if ($ar == 0 && $ai == 0) {
             $r = $i = 0.0;
         } else {
             $logr = log($c1->abs());
             $theta = $c1->arg();
             $rho = exp($logr * $real);
             $beta = $theta * $real;
             $r = $rho * cos($beta);
             $i = $rho * sin($beta);
         }
         return new Math_Complex($r, $i);
     }
 }
 function testPowReal()
 {
     /*{{{*/
     $tmp = Math_ComplexOp::powReal($this->cnum1, M_E);
     $this->assertEquals('-0.217519902849 + 0.0771254874156i', $tmp->toString());
 }
if (!Math_ComplexOp::areEqual($a, $b)) {
    echo "a != b\n";
}
$z = Math_ComplexOp::add($a, $b);
echo "add(a, b) = " . $z->toString() . "\n";
$z = Math_ComplexOp::sub($a, $b);
echo "sub(a,b) = a - b = " . $z->toString() . "\n";
$t = Math_ComplexOp::sub($b, $a);
echo "b - a: " . $t->toString() . "\n";
$t = Math_ComplexOp::sub($b, Math_ComplexOp::conjugate($a));
echo "b - a': " . $t->toString() . "\n";
$v = Math_ComplexOp::conjugate($b);
$t = Math_ComplexOp::sub($v, $a);
echo "b' - a: " . $t->toString() . "\n";
$v = Math_ComplexOp::conjugate($b);
$t = Math_ComplexOp::sub($v, Math_ComplexOp::conjugate($a));
echo "b' - a': " . $t->toString() . "\n";
$z = Math_ComplexOp::mult($a, $b);
echo "mult(a, b) = " . $z->toString() . "\n";
$z = Math_ComplexOp::div($a, $b);
echo "div(a, b) = " . $z->toString() . "\n";
$z = Math_ComplexOp::pow($a, $b);
echo "pow(a, b) = " . $z->toString() . "\n";
$z = Math_ComplexOp::logBase($a, $b);
echo "logBase(a, b) = " . $z->toString() . "\n";
$z = Math_ComplexOp::multReal($a, M_PI);
echo "multReal(a, M_PI) = " . $z->toString() . "\n";
$z = Math_ComplexOp::multIm($a, $im);
echo "multIm(a, i) = " . $z->toString() . "\n";
$z = Math_ComplexOp::powReal($a, M_E);
echo "powReal(a, M_E) = " . $z->toString() . "\n";