8 #include <Eigen/Sparse>
26 inline double*
mep(
int i,
int j) {
35 static double zero = 0.0;
60 virtual std::vector<std::pair<int, int>>
nonzeros()
const;
97 virtual void setrow(
int,
double in) {
127 virtual void bcopy(
Matrix* mout,
int i0,
int j0,
int n0,
int m0,
int i1,
int j1)
const {
139 virtual double det(
int* e)
const {
171 double&
coeff(
int,
int)
override;
172 double getval(
int i,
int j)
const override;
173 int nrow()
const override;
174 int ncol()
const override;
175 void resize(
int,
int)
override;
179 void muls(
double,
Matrix* out)
const override;
187 void setrow(
int,
double in)
override;
188 void setcol(
int,
double in)
override;
189 void setdiag(
int,
double in)
override;
190 void zero()
override;
191 void ident()
override;
193 void pow(
int,
Matrix* out)
const override;
197 void bcopy(
Matrix* mout,
int i0,
int j0,
int n0,
int m0,
int i1,
int j1)
const override;
201 double det(
int* exponent)
const override;
204 Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor>
m_{};
205 std::unique_ptr<Eigen::FullPivLU<decltype(
m_)>>
lu_{};
213 double&
coeff(
int,
int)
override;
214 int nrow()
const override;
215 int ncol()
const override;
216 double getval(
int,
int)
const override;
217 void ident()
override;
224 void setrow(
int,
double in)
override;
225 void setcol(
int,
double in)
override;
226 void setdiag(
int,
double in)
override;
228 std::vector<std::pair<int, int>>
nonzeros()
const override;
233 void zero()
override;
236 Eigen::SparseMatrix<double, Eigen::RowMajor>
m_{};
237 std::unique_ptr<Eigen::SparseLU<decltype(
m_)>>
lu_{};
double getval(int i, int j) const override
void exp(Matrix *out) const override
void mulm(Matrix *in, Matrix *out) const override
void solv(Vect *vin, Vect *vout, bool use_lu) override
int nrow() const override
void getcol(int, Vect *out) const override
double & coeff(int, int) override
~OcFullMatrix() override=default
void inverse(Matrix *out) const override
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor > m_
void setrow(int, Vect *in) override
void pow(int, Matrix *out) const override
void bcopy(Matrix *mout, int i0, int j0, int n0, int m0, int i1, int j1) const override
int ncol() const override
void mulv(Vect *in, Vect *out) const override
std::unique_ptr< Eigen::FullPivLU< decltype(m_)> > lu_
void resize(int, int) override
void transpose(Matrix *out) override
void symmeigen(Matrix *mout, Vect *vout) const override
void add(Matrix *, Matrix *out) const override
double det(int *exponent) const override
void getrow(int, Vect *out) const override
void setcol(int, Vect *in) override
void muls(double, Matrix *out) const override
void getdiag(int, Vect *out) const override
void setdiag(int, Vect *in) override
void copy(Matrix *out) const override
void svd1(Matrix *u, Matrix *v, Vect *d) const override
virtual void mulv(Vect *in, Vect *out) const
virtual double det(int *e) const
virtual void mulm(Matrix *in, Matrix *out) const
virtual void transpose(Matrix *out)
virtual ~OcMatrix()=default
virtual void pow(int, Matrix *out) const
virtual double spgetrowval(int i, int jindx, int *j) const
virtual void setcol(int, Vect *in)
virtual void getcol(int, Vect *out) const
virtual void resize(int, int)
virtual void setcol(int, double in)
virtual double & coeff(int i, int j)
virtual void svd1(Matrix *u, Matrix *v, Vect *d) const
static OcMatrix * instance(int nrow, int ncol, int type=MFULL)
virtual void exp(Matrix *out) const
void mulv(Vect &in, Vect &out) const
virtual int sprowlen(int) const
virtual void setrow(int, double in)
virtual void copy(Matrix *out) const
virtual void setdiag(int, double in)
virtual void setrow(int, Vect *in)
double & operator()(int i, int j)
virtual void add(Matrix *, Matrix *out) const
double * mep(int i, int j)
virtual std::vector< std::pair< int, int > > nonzeros() const
virtual void inverse(Matrix *out) const
virtual void getdiag(int, Vect *out) const
virtual void muls(double, Matrix *out) const
double operator()(int i, int j) const
virtual void solv(Vect *vin, Vect *vout, bool use_lu)
virtual void getrow(int, Vect *out) const
virtual double getval(int i, int j) const
virtual void setdiag(int, Vect *in)
virtual void bcopy(Matrix *mout, int i0, int j0, int n0, int m0, int i1, int j1) const
virtual void symmeigen(Matrix *mout, Vect *vout) const
int sprowlen(int) const override
std::vector< std::pair< int, int > > nonzeros() const override
int nrow() const override
~OcSparseMatrix() override=default
Eigen::SparseMatrix< double, Eigen::RowMajor > m_
void mulv(Vect *in, Vect *out) const override
double spgetrowval(int i, int jindx, int *j) const override
double getval(int, int) const override
void setdiag(int, Vect *in) override
int ncol() const override
void setcol(int, Vect *in) override
double & coeff(int, int) override
std::unique_ptr< Eigen::SparseLU< decltype(m_)> > lu_
void setrow(int, Vect *in) override
void solv(Vect *vin, Vect *vout, bool use_lu) override
fixed_vector< double > IvocVect