SourcePro® API Reference Guide

 
List of all members | Public Member Functions
RWHermRangeEigServer< TypeT > Class Template Reference

The Hermitian eigenvalue server class, allowing the computation of only the eigenvalues in a given range and (optionally) their corresponding eigenvectors. More...

#include <rw/lapack/heigsrv.h>

Inheritance diagram for RWHermRangeEigServer< TypeT >:
RWHermEigServer< TypeT >

Public Member Functions

 RWHermRangeEigServer (bool computeVecs=true)
 
virtual bool computeEigenVectors () const
 
void computeEigenVectors (bool computeVecs)
 
virtual RWSymEigDecomp< double > decompose (const RWTriDiagDecomp< TypeT > &A)
 
double setLarge (double large)
 
void setRange (double from, double to)
 
double setSmall (double small)
 
double setTolerance (double tolerance)
 
- Public Member Functions inherited from RWHermEigServer< TypeT >
virtual RWHermEigDecomp< TypeT > operator() (const RWHermMat< TypeT > &A)
 
virtual RWHermEigDecomp< TypeT > operator() (const RWHermBandMat< TypeT > &A)
 

Detailed Description

template<class TypeT>
class RWHermRangeEigServer< TypeT >

The Hermitian eigenvalue server class, RWHermRangeEigServer, allows the computation of only the eigenvalues in a given range and (optionally) their corresponding eigenvectors. The computation uses the bisection method to find the eigenvalues, followed by inverse iteration to find the eigenvectors.

Synopsis
#include <rw/lapack/heigsrv.h>
RWHermEigDecomp<DComplex> eig = server(A); // A is a
// RWHermBandMat<DComplex>
Example
#include <iostream>
#include <rw/lapack/heigsrv.h>
int main()
{
RWHermMat<DComplex> A; // input a matrix
std::cin >> A;
RWHermRangeEigServer<DComplex> server; // configure a server
server.setRange(0.0, 0.5); // Set the range from 0.0 to 0.5
RWHermEigDecomp<DComplex> eig = server(A);
return 0;
}

Constructor & Destructor Documentation

template<class TypeT>
RWHermRangeEigServer< TypeT >::RWHermRangeEigServer ( bool  computeVecs = true)

Constructs a server. The parameter indicates whether this server should be configured to compute eigenvectors as well as eigenvalues. The new server is configured to compute all eigenvalues.

Member Function Documentation

template<class TypeT>
virtual bool RWHermRangeEigServer< TypeT >::computeEigenVectors ( ) const
virtual

Returns true if this server is configured to compute eigenvectors as well as eigenvalues.

Implements RWHermEigServer< TypeT >.

template<class TypeT>
void RWHermRangeEigServer< TypeT >::computeEigenVectors ( bool  computeVecs)

Sets whether or not the server should compute eigenvectors as well as eigenvalues.

template<class TypeT>
virtual RWSymEigDecomp<double> RWHermRangeEigServer< TypeT >::decompose ( const RWTriDiagDecomp< TypeT > &  A)
virtual

Computes the eigenvalue decomposition of the tridiagonal matrix inside the tridiagonal decomposition.

Implements RWHermEigServer< TypeT >.

template<class TypeT>
double RWHermRangeEigServer< TypeT >::setLarge ( double  large)

Sets the upper boundary on the range of eigenvalues to be computed. Returns the previous upper boundary.

template<class TypeT>
void RWHermRangeEigServer< TypeT >::setRange ( double  from,
double  to 
)

Sets the range of eigenvalues to be computed. To set up a range which is open on one side (extends to infinity), you can use the setSmall() or setLarge() functions.

template<class TypeT>
double RWHermRangeEigServer< TypeT >::setSmall ( double  small)

Sets the lower boundary on the range of eigenvalues to be computed. Returns the previous lower boundary.

template<class TypeT>
double RWHermRangeEigServer< TypeT >::setTolerance ( double  tolerance)

Sets the tolerance to which you must compute the eigenvalues. Returns the previous tolerance.

Copyright © 2023 Rogue Wave Software, Inc., a Perforce company. All Rights Reserved.