RationalFunction< T, NumberTraits > Class Template Reference

#include <RationalFunction.h>

List of all members.

Public Types

typedef RationalFunction<
T, NumberTraits > 
rational_type
 The type of a rational function.
typedef Polynomial< T, NumberTraits > poly_type
 The type of the rational function numerator and denominator.
typedef T number_type
 The type of the coefficients of numerator and denominator.
typedef NumberTraits traits

Public Member Functions

 RationalFunction ()
 RationalFunction (unsigned int nom_size, unsigned int den_size)
 RationalFunction (const rational_type &other)
 RationalFunction (const poly_type &nom, const poly_type &den)
 RationalFunction (const poly_type &nom)
 ~RationalFunction ()
rational_typeoperator= (const rational_type &other)
rational_type zero () const
rational_type one () const
const poly_typenominator () const
const poly_typedenominator () const
number_type operator() (const number_type &val) const
rational_typenormalize ()
rational_type operator- () const
rational_typeoperator+= (const rational_type &rhs)
rational_type operator+ (const rational_type &rhs) const
rational_typeoperator-= (const rational_type &rhs)
rational_type operator- (const rational_type &rhs) const
rational_typeoperator *= (const rational_type &rhs)
rational_type operator * (const rational_type &rhs) const
rational_typeoperator/= (const rational_type &rhs)
rational_type operator/ (const rational_type &rhs) const
rational_type inverse () const
rational_type operator+ (const poly_type &rhs) const
rational_type operator- (const poly_type &rhs) const
rational_type operator * (const poly_type &rhs) const
rational_type operator/ (const poly_type &rhs) const
bool operator== (const rational_type &rhs) const
bool operator!= (const rational_type &rhs) const
bool operator< (const rational_type &rhs) const
number_type getNorm () const
number_type evaluate (const number_type &arg) const
void display (std::ostream &os=std::cout) const
void load (std::istream &is)
void save (std::ostream &os) const

Friends

rational_type operator+ (const poly_type &lhs, const rational_type &rhs)
rational_type operator- (const poly_type &lhs, const rational_type &rhs)
rational_type operator * (const poly_type &lhs, const rational_type &rhs)
rational_type operator/ (const poly_type &lhs, const rational_type &rhs)
std::ostream & operator<< (std::ostream &os, const rational_type &r)
std::istream & operator>> (std::istream &is, rational_type &r)


Detailed Description

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

A RationalFunction Is represented internally with two Polynomial objects: the nominator and the denominator. All methods of the "RationalFunction" class are implemented in such a way that the rational function is always normalized. By normalized form of a rational function we understand that the nominator and the denominator do not have any common roots so the representation is as simple as possible. The first template parameter of the RationalFunction class ("T"), represents the type of the coefficients of the nominator and denominator the second template parameter represents the AlgebraicTraits class associated to the "T" type.

Definition at line 30 of file RationalFunction.h.


Constructor & Destructor Documentation

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

Default constructor

Definition at line 45 of file RationalFunction.h.

template<class T, class NumberTraits = AlgebraicTraits< T >>
RationalFunction< T, NumberTraits >::RationalFunction ( unsigned int  nom_size,
unsigned int  den_size 
) [inline]

Constructor

Parameters:
nom_size Represents the count of coefficients the numerator polynomial allocates memory for
den_size Represents the count of coefficients the denominator polynomial allocates memory for

Definition at line 56 of file RationalFunction.h.

template<class T, class NumberTraits = AlgebraicTraits< T >>
RationalFunction< T, NumberTraits >::RationalFunction ( const rational_type other  )  [inline]

Copy constructor

Definition at line 63 of file RationalFunction.h.

template<class T, class NumberTraits = AlgebraicTraits< T >>
RationalFunction< T, NumberTraits >::RationalFunction ( const poly_type nom,
const poly_type den 
) [inline]

Constructor from components

Parameters:
nom Numerator polynomial.
den Denominator polynomial.
Remarks:
The fraction is normalized upon construction.

Definition at line 73 of file RationalFunction.h.

References RationalFunction< T, NumberTraits >::normalize().

Here is the call graph for this function:

template<class T, class NumberTraits = AlgebraicTraits< T >>
RationalFunction< T, NumberTraits >::RationalFunction ( const poly_type nom  )  [inline, explicit]

Conversion constructor from polynomial

Parameters:
nom Numerator polynomial.

Definition at line 82 of file RationalFunction.h.

References AlgebraicTraits< T >::one(), and Polynomial< T, NumberTraits >::size().

Here is the call graph for this function:

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

Destructor

Definition at line 96 of file RationalFunction.h.


Member Function Documentation

template<class T, class NumberTraits = AlgebraicTraits< T >>
rational_type& RationalFunction< T, NumberTraits >::operator= ( const rational_type other  )  [inline]

Assignment operator

Parameters:
other Rational function to copy.
Returns:
A refference to this rational function

Definition at line 104 of file RationalFunction.h.

References RationalFunction< T, NumberTraits >::m_den, and RationalFunction< T, NumberTraits >::m_nom.

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

Create the zero rational function

Precondition:
This rational function should be initialized.
Returns:
A rational function equal to zero.

Definition at line 119 of file RationalFunction.h.

Referenced by RationalFunction< T, NumberTraits >::operator/=().

Here is the caller graph for this function:

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

Create the unity rational function

Precondition:
This rational function should be initialized.
Returns:
A rational function equal to one.

Definition at line 136 of file RationalFunction.h.

template<class T, class NumberTraits = AlgebraicTraits< T >>
const poly_type& RationalFunction< T, NumberTraits >::nominator (  )  const [inline]

Access to this rational function numerator

Returns:
A const refference to the polynomial representing the numerator

Definition at line 152 of file RationalFunction.h.

Referenced by AlgebraicTraits< RationalFunction< ScalarType, AlgebraicTraits< ScalarType > > >::is_zero(), AlgebraicTraits< RationalFunction< ScalarType, AlgebraicTraits< ScalarType > > >::one(), and AlgebraicTraits< RationalFunction< ScalarType, AlgebraicTraits< ScalarType > > >::zero().

Here is the caller graph for this function:

template<class T, class NumberTraits = AlgebraicTraits< T >>
const poly_type& RationalFunction< T, NumberTraits >::denominator (  )  const [inline]

Access to this rational function denominator

Returns:
A const refference to the polynomial representing the denominator

Definition at line 161 of file RationalFunction.h.

template<class T, class NumberTraits = AlgebraicTraits< T >>
number_type RationalFunction< T, NumberTraits >::operator() ( const number_type val  )  const [inline]

Function call operator, evaluates this rational function at the given point.

Parameters:
val Point in which to evaluate the rational function.
Returns:
The result of the evaluation.

Definition at line 171 of file RationalFunction.h.

References RationalFunction< T, NumberTraits >::evaluate().

Here is the call graph for this function:

template<class T, class NumberTraits = AlgebraicTraits< T >>
rational_type& RationalFunction< T, NumberTraits >::normalize (  )  [inline]

Normalizes this rational function

Returns:
A refference to this rational function
Remarks:
A fraction is in normalized form if the greatest common divisor of the numerator and denominator is a unit (e.g. one)

Definition at line 181 of file RationalFunction.h.

References Polynomial< T, NumberTraits >::gcd(), AlgebraicTraits< T >::one(), and Polynomial< T, NumberTraits >::size().

Referenced by RationalFunction< T, NumberTraits >::RationalFunction().

Here is the call graph for this function:

Here is the caller graph for this function:

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

Unary minus operator

Definition at line 201 of file RationalFunction.h.

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

Addition assignment operator

Parameters:
rhs Right hand side operator
Returns:
A refference to this rational function

Definition at line 210 of file RationalFunction.h.

References Polynomial< T, NumberTraits >::gcd(), RationalFunction< T, NumberTraits >::m_den, RationalFunction< T, NumberTraits >::m_nom, and Polynomial< T, NumberTraits >::polyDiv().

Here is the call graph for this function:

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

Addition operator

Parameters:
rhs Right hand side operator
Returns:
The result of the addition.

Definition at line 249 of file RationalFunction.h.

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

Subtraction assignment operator

Parameters:
rhs Right hand side operator
Returns:
A refference to this rational function

Definition at line 258 of file RationalFunction.h.

References Polynomial< T, NumberTraits >::gcd(), RationalFunction< T, NumberTraits >::m_den, RationalFunction< T, NumberTraits >::m_nom, and Polynomial< T, NumberTraits >::polyDiv().

Here is the call graph for this function:

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

Subtraction operator

Parameters:
rhs Right hand side operator
Returns:
The result of the operation

Definition at line 298 of file RationalFunction.h.

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

Multiplication assignment operator

Parameters:
rhs Right hand side operator
Returns:
A refference to this rational function

Definition at line 307 of file RationalFunction.h.

References Polynomial< T, NumberTraits >::gcd(), RationalFunction< T, NumberTraits >::m_den, RationalFunction< T, NumberTraits >::m_nom, and Polynomial< T, NumberTraits >::polyDiv().

Here is the call graph for this function:

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

Multiplication operator

Parameters:
rhs Right hand side operator
Returns:
The result of the multiplication.

Definition at line 341 of file RationalFunction.h.

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

Division assignment operator

Parameters:
rhs Right hand side operator
Returns:
A refference to this rational function

Definition at line 350 of file RationalFunction.h.

References Polynomial< T, NumberTraits >::gcd(), RationalFunction< T, NumberTraits >::m_den, RationalFunction< T, NumberTraits >::m_nom, Polynomial< T, NumberTraits >::polyDiv(), AlgebraicTraits< T >::zero(), and RationalFunction< T, NumberTraits >::zero().

Here is the call graph for this function:

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

Division operator

Parameters:
rhs Right hand side operator
Returns:
The result of the operation

Definition at line 399 of file RationalFunction.h.

template<class T, class NumberTraits = AlgebraicTraits< T >>
rational_type RationalFunction< T, NumberTraits >::inverse (  )  const [inline]

Get the inverse of this rational function

Returns:
The inverse of this rational function.

Definition at line 407 of file RationalFunction.h.

template<class T, class NumberTraits = AlgebraicTraits< T >>
rational_type RationalFunction< T, NumberTraits >::operator+ ( const poly_type rhs  )  const [inline]

Addition operator

Parameters:
rhs Right hand side operand
Returns:
The result of the operation

Definition at line 420 of file RationalFunction.h.

template<class T, class NumberTraits = AlgebraicTraits< T >>
rational_type RationalFunction< T, NumberTraits >::operator- ( const poly_type rhs  )  const [inline]

Subtraction operator

Parameters:
rhs Right hand side operand
Returns:
The result of the operation

Definition at line 430 of file RationalFunction.h.

template<class T, class NumberTraits = AlgebraicTraits< T >>
rational_type RationalFunction< T, NumberTraits >::operator * ( const poly_type rhs  )  const [inline]

Multiplication operator

Parameters:
rhs Right hand side operand
Returns:
The result of the operation

Definition at line 440 of file RationalFunction.h.

template<class T, class NumberTraits = AlgebraicTraits< T >>
rational_type RationalFunction< T, NumberTraits >::operator/ ( const poly_type rhs  )  const [inline]

Division operator

Parameters:
rhs Right hand side operand
Returns:
The result of the operation

Definition at line 450 of file RationalFunction.h.

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

Equality operator

Parameters:
rhs Right hand side operand
Returns:
True if this is equal to rhs

Definition at line 500 of file RationalFunction.h.

References RationalFunction< T, NumberTraits >::m_den, and RationalFunction< T, NumberTraits >::m_nom.

template<class T, class NumberTraits = AlgebraicTraits< T >>
bool RationalFunction< T, NumberTraits >::operator!= ( const rational_type rhs  )  const [inline]

Inequality operator

Parameters:
rhs Right hand side operand
Returns:
false if this is equal to rhs

Definition at line 513 of file RationalFunction.h.

References RationalFunction< T, NumberTraits >::m_den, and RationalFunction< T, NumberTraits >::m_nom.

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

Less than comparison operator

Parameters:
rhs Right hand side operand
Returns:
true if the norm of this rational function is less than the norm of the right hand side operand

Definition at line 525 of file RationalFunction.h.

References RationalFunction< T, NumberTraits >::getNorm().

Here is the call graph for this function:

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

Compute a norm for the rational number

Definition at line 532 of file RationalFunction.h.

Referenced by AlgebraicTraits< RationalFunction< ScalarType, AlgebraicTraits< ScalarType > > >::norm(), and RationalFunction< T, NumberTraits >::operator<().

Here is the caller graph for this function:

template<class T, class NumberTraits = AlgebraicTraits< T >>
number_type RationalFunction< T, NumberTraits >::evaluate ( const number_type arg  )  const [inline]

Evaluate the rational function at the given point.

Parameters:
arg Point in which to evaluate the rational function
Returns:
The result of the evaluation.

Definition at line 541 of file RationalFunction.h.

Referenced by RationalFunction< T, NumberTraits >::operator()().

Here is the caller graph for this function:

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

Display this rational number to a stream

Parameters:
os The stream to display into.

Definition at line 549 of file RationalFunction.h.

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

Load this from a stream

Parameters:
is stream to load from

Definition at line 579 of file RationalFunction.h.

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

Save this to a stream

Parameters:
os stream to save to

Definition at line 596 of file RationalFunction.h.


Friends And Related Function Documentation

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

Addition operator

Parameters:
lhs Left hand side operand
rhs Right hand side operand
Returns:
The result of the operation

Definition at line 461 of file RationalFunction.h.

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

Subtraction operator

Parameters:
lhs Left hand side operand
rhs Right hand side operand
Returns:
The result of the operation

Definition at line 471 of file RationalFunction.h.

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

Multiplication operator

Parameters:
lhs Left hand side operand
rhs Right hand side operand
Returns:
The result of the operation

Definition at line 481 of file RationalFunction.h.

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

Division operator

Parameters:
lhs Left hand side operand
rhs Right hand side operand
Returns:
The result of the operation

Definition at line 491 of file RationalFunction.h.

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

std::ostream insertion operator

Definition at line 560 of file RationalFunction.h.

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

std::istream extraction operator

Definition at line 569 of file RationalFunction.h.


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