Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
Math::Cephes::Complex(User Contributed Perl DocumentatMath::Cephes::Complex(3)

NAME
	 Math::Cephes::Complex - Perl interface	to the cephes complex number routines

SYNOPSIS
	 use Math::Cephes::Complex qw(cmplx);
	 my $z1	= cmplx(2,3);	       # $z1 = 2 + 3 i
	 my $z2	= cmplx(3,4);	       # $z2 = 3 + 4 i
	 my $z3	= $z1->radd($z2);      # $z3 = $z1 + $z2

DESCRIPTION
       This module is a	layer on top of	the basic routines in the cephes math
       library to handle complex numbers. A complex number is created via any
       of the following	syntaxes:

	 my $f = Math::Cephes::Complex->new(3, 2);   # $f = 3 +	2 i
	 my $g = new Math::Cephes::Complex(5, 3);    # $g = 5 +	3 i
	 my $h = cmplx(7, 5);			     # $h = 7 +	5 i

       the last	one being available by importing cmplx.	If no arguments	are
       specified, as in

	my $h =	cmplx();

       then the	defaults $z = 0	+ 0 i are assumed. The real and	imaginary part
       of a complex number are represented respectively	by

	  $f->{r}; $f->{i};

       or, as methods,

	  $f->r;  $f->i;

       and can be set according	to

	 $f->{r} = 4; $f->{i} =	9;

       or, again, as methods,

	 $f->r(4);   $f->i(9);

       The complex number can be printed out as

	 print $f->as_string;

       A summary of the	usage is as follows.

       csin: Complex circular sine
	    SYNOPSIS:

	    # void csin();
	    # cmplx z, w;

	    $z = cmplx(2, 3);	 # $z =	2 + 3 i
	    $w = $z->csin;
	    print $w->{r}, '  ', $w->{i};  # prints real and imaginary parts of	$w
	    print $w->as_string;	   # prints $w as Re($w) + i Im($w)

	    DESCRIPTION:

	    If
		z = x +	iy,

	    then

		w = sin	x  cosh	y  +  i	cos x sinh y.

       ccos: Complex circular cosine
	    SYNOPSIS:

	    # void ccos();
	    # cmplx z, w;

	    $z = cmplx(2, 3);	 # $z =	2 + 3 i
	    $w = $z->ccos;
	    print $w->{r}, '  ', $w->{i};  # prints real and imaginary parts of	$w
	    print $w->as_string;	   # prints $w as Re($w) + i Im($w)

	    DESCRIPTION:

	    If
		z = x +	iy,

	    then

		w = cos	x  cosh	y  -  i	sin x sinh y.

       ctan: Complex circular tangent
	    SYNOPSIS:

	    # void ctan();
	    # cmplx z, w;

	    $z = cmplx(2, 3);	 # $z =	2 + 3 i
	    $w = $z->ctan;
	    print $w->{r}, '  ', $w->{i};  # prints real and imaginary parts of	$w
	    print $w->as_string;	   # prints $w as Re($w) + i Im($w)

	    DESCRIPTION:

	    If
		z = x +	iy,

	    then

		      sin 2x  +	 i sinh	2y
		w  =  --------------------.
		       cos 2x  +  cosh 2y

	    On the real	axis the denominator is	zero at	odd multiples
	    of PI/2.  The denominator is evaluated by its Taylor
	    series near	these points.

       ccot: Complex circular cotangent
	    SYNOPSIS:

	    # void ccot();
	    # cmplx z, w;

	    $z = cmplx(2, 3);	 # $z =	2 + 3 i
	    $w = $z->ccot;
	    print $w->{r}, '  ', $w->{i};  # prints real and imaginary parts of	$w
	    print $w->as_string;	   # prints $w as Re($w) + i Im($w)

	    DESCRIPTION:

	    If
		z = x +	iy,

	    then

		      sin 2x  -	 i sinh	2y
		w  =  --------------------.
		       cosh 2y	-  cos 2x

	    On the real	axis, the denominator has zeros	at even
	    multiples of PI/2.	Near these points it is	evaluated
	    by a Taylor	series.

       casin: Complex circular arc sine
	    SYNOPSIS:

	    # void casin();
	    # cmplx z, w;

	    $z = cmplx(2, 3);	 # $z =	2 + 3 i
	    $w = $z->casin;
	    print $w->{r}, '  ', $w->{i};  # prints real and imaginary parts of	$w
	    print $w->as_string;	   # prints $w as Re($w) + i Im($w)

	    DESCRIPTION:

	    Inverse complex sine:

					  2
	    w =	-i clog( iz + csqrt( 1 - z ) ).

       cacos: Complex circular arc cosine
	    SYNOPSIS:

	    # void cacos();
	    # cmplx z, w;

	    $z = cmplx(2, 3);	 # $z =	2 + 3 i
	    $w = $z->cacos;
	    print $w->{r}, '  ', $w->{i};  # prints real and imaginary parts of	$w
	    print $w->as_string;	   # prints $w as Re($w) + i Im($w)

	    DESCRIPTION:

	    w =	arccos z  =  PI/2 - arcsin z.

       catan: Complex circular arc tangent
	    SYNOPSIS:

	    # void catan();
	    # cmplx z, w;

	    $z = cmplx(2, 3);	 # $z =	2 + 3 i
	    $w = $z->catan;
	    print $w->{r}, '  ', $w->{i};  # prints real and imaginary parts of	$w
	    print $w->as_string;	   # prints $w as Re($w) + i Im($w)

	    DESCRIPTION:

	    If
		z = x +	iy,

	    then
		     1	     (	  2x	 )
	    Re w  =  - arctan(-----------)  +  k PI
		     2	     (	   2	2)
			     (1	- x  - y )

			  ( 2	      2)
		     1	  (x  +	 (y+1) )
	    Im w  =  - log(------------)
		     4	  ( 2	      2)
			  (x  +	 (y-1) )

	    Where k is an arbitrary integer.

       csinh: Complex hyperbolic sine
	     SYNOPSIS:

	     # void csinh();
	     # cmplx z,	w;

	    $z = cmplx(2, 3);	 # $z =	2 + 3 i
	    $w = $z->csinh;
	    print $w->{r}, '  ', $w->{i};  # prints real and imaginary parts of	$w
	    print $w->as_string;	   # prints $w as Re($w) + i Im($w)

	     DESCRIPTION:

	     csinh z = (cexp(z)	- cexp(-z))/2
		     = sinh x *	cos y  +  i cosh x * sin y .

       casinh: Complex inverse hyperbolic sine
	     SYNOPSIS:

	     # void casinh();
	     # cmplx z,	w;

	    $z = cmplx(2, 3);	 # $z =	2 + 3 i
	    $w = $z->casinh;
	    print $w->{r}, '  ', $w->{i};  # prints real and imaginary parts of	$w
	    print $w->as_string;	   # prints $w as Re($w) + i Im($w)

	     DESCRIPTION:

	     casinh z =	-i casin iz .

       ccosh: Complex hyperbolic cosine
	     SYNOPSIS:

	     # void ccosh();
	     # cmplx z,	w;

	    $z = cmplx(2, 3);	 # $z =	2 + 3 i
	    $w = $z->ccosh;
	    print $w->{r}, '  ', $w->{i};  # prints real and imaginary parts of	$w
	    print $w->as_string;	   # prints $w as Re($w) + i Im($w)

	     DESCRIPTION:

	     ccosh(z) =	cosh x	cos y +	i sinh x sin y .

       cacosh: Complex inverse hyperbolic cosine
	     SYNOPSIS:

	     # void cacosh();
	     # cmplx z,	w;

	    $z = cmplx(2, 3);	 # $z =	2 + 3 i
	    $w = $z->cacosh;
	    print $w->{r}, '  ', $w->{i};  # prints real and imaginary parts of	$w
	    print $w->as_string;	   # prints $w as Re($w) + i Im($w)

	     DESCRIPTION:

	     acosh z = i acos z	.

       ctanh: Complex hyperbolic tangent
	    SYNOPSIS:

	    # void ctanh();
	    # cmplx z, w;

	    $z = cmplx(2, 3);	 # $z =	2 + 3 i
	    $w = $z->ctanh;
	    print $w->{r}, '  ', $w->{i};  # prints real and imaginary parts of	$w
	    print $w->as_string;	   # prints $w as Re($w) + i Im($w)

	    DESCRIPTION:

	    tanh z = (sinh 2x  +  i sin	2y) / (cosh 2x + cos 2y) .

       catanh: Complex inverse hyperbolic tangent
	     SYNOPSIS:

	     # void catanh();
	     # cmplx z,	w;

	    $z = cmplx(2, 3);	 # $z =	2 + 3 i
	    $w = $z->catanh;
	    print $w->{r}, '  ', $w->{i};  # prints real and imaginary parts of	$w
	    print $w->as_string;	   # prints $w as Re($w) + i Im($w)

	     DESCRIPTION:

	     Inverse tanh, equal to  -i	catan (iz);

       cpow: Complex power function
	     SYNOPSIS:

	     # void cpow();
	     # cmplx a,	z, w;

	    $a = cmplx(5, 6);	 # $z =	5 + 6 i
	    $z = cmplx(2, 3);	 # $z =	2 + 3 i
	    $w = $a->cpow($z);
	    print $w->{r}, '  ', $w->{i};  # prints real and imaginary parts of	$w
	    print $w->as_string;	   # prints $w as Re($w) + i Im($w)

	     DESCRIPTION:

	     Raises complex A to the complex Zth power.
	     Definition	is per AMS55 # 4.2.8,
	     analytically equivalent to	cpow(a,z) = cexp(z clog(a)).

       cmplx: Complex number arithmetic
	    SYNOPSIS:

	    # typedef struct {
	    #	  double r;	real part
	    #	  double i;	imaginary part
	    #	 }cmplx;

	    # cmplx *a,	*b, *c;

	    $a = cmplx(3, 5);	# $a = 3 + 5 i
	    $b = cmplx(2, 3);	# $b = 2 + 3 i

	    $c = $a->cadd( $b );  #   c	= a + b
	    $c = $a->csub( $b );  #   c	= a - b
	    $c = $a->cmul( $b );  #   c	= a * b
	    $c = $a->cdiv( $b );  #   c	= a / b
	    $c = $a->cneg;	  #   c	= -a
	    $c = $a->cmov;	  #   c	= a

	    print $c->{r}, '  ', $c->{i};   # prints real and imaginary	parts of $c
	    print $c->as_string;	   # prints $c as Re($c) + i Im($c)

	    DESCRIPTION:

	    Addition:
	       c.r  =  b.r + a.r
	       c.i  =  b.i + a.i

	    Subtraction:
	       c.r  =  b.r - a.r
	       c.i  =  b.i - a.i

	    Multiplication:
	       c.r  =  b.r * a.r  -  b.i * a.i
	       c.i  =  b.r * a.i  +  b.i * a.r

	    Division:
	       d    =  a.r * a.r  +  a.i * a.i
	       c.r  = (b.r * a.r  + b.i	* a.i)/d
	       c.i  = (b.i * a.r  -  b.r * a.i)/d

       cabs: Complex absolute value
	    SYNOPSIS:

	    # double a,	cabs();
	    # cmplx z;

	    $z = cmplx(2, 3);	 # $z =	2 + 3 i
	    $a = cabs( $z );

	    DESCRIPTION:

	    If z = x + iy

	    then

		  a = sqrt( x**2 + y**2	).

	    Overflow and underflow are avoided by testing the magnitudes
	    of x and y before squaring.	 If either is outside half of
	    the	floating point full scale range, both are rescaled.

       csqrt: Complex square root
	    SYNOPSIS:

	    # void csqrt();
	    # cmplx z, w;

	    $z = cmplx(2, 3);	 # $z =	2 + 3 i
	    $w = $z->csqrt;
	    print $w->{r}, '  ', $w->{i};  # prints real and imaginary parts of	$w
	    print $w->as_string;	   # prints $w as Re($w) + i Im($w)

	    DESCRIPTION:

	    If z = x + iy,  r =	|z|, then

				  1/2
	    Im w  =  [ (r - x)/2 ]   ,

	    Re w  =  y / 2 Im w.

	    Note that -w is also a square root of z.  The root chosen
	    is always in the upper half	plane.

	    Because of the potential for cancellation error in r - x,
	    the	result is sharpened by doing a Heron iteration
	    (see sqrt.c) in complex arithmetic.

BUGS
	Please report any to Randy Kobes <randy@theoryx5.uwinnipeg.ca>

SEE ALSO
       For the basic interface to the cephes complex number routines, see
       Math::Cephes. See also Math::Complex for	a more extensive interface to
       complex number routines.

COPYRIGHT
       The C code for the Cephes Math Library is Copyright 1984, 1987, 1989,
       2002 by Stephen L. Moshier, and is available at
       http://www.netlib.org/cephes/.  Direct inquiries	to 30 Frost Street,
       Cambridge, MA 02140.

       The perl	interface is copyright 2000, 2002 by Randy Kobes.  This
       library is free software; you can redistribute it and/or	modify it
       under the same terms as Perl itself.

perl v5.32.1			  2016-05-06	      Math::Cephes::Complex(3)

NAME | SYNOPSIS | DESCRIPTION | BUGS | SEE ALSO | COPYRIGHT

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=Math::Cephes::Complex&sektion=3&manpath=FreeBSD+13.0-RELEASE+and+Ports>

home | help