Rogue Wave banner
Previous fileTop of DocumentContentsIndexNext file

{type}SkewMat



Data Type and Member Function Indexes
(exclusive of constructors and destructors)

Synopsis

#include <rw/dskewmat.h>     // DoubleSkewMat
#include <rw/fskewmat.h>     // FloatSkewMat
#include <rw/cskewmat.h>     // DComplexSkewMat

DoubleSkewMat A;

Description

The classes {TYPE}SkewMat encapsulate skew symmetric matrices. A skew symmetric matrix is defined by the requirement that Aij = -Aji. This strict definition implies that the diagonal entries must be 0. This requirement is relaxed by the Rogue Wave skew symmetric matrix classes, which require only that Aij = -Aji for the off-diagonal elements; in other words, the diagonal need not be 0. Skew symmetric matrices with nonzero diagonals are sometimes useful, for example, as rotation matrices in computer graphics applications.

Example

Storage Scheme

The upper triangle of the matrix is stored in column major order. The lower triangle is then calculated implicitly.

The data is stored in the following order:


[ A11 A12 A22 A13 A23 A33 ... A1n A2n A3n ... Ann ] 

The mapping between the array and storage vector is as follows:

Public Constructors

DoubleSkewMat();
FloatSkewMat();
DComplexSkewMat();
DoubleSkewMat(const DoubleSkewMat& A);
FloatSkewMat(const FloatSkewMat& A);
DComplexSkewMat(const DComplexSkewMat& A);
DoubleSkewMat(unsigned n, unsigned n);
FloatSkewMat(unsigned n, unsigned n);
DComplexSkewMat(unsigned n, unsigned n);
DoubleSkewMat(const RWMathVec<double>& vd, unsigned n, 
              unsigned n);
FloatSkewMat(const RWMathVec<float>& vd, unsigned n, 
             unsigned n);
DComplexSkewMat(const RWMathVec<DComplex>& vd, unsigned n,
                unsigned n);
DComplexSkewMat(const DoubleSkewMat& re);
DComplexSkewMat(const DoubleSkewMat& re, const DoubleSymMat& im);
DoubleSkewMat(const FloatSkewMat&);

Public Member Functions

NGFloatRef
FloatSkewMat::bcref(int i, int j);
NGDoubleRef
DoubleSkewMat::bcref(int i, int j);
NGDComplexRef
DComplexSkewMat::bcref(int i, int j);
void
FloatSkewMat::bcset(int i, int j, float x);
void
DoubleSkewMat::bcset(int i, int j, double x);
void
DComplexSkewMat::bcset(int i, int j, DComplex x);
float
FloatSkewMat::bcval(int i, int j);
double
DoubleSkewMat::bcval(int i, int j);
DComplex
DComplexSkewMat::bcval(int i, int j);
unsigned
FloatSkewMat::binaryStoreSize();
unsigned
DoubleSkewMat::binaryStoreSize();
unsigned
DComplexSkewMat::binaryStoreSize();
unsigned
FloatSkewMat::cols();
unsigned
DoubleSkewMat::cols();
unsigned
DComplexSkewMat::cols();
FloatSkewMat
FloatSkewMat::copy();
DoubleSkewMat
DoubleSkewMat::copy();
DComplexSkewMat
DComplexSkewMat::copy();
float*
FloatSkewMat::data();
double*
DoubleSkewMat::data();
DComplex*
DComplexSkewMat::data();
RWMathVec<float>
FloatSkewMat::dataVec();
RWMathVec<double>
DoubleSkewMat::dataVec();
RWMathVec<DComplex>
DComplexSkewMat::dataVec();
FloatSkewMat
FloatSkewMat::deepCopy();
DoubleSkewMat
DoubleSkewMat::deepCopy();
DComplexSkewMat
DComplexSkewMat::deepCopy();
void
FloatSkewMat::deepenShallowCopy();
void
DoubleSkewMat::deepenShallowCopy();
void
DComplexSkewMat::deepenShallowCopy();
FloatSkewMat
FloatSkewMat::leadingSubmatrix(int k);
DoubleSkewMat
DoubleSkewMat::leadingSubmatrix(int k);
DComplexSkewMat
DComplexSkewMat::leadingSubmatrix(int k);
void
FloatSkewMat::printOn(ostream&);
void
DoubleSkewMat::printOn(ostream&);
void
DComplexSkewMat::printOn(ostream&);
NGFloatRef
FloatSkewMat::ref(int i, int j);
NGDoubleRef
DoubleSkewMat::ref(int i, int j);
NGDComplexRef
DComplexSkewMat::ref(int i, int j);
FloatSkewMat
FloatSkewMat::reference(FloatSkewMat&);
DoubleSkewMat
DoubleSkewMat::reference(DoubleSkewMat&);
DComplexSkewMat
DComplexSkewMat::reference(DComplexSkewMat&);
void
DoubleSkewMat::resize(unsigned n, unsigned n);
void
FloatSkewMat::resize(unsigned n, unsigned n);
void
DComplexSkewMat::resize(unsigned n, unsigned n);
void
DoubleSkewMat::restoreFrom(RWFile&);
void
FloatSkewMat::restoreFrom(RWFile&);
void
DComplexSkewMat::restoreFrom(RWFile&);
void
DoubleSkewMat::restoreFrom(RWvistream&);
void
FloatSkewMat::restoreFrom(RWvistream&);
void
DComplexSkewMat::restoreFrom(RWvistream&);
unsigned
FloatSkewMat::rows();
unsigned
DoubleSkewMat::rows();
unsigned
DComplexSkewMat::rows();
void
DoubleSkewMat::saveOn(RWFile&);
void
FloatSkewMat::saveOn(RWFile&);
void
DComplexSkewMat::saveOn(RWFile&);
void
DoubleSkewMat::saveOn(RWvostream&);
void
FloatSkewMat::saveOn(RWvostream&);
void
DComplexSkewMat::saveOn(RWvostream&);
void
FloatSkewMat::scanFrom(istream&);
void
DoubleSkewMat::scanFrom(istream&);
void
DComplexSkewMat::scanFrom(istream&);
void
FloatSkewMat::set(int i, int j, float x);
void
DoubleSkewMat::set(int i, int j, double x);
void
DComplexSkewMat::set(int i, int j, DComplex x);
float
FloatSkewMat::val(int i, int j);
double
DoubleSkewMat::val(int i, int j);
DComplex
DComplexSkewMat::val(int i, int j);
FloatSkewMat
FloatSkewMat::zero();
DoubleSkewMat
DoubleSkewMat::zero();
DComplexSkewMat
DComplexSkewMat::zero();

Public Member Operators

NGDoubleRef   FloatSkewMat::operator()(int i, int j);
double        FloatSkewMat::operator()(int i, int j) const;
NGFloatRef    DoubleSkewMat::operator()(int i, int j);
float         DoubleSkewMat::operator()(int i, int j) const;
NGDComplexRef DComplexSkewMat::operator()(int i, int j);
DComplex      DComplexSkewMat::operator()(int i, int j) const;
DoubleSkewMat&     operator=(const DoubleSkewMat& A);
FloatSkewMat&      operator=(const FloatSkewMat& A);
DComplexSkewMat&   operator=(const DComplexSkewMat& A);
DoubleSkewMat&      operator==(const DoubleSkewMat& A);
FloatSkewMat&       operator==(const FloatSkewMat& A);
DComplexSkewMat&    operator==(const DComplexSkewMat& A);
DoubleSkewMat&      operator!=(const DoubleSkewMat& A);
FloatSkewMat&       operator!=(const FloatSkewMat& A);
DComplexSkewMat&    operator!=(const DComplexSkewMat& A);
DoubleSkewMat&      operator*=(double x);
FloatSkewMat&       operator*=(float x);
DComplexSkewMat&    operator*=(DComplex x);
DoubleSkewMat&      operator/=(double x);
FloatSkewMat&       operator/=(float x);
DComplexSkewMat&    operator/=(DComplex x);
DoubleSkewMat&      operator+=(const DoubleSkewMat& A);
FloatSkewMat&       operator+=(const FloatSkewMat& A);
DComplexSkewMat&    operator+=(const DComplexSkewMat& A);
DoubleSkewMat&      operator-=(const DoubleSkewMat& A);
FloatSkewMat&       operator-=(const FloatSkewMat& A);
DComplexSkewMat&    operator-=(const DComplexSkewMat& A);
DoubleSkewMat&      operator*=(const DoubleSkewMat& A);
FloatSkewMat&       operator*=(const FloatSkewMat& A);
DComplexSkewMat&    operator*=(const DComplexSkewMat& A);
DoubleSkewMat&      operator/=(const DoubleSkewMat& A);
FloatSkewMat&       operator/=(const FloatSkewMat& A);
DComplexSkewMat&    operator/=(const DComplexSkewMat& A);

Global Operators

DoubleSkewMat       operator+(const DoubleSkewMat&);
FloatSkewMat        operator+(const FloatSkewMat&);
DComplexSkewMat     operator+(const DComplexSkewMat&);
DoubleSkewMat       operator-(const DoubleSkewMat&);
FloatSkewMat        operator-(const FloatSkewMat&);
DComplexSkewMat     operator-(const DComplexSkewMat&);
DoubleSkewMat    operator+(const DoubleSkewMat&,
const DoubleSkewMat&); FloatSkewMat operator+(const FloatSkewMat&,
const FloatSkewMat&); DComplexSkewMat operator+(const DComplexSkewMat&,
const DComplexSkewMat&); DoubleSkewMat operator-(const DoubleSkewMat&,
const DoubleSkewMat&); FloatSkewMat operator-(const FloatSkewMat&,
const FloatSkewMat&); DComplexSkewMat operator-(const DComplexSkewMat&,
const DComplexSkewMat&); DoubleSkewMat operator*(const DoubleSkewMat&,
const DoubleSkewMat&); FloatSkewMat operator*(const FloatSkewMat&,
const FloatSkewMat&); DComplexSkewMat operator*(const DComplexSkewMat&,
const DComplexSkewMat&); DoubleSkewMat operator/(const DoubleSkewMat&,
const DoubleSkewMat&); FloatSkewMat operator/(const FloatSkewMat&,
const FloatSkewMat&); DComplexSkewMat operator/(const DComplexSkewMat&,
const DComplexSkewMat&);
DoubleSkewMat      operator*(double,const DoubleSkewMat&);
DoubleSkewMat      operator*(const DoubleSkewMat&,double);
FloatSkewMat       operator*(float,const FloatSkewMat&);
FloatSkewMat       operator*(const FloatSkewMat&,float);
DComplexSkewMat    operator*(DComplex,const DComplexSkewMat&);
DComplexSkewMat    operator*(const DComplexSkewMat&,DComplex);
DoubleSkewMat      operator/(double,const DoubleSkewMat&);
DoubleSkewMat      operator/(const DoubleSkewMat&,double);
FloatSkewMat       operator/(float,const FloatSkewMat&);
FloatSkewMat       operator/(const FloatSkewMat&,float);
DComplexSkewMat    operator/(DComplex,const DComplexSkewMat&);
DComplexSkewMat    operator/(const DComplexSkewMat&,DComplex);
ostream&    operator<<(ostream& s, const DoubleSkewMat&);
ostream&    operator<<(ostream& s, const FloatSkewMat&);
ostream&    operator<<(ostream& s, const DComplexSkewMat&);
istream&    operator>>(istream& s, const DoubleSkewMat&);
istream&    operator>>(istream& s, const FloatSkewMat&);
istream&    operator>>(istream& s, const DComplexSkewMat&);

Global Functions

DoubleSymMat
abs(const DoubleSkewMat&);
FloatSymMat
abs(const FloatSkewMat&);
DoubleSymMat
abs(const DComplexSkewMat&);
DComplexSkewMat
conj(const DComplexSkewMat& A);
DoubleSymMat
imag(const DComplexSkewMat& A);
DoubleSkewMat
norm(const DComplexSkewMat& A);
RWMathVec<double>
product(const DoubleSkewMat& A, const RWMathVec<double>& x);
RWMathVec<float>
product(const FloatSkewMat& A, const RWMathVec<float>& x);
RWMathVec<DComplex>
product(const DComplexSkewMat& A,const RWMathVec<DComplex>& x);
RWMathVec<double>
product(const RWMathVec<double>& x, const DoubleSkewMat& A);
RWMathVec<float>
product(const RWMathVec<float>& x, const FloatSkewMat& A);
RWMathVec<DComplex>
product(const RWMathVec<DComplex>& x,
const DComplexSkewMat& A);
DoubleSkewMat
real(const DComplexSkewMat& A);
FloatSkewMat
toFloat(const DoubleSkewMat&);
DoubleSymMat
toSkewMat(const RWGenMat<double>&, RWBoolean keepMainDiag=TRUE);
FloatSymMat
toSkewMat(const RWGenMat<float>&, RWBoolean keepMainDiag=TRUE);
DComplexSymMat
toSkewMat(const RWGenMat<DComplex>&,RWBoolean keepMainDiag=TRUE);
DoubleSkewMat
transpose(const DoubleSkewMat&);
FloatSkewMat
transpose(const FloatSkewMat&);
DComplexSkewMat
transpose(const DComplexSkewMat&);


Previous fileTop of DocumentContentsIndexNext file

©Copyright 1999, Rogue Wave Software, Inc.
Send mail to report errors or comment on the documentation.