Karmaşık Sayılar Hesaplama Sınıfı

<?php
class Z{
	function Z($x = "", $y = "", $kartezyen = 0, $radyan = 0 ){
		if( $radyan ){
			$this->radyan = $radyan;
		}
		list( $this->x, $this->y ) = $this->ayir(func_get_args());
	}
	function ayarla($radyan = 0){
		$this->radyan = $radyan;
		return $this->radyan;
	}
	function x(){
		return $this->x;
	}
	function y(){
		return $this->y;
	}
	function mod(){
		return hypot( $this->x, $this->y );
	}
	function arguman(){
		if( $this->radyan ){
			return rad2deg( atan( $this->y / $this->x ) );
		}
		else{
			return atan( $this->y / $this->x );
		}
	}
	function ekle(){
		list( $x, $y ) = $this->ayir(func_get_args());
		$this->x+= $x;
		$this->y+= $y;
	}
	function alt(){
		list( $x, $y ) = $this->ayir(func_get_args());
		$this->x-= $x;
		$this->y-= $y;
	}
	function cok(){
		list( $x, $y ) = $this->ayir(func_get_args());
		list( $mod, $arg ) = $this->polar( $x, $y );
		list( $this->x, $this->y ) = $this->kartezyen( $this->mod()*$mod, $this->arguman()+$arg );
	}
	function bol(){
		list( $x, $y ) = $this->ayir(func_get_args());
		list( $mod, $arg ) = $this->polar( $x, $y );
		list( $this->x, $this->y ) = $this->kartezyen( $this->mod()/$mod, $this->arguman()-$arg );
	}
	function ayir( $dizi ){
		list ($x, $y, $kartezyen, $radyan ) = $dizi;
		if( $x ){
			if( $y ){
				if( $kartezyen == 1 ){
					if( stristr( $y, "d" ) || ( ($radyan == 1) && (!stristr( $y, "d" )) ) ){
						$y = deg2rad( $y );
					}
					list( $x, $y ) = $this->kartezyen( $x, $y );
				}
				else{
					$x = $x;
					$y = $y;
				}
			}
			else{
				list( $x, $y ) = $this->ayir_no( $x );
			}
		}
		return array( @$x, @$y );
	}
	function ayir_no($veri){
		$veri = preg_replace("/\s*/","",$veri);
		if( preg_match("/(?i)[^erd\-+ij.,0-9]+/", $veri) ){
			return -1;
		}
		else{
			if( stristr( $veri, "e" ) ){
				preg_match("/(?i)([0-9]+)e-[ij]?([0-9rd]+)[ij]?/", $veri, $dizi);
				if( sizeof( $dizi ) ){
					if( veriiveri( $dizi[2], "d" ) ){
						$dizi[2] = deg2rad( $dizi[2] );
					}
					list( $re, $y ) = $this->kartezyen( $dizi[1], $dizi[2] );
				}
			}else{
				preg_match_all( "/(?i)([\-+]?[0-9.,ij]+)/", $veri, $dizi, PREG_SET_ORDER );
				if( sizeof( $dizi ) ){
					foreach( $dizi as $sayi ){
						if( preg_match( "/(?i)[ij]/", $sayi[1] ) ){
							$y += $sayi[1];
						}else{
							$re += $sayi[1];
						}
					}
				}
			}
			return array($re, $y);
		}
	}
	function kartezyen( $mod, $a ){
		return array( ( $mod*cos($a) ), ( $mod*sin($a) ) );
	}
	function polar( $re, $y ){
		return array( hypot( $re, $y ) , atan( ($y/$re) ) );
	}
}
print_r(new Z($x = "5", $y = "6", $kartezyen = 0, $radyan = 0 ));
echo "<br>";
print_r(new Z($x = "5", $y = "6", $kartezyen = 0, $radyan = 1 ));
echo "<br>";
print_r(new Z($x = "5", $y = "6", $kartezyen = 1, $radyan = 0 ));
echo "<br>";
print_r(new Z($x = "5", $y = "6", $kartezyen = 1, $radyan = 1 ));
?>

Çıktısı

Z Object ( [y] => 6 [x] => 5 ) 
Z Object ( [radyan] => 1 [y] => 6 [x] => 5 ) 
Z Object ( [y] => -1.3970774909946 [x] => 4.8008514332518 ) 
Z Object ( [radyan] => 1 [y] => 0.52264231633827 [x] => 4.9726094768414 )