Complex< T, NumberTraits > Class Template Reference

#include <ComplexNumber.h>

List of all members.

Public Types

typedef T number_type
typedef Complex< T, NumberTraits > complex_type
typedef NumberTraits traits_type

Public Member Functions

 Complex ()
 Complex (const number_type re)
 Complex (const number_type re, const number_type im)
 Complex (const complex_type &c)
complex_typeoperator= (const complex_type &rhs)
complex_typeoperator= (const number_type &rhs)
 ~Complex ()
number_type real () const
number_type imag () const
number_type norm () const
number_type phase () const
const complex_type zero () const
const complex_type one () const
complex_type sqrt ()
complex_type operator- () const
complex_type operator+ (const complex_type &rhs) const
complex_type operator- (const complex_type &rhs) const
complex_type operator * (const complex_type &rhs) const
complex_type operator/ (const complex_type &rhs) const
complex_typeoperator+= (const complex_type &rhs)
complex_typeoperator-= (const complex_type &rhs)
complex_typeoperator *= (const complex_type &rhs)
complex_typeoperator/= (const complex_type &rhs)
bool operator== (const complex_type &rhs) const
bool operator!= (const complex_type &rhs) const
bool operator< (const complex_type &rhs) const
bool operator> (const complex_type &rhs) const
complex_typeoperator+= (const number_type &rhs)
complex_typeoperator-= (const number_type &rhs)
complex_typeoperator *= (const number_type &rhs)
complex_typeoperator/= (const number_type &rhs)
void display (std::ostream &os=std::cout) const
void load (std::istream &is)
void save (std::ostream &os) const

Public Attributes

number_type x
number_type y

Friends

std::ostream & operator<< (std::ostream &os, const complex_type &number)
std::istream & operator>> (std::istream &is, complex_type &number)
complex_type operator+ (const complex_type &lhs, const number_type &rhs)
complex_type operator+ (const number_type &lhs, const complex_type &rhs)
complex_type operator- (const complex_type &lhs, const number_type &rhs)
complex_type operator- (const number_type &lhs, const complex_type &rhs)
complex_type operator * (const complex_type &lhs, const number_type &rhs)
complex_type operator * (const number_type &lhs, const complex_type &rhs)
complex_type operator/ (const complex_type &lhs, const number_type &rhs)
complex_type operator/ (const number_type &lhs, const complex_type &rhs)
bool operator== (const complex_type &lhs, const number_type &rhs)
bool operator== (const number_type &lhs, const complex_type &rhs)
bool operator!= (const complex_type &lhs, const number_type &rhs)
bool operator!= (const number_type &lhs, const complex_type &rhs)


Detailed Description

template<class T, class NumberTraits = AlgebraicTraits< T >>
class Complex< T, NumberTraits >

Models the set of complex numbers. The class is almost similar to the std::complex class from the standard C++ library, only that it has some extra methods like: norm, sqrt, phase and other methods that are required by the math library: display, zero, one, load, save

Definition at line 28 of file ComplexNumber.h.


Member Typedef Documentation

template<class T, class NumberTraits = AlgebraicTraits< T >>
typedef T Complex< T, NumberTraits >::number_type

The type of the components of the complex number in algebraic form

Definition at line 36 of file ComplexNumber.h.

template<class T, class NumberTraits = AlgebraicTraits< T >>
typedef Complex< T, NumberTraits > Complex< T, NumberTraits >::complex_type

A short name for Complex< T, NumberTraits >

Definition at line 40 of file ComplexNumber.h.

template<class T, class NumberTraits = AlgebraicTraits< T >>
typedef NumberTraits Complex< T, NumberTraits >::traits_type

The AlgebraicTraits type associated to our class

Definition at line 44 of file ComplexNumber.h.


Constructor & Destructor Documentation

template<class T, class NumberTraits = AlgebraicTraits< T >>
Complex< T, NumberTraits >::Complex (  )  [inline]

Default constructor

Definition at line 49 of file ComplexNumber.h.

template<class T, class NumberTraits = AlgebraicTraits< T >>
Complex< T, NumberTraits >::Complex ( const number_type  re  )  [inline]

Constructor from a real number.

Parameters:
re Real part of the complex number

Definition at line 56 of file ComplexNumber.h.

template<class T, class NumberTraits = AlgebraicTraits< T >>
Complex< T, NumberTraits >::Complex ( const number_type  re,
const number_type  im 
) [inline]

Constructor from a real and imaginary parts.

Parameters:
re Real part of the complex number
im Imaginary part of the complex number

Definition at line 64 of file ComplexNumber.h.

template<class T, class NumberTraits = AlgebraicTraits< T >>
Complex< T, NumberTraits >::Complex ( const complex_type c  )  [inline]

Copy constructor

Parameters:
c object to copy

Definition at line 71 of file ComplexNumber.h.


Member Function Documentation

template<class T, class NumberTraits = AlgebraicTraits< T >>
complex_type& Complex< T, NumberTraits >::operator= ( const complex_type rhs  )  [inline]

Assignment operator

Parameters:
rhs object to copy

Definition at line 78 of file ComplexNumber.h.

References Complex< T, NumberTraits >::x, and Complex< T, NumberTraits >::y.

template<class T, class NumberTraits = AlgebraicTraits< T >>
complex_type& Complex< T, NumberTraits >::operator= ( const number_type rhs  )  [inline]

Assignment operator

Parameters:
rhs Real part of complex number

Definition at line 93 of file ComplexNumber.h.

References Complex< T, NumberTraits >::x, and Complex< T, NumberTraits >::y.

template<class T, class NumberTraits = AlgebraicTraits< T >>
number_type Complex< T, NumberTraits >::real (  )  const [inline]

Return the real part

Returns:
Real part of this complex number

Definition at line 107 of file ComplexNumber.h.

References Complex< T, NumberTraits >::x.

Referenced by Complex< T, NumberTraits >::display().

Here is the caller graph for this function:

template<class T, class NumberTraits = AlgebraicTraits< T >>
number_type Complex< T, NumberTraits >::imag (  )  const [inline]

Return the imaginary part

Returns:
Imaginary part of this complex number

Definition at line 115 of file ComplexNumber.h.

References Complex< T, NumberTraits >::y.

Referenced by Complex< T, NumberTraits >::display().

Here is the caller graph for this function:

template<class T, class NumberTraits = AlgebraicTraits< T >>
number_type Complex< T, NumberTraits >::norm (  )  const [inline]

Return the norm of this complex number

Returns:
the modulus or euclidean norm of this number

Definition at line 123 of file ComplexNumber.h.

References Complex< T, NumberTraits >::one(), Complex< T, NumberTraits >::x, Complex< T, NumberTraits >::y, and Complex< T, NumberTraits >::zero().

Referenced by AlgebraicTraits< Complex< T, AlgebraicTraits< T > > >::abs(), AlgebraicTraits< Complex< T, AlgebraicTraits< T > > >::norm(), Complex< T, NumberTraits >::operator<(), and Complex< T, NumberTraits >::operator>().

Here is the call graph for this function:

Here is the caller graph for this function:

template<class T, class NumberTraits = AlgebraicTraits< T >>
number_type Complex< T, NumberTraits >::phase (  )  const [inline]

Return the phase of this complex number

Returns:
the phase (or angle) of this number

Definition at line 161 of file ComplexNumber.h.

References Complex< T, NumberTraits >::x, and Complex< T, NumberTraits >::y.

template<class T, class NumberTraits = AlgebraicTraits< T >>
const complex_type Complex< T, NumberTraits >::zero (  )  const [inline]

Return the complex number equal to zero

Returns:
the complex number equal to zero

Definition at line 172 of file ComplexNumber.h.

References Complex< T, NumberTraits >::x.

Referenced by Complex< T, NumberTraits >::display(), Complex< T, NumberTraits >::norm(), and Complex< T, NumberTraits >::sqrt().

Here is the caller graph for this function:

template<class T, class NumberTraits = AlgebraicTraits< T >>
const complex_type Complex< T, NumberTraits >::one (  )  const [inline]

Return the complex number equal to one

Returns:
the complex number equal to one

Definition at line 180 of file ComplexNumber.h.

References Complex< T, NumberTraits >::x.

Referenced by Complex< T, NumberTraits >::norm(), and Complex< T, NumberTraits >::sqrt().

Here is the caller graph for this function:

template<class T, class NumberTraits = AlgebraicTraits< T >>
complex_type Complex< T, NumberTraits >::sqrt (  )  [inline]

Return the square root of this complex number

Returns:
the square root of this complex number

Definition at line 188 of file ComplexNumber.h.

References Complex< T, NumberTraits >::one(), Complex< T, NumberTraits >::x, Complex< T, NumberTraits >::y, and Complex< T, NumberTraits >::zero().

Referenced by AlgebraicTraits< Complex< T, AlgebraicTraits< T > > >::sqrt().

Here is the call graph for this function:

Here is the caller graph for this function:

template<class T, class NumberTraits = AlgebraicTraits< T >>
complex_type Complex< T, NumberTraits >::operator- (  )  const [inline]

Unary minus operator

Definition at line 253 of file ComplexNumber.h.

References Complex< T, NumberTraits >::x, and Complex< T, NumberTraits >::y.

template<class T, class NumberTraits = AlgebraicTraits< T >>
complex_type Complex< T, NumberTraits >::operator+ ( const complex_type rhs  )  const [inline]

Addition operator

Definition at line 260 of file ComplexNumber.h.

References Complex< T, NumberTraits >::x, and Complex< T, NumberTraits >::y.

template<class T, class NumberTraits = AlgebraicTraits< T >>
complex_type Complex< T, NumberTraits >::operator- ( const complex_type rhs  )  const [inline]

Subtraction operator

Definition at line 267 of file ComplexNumber.h.

References Complex< T, NumberTraits >::x, and Complex< T, NumberTraits >::y.

template<class T, class NumberTraits = AlgebraicTraits< T >>
complex_type Complex< T, NumberTraits >::operator * ( const complex_type rhs  )  const [inline]

Multiplication operator

Definition at line 274 of file ComplexNumber.h.

References Complex< T, NumberTraits >::x, and Complex< T, NumberTraits >::y.

template<class T, class NumberTraits = AlgebraicTraits< T >>
complex_type Complex< T, NumberTraits >::operator/ ( const complex_type rhs  )  const [inline]

Division operator

Definition at line 281 of file ComplexNumber.h.

References Complex< T, NumberTraits >::x, and Complex< T, NumberTraits >::y.

template<class T, class NumberTraits = AlgebraicTraits< T >>
complex_type& Complex< T, NumberTraits >::operator+= ( const complex_type rhs  )  [inline]

Addition assignment operator

Definition at line 306 of file ComplexNumber.h.

References Complex< T, NumberTraits >::x, and Complex< T, NumberTraits >::y.

template<class T, class NumberTraits = AlgebraicTraits< T >>
complex_type& Complex< T, NumberTraits >::operator-= ( const complex_type rhs  )  [inline]

Subtraction assignment operator

Definition at line 314 of file ComplexNumber.h.

References Complex< T, NumberTraits >::x, and Complex< T, NumberTraits >::y.

template<class T, class NumberTraits = AlgebraicTraits< T >>
complex_type& Complex< T, NumberTraits >::operator *= ( const complex_type rhs  )  [inline]

Multiplication assignment operator

Definition at line 323 of file ComplexNumber.h.

References Complex< T, NumberTraits >::x, and Complex< T, NumberTraits >::y.

template<class T, class NumberTraits = AlgebraicTraits< T >>
complex_type& Complex< T, NumberTraits >::operator/= ( const complex_type rhs  )  [inline]

Division assignment operator

Definition at line 333 of file ComplexNumber.h.

template<class T, class NumberTraits = AlgebraicTraits< T >>
bool Complex< T, NumberTraits >::operator== ( const complex_type rhs  )  const [inline]

Equality operator

Definition at line 341 of file ComplexNumber.h.

References Complex< T, NumberTraits >::x, and Complex< T, NumberTraits >::y.

template<class T, class NumberTraits = AlgebraicTraits< T >>
bool Complex< T, NumberTraits >::operator< ( const complex_type rhs  )  const [inline]

Less than operator

Definition at line 357 of file ComplexNumber.h.

References Complex< T, NumberTraits >::norm().

Here is the call graph for this function:

template<class T, class NumberTraits = AlgebraicTraits< T >>
complex_type& Complex< T, NumberTraits >::operator+= ( const number_type rhs  )  [inline]

Addition assignment operator

Definition at line 369 of file ComplexNumber.h.

References Complex< T, NumberTraits >::x.

template<class T, class NumberTraits = AlgebraicTraits< T >>
complex_type& Complex< T, NumberTraits >::operator-= ( const number_type rhs  )  [inline]

Subtraction assignment operator

Definition at line 377 of file ComplexNumber.h.

References Complex< T, NumberTraits >::x.

template<class T, class NumberTraits = AlgebraicTraits< T >>
complex_type& Complex< T, NumberTraits >::operator *= ( const number_type rhs  )  [inline]

Multiplication assignment operator

Definition at line 385 of file ComplexNumber.h.

References Complex< T, NumberTraits >::x, and Complex< T, NumberTraits >::y.

template<class T, class NumberTraits = AlgebraicTraits< T >>
complex_type& Complex< T, NumberTraits >::operator/= ( const number_type rhs  )  [inline]

Division assignment operator

Definition at line 394 of file ComplexNumber.h.

References Complex< T, NumberTraits >::x, and Complex< T, NumberTraits >::y.

template<class T, class NumberTraits = AlgebraicTraits< T >>
void Complex< T, NumberTraits >::display ( std::ostream &  os = std::cout  )  const [inline]

Output this number to an std::ostream

Parameters:
os std::ostream derived stream reference

Definition at line 479 of file ComplexNumber.h.

References Complex< T, NumberTraits >::imag(), Complex< T, NumberTraits >::real(), and Complex< T, NumberTraits >::zero().

Here is the call graph for this function:

template<class T, class NumberTraits = AlgebraicTraits< T >>
void Complex< T, NumberTraits >::load ( std::istream &  is  )  [inline]

Load this complex number from a stream

Parameters:
is stream to load from

Definition at line 492 of file ComplexNumber.h.

References Complex< T, NumberTraits >::x, and Complex< T, NumberTraits >::y.

template<class T, class NumberTraits = AlgebraicTraits< T >>
void Complex< T, NumberTraits >::save ( std::ostream &  os  )  const [inline]

Save this complex number to a stream

Parameters:
os stream to save to

Definition at line 501 of file ComplexNumber.h.

References Complex< T, NumberTraits >::x, and Complex< T, NumberTraits >::y.


Friends And Related Function Documentation

template<class T, class NumberTraits = AlgebraicTraits< T >>
std::ostream& operator<< ( std::ostream &  os,
const complex_type number 
) [friend]

std::ostream insertion operator

Definition at line 239 of file ComplexNumber.h.

template<class T, class NumberTraits = AlgebraicTraits< T >>
std::istream& operator>> ( std::istream &  is,
complex_type number 
) [friend]

std::istream extraction operator

Definition at line 246 of file ComplexNumber.h.

template<class T, class NumberTraits = AlgebraicTraits< T >>
complex_type operator+ ( const complex_type lhs,
const number_type rhs 
) [friend]

Addition operator

Definition at line 402 of file ComplexNumber.h.

template<class T, class NumberTraits = AlgebraicTraits< T >>
complex_type operator+ ( const number_type lhs,
const complex_type rhs 
) [friend]

Addition operator

Definition at line 408 of file ComplexNumber.h.

template<class T, class NumberTraits = AlgebraicTraits< T >>
complex_type operator- ( const complex_type lhs,
const number_type rhs 
) [friend]

Subtraction operator

Definition at line 414 of file ComplexNumber.h.

template<class T, class NumberTraits = AlgebraicTraits< T >>
complex_type operator- ( const number_type lhs,
const complex_type rhs 
) [friend]

Subtraction operator

Definition at line 420 of file ComplexNumber.h.

template<class T, class NumberTraits = AlgebraicTraits< T >>
complex_type operator * ( const complex_type lhs,
const number_type rhs 
) [friend]

Multiplication operator

Definition at line 426 of file ComplexNumber.h.

template<class T, class NumberTraits = AlgebraicTraits< T >>
complex_type operator * ( const number_type lhs,
const complex_type rhs 
) [friend]

Multiplication operator

Definition at line 432 of file ComplexNumber.h.

template<class T, class NumberTraits = AlgebraicTraits< T >>
complex_type operator/ ( const complex_type lhs,
const number_type rhs 
) [friend]

Division operator

Definition at line 438 of file ComplexNumber.h.

template<class T, class NumberTraits = AlgebraicTraits< T >>
complex_type operator/ ( const number_type lhs,
const complex_type rhs 
) [friend]

Division operator

Definition at line 444 of file ComplexNumber.h.

template<class T, class NumberTraits = AlgebraicTraits< T >>
bool operator== ( const complex_type lhs,
const number_type rhs 
) [friend]

Equality comparison operator

Definition at line 450 of file ComplexNumber.h.

template<class T, class NumberTraits = AlgebraicTraits< T >>
bool operator== ( const number_type lhs,
const complex_type rhs 
) [friend]

Equality comparison operator

Definition at line 457 of file ComplexNumber.h.


Member Data Documentation

template<class T, class NumberTraits = AlgebraicTraits< T >>
number_type Complex< T, NumberTraits >::x

the real part of the complex number

Definition at line 509 of file ComplexNumber.h.

Referenced by AlgebraicTraits< Complex< T, AlgebraicTraits< T > > >::equals(), AlgebraicTraits< Complex< T, AlgebraicTraits< T > > >::is_zero(), Complex< T, NumberTraits >::load(), Complex< T, NumberTraits >::norm(), Complex< T, NumberTraits >::one(), AlgebraicTraits< Complex< T, AlgebraicTraits< T > > >::one(), Complex< T, NumberTraits >::operator *(), Complex< T, NumberTraits >::operator *=(), Complex< T, NumberTraits >::operator!=(), Complex< T, NumberTraits >::operator+(), Complex< T, NumberTraits >::operator+=(), Complex< T, NumberTraits >::operator-(), Complex< T, NumberTraits >::operator-=(), Complex< T, NumberTraits >::operator/(), Complex< T, NumberTraits >::operator/=(), Complex< T, NumberTraits >::operator=(), Complex< T, NumberTraits >::operator==(), Complex< T, NumberTraits >::phase(), Complex< T, NumberTraits >::real(), Complex< T, NumberTraits >::save(), Complex< T, NumberTraits >::sqrt(), Complex< T, NumberTraits >::zero(), and AlgebraicTraits< Complex< T, AlgebraicTraits< T > > >::zero().

template<class T, class NumberTraits = AlgebraicTraits< T >>
number_type Complex< T, NumberTraits >::y

the imaginary part of the complex number

Definition at line 511 of file ComplexNumber.h.

Referenced by AlgebraicTraits< Complex< T, AlgebraicTraits< T > > >::equals(), Complex< T, NumberTraits >::imag(), AlgebraicTraits< Complex< T, AlgebraicTraits< T > > >::is_zero(), Complex< T, NumberTraits >::load(), Complex< T, NumberTraits >::norm(), Complex< T, NumberTraits >::operator *(), Complex< T, NumberTraits >::operator *=(), Complex< T, NumberTraits >::operator!=(), Complex< T, NumberTraits >::operator+(), Complex< T, NumberTraits >::operator+=(), Complex< T, NumberTraits >::operator-(), Complex< T, NumberTraits >::operator-=(), Complex< T, NumberTraits >::operator/(), Complex< T, NumberTraits >::operator/=(), Complex< T, NumberTraits >::operator=(), Complex< T, NumberTraits >::operator==(), Complex< T, NumberTraits >::phase(), Complex< T, NumberTraits >::save(), and Complex< T, NumberTraits >::sqrt().


The documentation for this class was generated from the following file:
Math-Objects Library Docs  Generated by: doxygen