// LAPACK++ (V. 1.1)
// (C) 1992-1996 All Rights Reserved.
#include "arch.h"
#ifndef _LA_SYMM_TRIDIAG_MAT_DOUBLE_H_
#define _LA_SYMM_TRIDIAG_MAT_DOUBLE_H_
#include LA_VECTOR_DOUBLE_H
class DLLIMPORT LaSymmTridiagMatDouble
{
int size_;
LaVectorDouble d_; /* main diag */
LaVectorDouble dl_; /* lower diag */
static double outofbounds_; /* return this address, when addresing
out of bounds */
static int debug_; // print debug info.
static int *info_; // print matrix info only, not values
// originally 0, set to 1, and then
// reset to 0 after use.
public:
// constructors / destructor
inline LaSymmTridiagMatDouble();
inline LaSymmTridiagMatDouble(int N);
inline LaSymmTridiagMatDouble(const LaSymmTridiagMatDouble &);
inline ~LaSymmTridiagMatDouble();
// operators and member functions
double& operator()(int i, int j);
double operator()(int i, int j) const;
LaVectorDouble diag(int); /* 0 main, -1 lower, 1 upper */
LaVectorDouble diag(int) const;
inline LaSymmTridiagMatDouble& ref(LaSymmTridiagMatDouble&);
inline LaSymmTridiagMatDouble& copy(const LaSymmTridiagMatDouble&);
inline const LaSymmTridiagMatDouble& info() const {
int *t = info_;
*t = 1;
return *this;};
inline int debug() const { // return debug flag.
return debug_;}
inline int size() const;
friend DLLIMPORT std::ostream& operator<<(std::ostream&,const LaSymmTridiagMatDouble&);
};
DLLIMPORT std::ostream& operator<<(std::ostream& s, const LaSymmTridiagMatDouble& td);
// constructors
inline LaSymmTridiagMatDouble::LaSymmTridiagMatDouble():
d_(), dl_()
{
size_ = 0;
}
inline LaSymmTridiagMatDouble::LaSymmTridiagMatDouble(int N):
d_(N), dl_(N-1)
{
size_ = N;
}
inline LaSymmTridiagMatDouble::LaSymmTridiagMatDouble(const LaSymmTridiagMatDouble& td): d_(td.d_), dl_(td.dl_)
{
size_ = td.size_;
}
// destructor
inline LaSymmTridiagMatDouble::~LaSymmTridiagMatDouble()
{
}
// operators and member functions
inline LaSymmTridiagMatDouble& LaSymmTridiagMatDouble::ref(LaSymmTridiagMatDouble&T)
{
d_.ref(T.d_);
dl_.ref(T.dl_);
size_ = T.size_;
return *this;
}
inline LaSymmTridiagMatDouble& LaSymmTridiagMatDouble::copy(const LaSymmTridiagMatDouble&T)
{
d_.copy(T.d_);
dl_.copy(T.dl_);
size_ = T.size_;
return *this;
}
inline int LaSymmTridiagMatDouble::size() const
{
return size_;
}
#endif
// _LA_SYMM_TRIDIAG_MAT_DOUBLE_H_
syntax highlighted by Code2HTML, v. 0.9.1