C Programming on the IBM PC (C Programmers Reference Guide Series)

The complex Class

The header <complex> defines the complex class, which represents complex numbers. It also defines a series of functions and operators that operate on objects of type complex.

The template specification for complex is shown here:

        template <class T> class complex

Here, T specifies the type used to store the components of a complex number. There are three predefined specializations of complex:

       class complex<float>        class complex<double>        class complex<long double>

The complex class has the following constructors:

        complex(const T &real = T( ), const T = &imaginary = T( ));         complex(const complex &ob);         template <class T1> complex(const complex<T1> &ob);

The first constructs a complex object with a real component of real and an imaginary component of imaginary. These values default to zero if not specified. The second creates a copy of ob. The third creates a complex object from ob.

The following operations are defined for complex objects:

+

*

/

– =

+=

/=

*=

=

==

!=

 

The nonassignment operators are overloaded three ways: once for operations involving a complex object on the left and a scalar object on the right, again for operations involving a scalar on the left and a complex object on the right, and finally for operations involving two complex objects. For example, the following types of operations are allowed:

      complex_ob + scalar       scalar + complex_ob       complex_ob + complex_ob

Operations involving scalar quantities affect only the real component.

Two member functions are defined for complex: real( ) and imag( ). They are shown here:

     T real( ) const;      T imag( ) const;

The real( ) function returns the real component of the invoking object and imag( ) returns the imaginary component. The following functions are also defined for complex objects:

Function

Description

template <class T>   T abs(const complex<T> &ob);

Returns the absolute value of ob

template <class T>   T arg(const complex<T> &ob);

Returns the phase angle of ob

template <class T> complex<T>   conj(const complex<T> &ob);

Returns the conjugate of ob

template <class T>   complex<T> cos(const complex<T> &ob);

Returns the cosine of ob

template <class T>   complex<T>      cosh(const complex<T> &ob);

Returns the hyperbolic cosine of ob

template <class T>   complex<T>      exp(const complex<T> &ob);

Returns the eob

template <class T>   T imag(const complex<T> &ob);

Returns the imaginary component of ob

template <class T>   complex<T>      log(const complex<T> &ob);

Returns the natural logarithm of ob

template <class T>   complex<T>      log10(const complex<T> &ob);

Returns the base 10 logarithm of ob

template <class T>   T norm(const complex<T> &ob);

Returns the magnitude of ob squared

template <class T>   complex<T>      polar(const T &v, const T &theta=0);

Returns a complex number that has the magnitude specified by v and a phase angle of theta

template <class T>   complex<T>      pow(const complex<T> &b, int e);

Returns be

template <class T>   complex<T>      pow(const complex<T> &b,               const T &e);

Returns be

template <class T>   complex<T>      pow(const complex<T> &b,               const complex<T> &e);

Returns be

template <class T>   complex<T>      pow(const T &b,               const complex<T> &e);

Returns be

template <class T>   T real(const complex<T> &ob);

Returns the real component of ob

template <class T>   complex<T> sin(const complex<T> &ob);

Returns the sine of ob

template <class T>   complex<T>      sinh(const complex<T> &ob);

Returns the hyperbolic sine of ob

template <class T>   complex<T>      sqrt(const complex<T> &ob);

Returns the square root of ob

template <class T>   complex<T>      tan(const complex<T> &ob);

Returns the tangent of ob

template <class T>   complex<T>      tanh(const complex<T> &ob);

Returns the hyperbolic tangent of ob

Категории