📄 matrix.cc
字号:
RefSCMatrixRefSCMatrix::block(int i) const{ BlockedSCMatrix *b = dynamic_cast<BlockedSCMatrix*>(pointer()); if (b) return b->block(i); return *this;}///////////////////////////////////////////////////////////////////// RefSymmSCMatrix membersRefSymmSCMatrix::RefSymmSCMatrix(){} RefSymmSCMatrix::RefSymmSCMatrix (const RefSymmSCMatrix & o): Ref<SymmSCMatrix> (o){} RefSymmSCMatrix::RefSymmSCMatrix (SymmSCMatrix * o): Ref<SymmSCMatrix> (o){}RefSymmSCMatrix::~RefSymmSCMatrix (){}RefSymmSCMatrix&RefSymmSCMatrix::operator=(SymmSCMatrix* cr){ Ref<SymmSCMatrix>::operator=(cr); return *this;}RefSymmSCMatrix&RefSymmSCMatrix::operator=(const RefSymmSCMatrix & c){ Ref<SymmSCMatrix>::operator=(c); return *this;}RefSymmSCMatrix::RefSymmSCMatrix(const RefSCDimension&a, const Ref<SCMatrixKit>&k){ assign_pointer(k->symmmatrix(a));}voidRefSymmSCMatrix::set_element(int i, int j, double a) const{ require_nonnull(); pointer()->set_element(i,j,a);}voidRefSymmSCMatrix::accumulate_element(int i, int j, double a) const{ require_nonnull(); pointer()->accumulate_element(i,j,a);}doubleRefSymmSCMatrix::get_element(int i, int j) const{ require_nonnull(); return pointer()->get_element(i,j);}RefSCMatrixRefSymmSCMatrix::get_subblock(int br, int er, int bc, int ec){ require_nonnull(); RefSCMatrix ret = pointer()->get_subblock(br,er,bc,ec); return ret;}RefSymmSCMatrixRefSymmSCMatrix::get_subblock(int br, int er){ require_nonnull(); RefSymmSCMatrix ret = pointer()->get_subblock(br,er); return ret;}voidRefSymmSCMatrix::assign_subblock(const RefSCMatrix& sb, int br, int er, int bc, int ec){ require_nonnull(); sb.require_nonnull(); pointer()->assign_subblock(sb.pointer(),br,er,bc,ec);}voidRefSymmSCMatrix::assign_subblock(const RefSymmSCMatrix& sb, int br, int er){ require_nonnull(); sb.require_nonnull(); pointer()->assign_subblock(sb.pointer(),br,er);}voidRefSymmSCMatrix::accumulate_subblock(const RefSCMatrix& sb, int br, int er, int bc, int ec){ require_nonnull(); sb.require_nonnull(); pointer()->accumulate_subblock(sb.pointer(),br,er,bc,ec);}voidRefSymmSCMatrix::accumulate_subblock(const RefSymmSCMatrix& sb, int br, int er){ require_nonnull(); sb.require_nonnull(); pointer()->accumulate_subblock(sb.pointer(),br,er);}RefSCVectorRefSymmSCMatrix::get_row(int i){ require_nonnull(); RefSCVector ret = pointer()->get_row(i); return ret;}voidRefSymmSCMatrix::assign_row(const RefSCVector& v, int i){ require_nonnull(); v.require_nonnull(); pointer()->assign_row(v.pointer(),i);}voidRefSymmSCMatrix::accumulate_row(const RefSCVector& v, int i){ require_nonnull(); v.require_nonnull(); pointer()->accumulate_row(v.pointer(),i);}voidRefSymmSCMatrix::accumulate_symmetric_product(const RefSCMatrix& a) const{ require_nonnull(); pointer()->accumulate_symmetric_product(a.pointer());}voidRefSymmSCMatrix::accumulate_symmetric_sum(const RefSCMatrix& a) const{ require_nonnull(); pointer()->accumulate_symmetric_sum(a.pointer());}voidRefSymmSCMatrix::accumulate_transform(const RefSCMatrix& a, const RefSymmSCMatrix&b, SCMatrix::Transform t) const{ require_nonnull(); pointer()->accumulate_transform(a.pointer(),b.pointer(),t);}voidRefSymmSCMatrix::accumulate_transform(const RefSCMatrix& a, const RefDiagSCMatrix&b, SCMatrix::Transform t) const{ require_nonnull(); pointer()->accumulate_transform(a.pointer(),b.pointer(),t);}voidRefSymmSCMatrix::accumulate_transform(const RefSymmSCMatrix& a, const RefSymmSCMatrix&b) const{ require_nonnull(); pointer()->accumulate_transform(a.pointer(),b.pointer());}RefSymmSCMatrixRefSymmSCMatrix::operator+(const RefSymmSCMatrix&a) const{ require_nonnull(); a.require_nonnull(); RefSymmSCMatrix ret(dim(),kit()); ret->assign(pointer()); ret->accumulate(a.pointer()); return ret;}RefSymmSCMatrixRefSymmSCMatrix::operator-(const RefSymmSCMatrix&a) const{ require_nonnull(); a.require_nonnull(); RefSymmSCMatrix ret(dim(),kit()); ret->assign(a.pointer()); ret->scale(-1.0); ret->accumulate(pointer()); return ret;}RefSymmSCMatrixRefSymmSCMatrix::i() const{ require_nonnull(); RefSymmSCMatrix ret; ret = clone(); ret->assign(pointer()); ret->invert_this(); return ret;}RefSymmSCMatrixRefSymmSCMatrix::gi() const{ require_nonnull(); RefSymmSCMatrix ret; ret = clone(); ret->assign(pointer()); ret->gen_invert_this(); return ret;}intRefSymmSCMatrix::n() const{ if (null()) return 0; else return pointer()->dim()->n();}RefSCDimensionRefSymmSCMatrix::dim() const{ if (null()) return 0; else return pointer()->dim();}Ref<SCMatrixKit>RefSymmSCMatrix::kit() const{ if (null()) return 0; else return pointer()->kit();}SymmSCMatrixdoubleRefSymmSCMatrix::operator()(int i,int j) const{ return SymmSCMatrixdouble(pointer(),i,j);}RefSymmSCMatrixRefSymmSCMatrix::clone() const{ RefSymmSCMatrix r = kit()->symmmatrix(dim()); return r;}RefDiagSCMatrixRefSymmSCMatrix::eigvals() const{ if (null()) return 0; RefDiagSCMatrix vals = kit()->diagmatrix(dim()); RefSCMatrix vecs = kit()->matrix(dim(),dim()); diagonalize(vals,vecs); return vals;}RefSCMatrixRefSymmSCMatrix::eigvecs() const{ if (null()) return 0; RefDiagSCMatrix vals = kit()->diagmatrix(dim()); RefSCMatrix vecs = kit()->matrix(dim(),dim()); diagonalize(vals,vecs); return vecs;}doubleRefSymmSCMatrix::solve_lin(const RefSCVector& v) const{ require_nonnull(); RefSymmSCMatrix ret = clone(); ret->assign(pointer()); return ret->solve_this(v.pointer());}doubleRefSymmSCMatrix::determ() const{ require_nonnull(); RefSymmSCMatrix ret = clone(); ret->assign(pointer()); return ret->determ_this();}doubleRefSymmSCMatrix::trace() const{ require_nonnull(); return pointer()->trace();}voidRefSymmSCMatrix::diagonalize(const RefDiagSCMatrix& vals, const RefSCMatrix& vecs) const{ require_nonnull(); pointer()->diagonalize(vals.pointer(),vecs.pointer());}RefSymmSCMatrixRefSymmSCMatrix::copy() const{ if (null()) return 0; RefSymmSCMatrix v = kit()->symmmatrix(dim()); v.assign(*this); return v;}voidRefSymmSCMatrix::randomize() const{ require_nonnull(); pointer()->randomize();}voidRefSymmSCMatrix::assign(const RefSymmSCMatrix&a) const{ require_nonnull(); pointer()->assign(a.pointer());}voidRefSymmSCMatrix::assign(const double*v) const{ require_nonnull(); pointer()->assign(v);}voidRefSymmSCMatrix::assign(const double**v) const{ require_nonnull(); pointer()->assign(v);}voidRefSymmSCMatrix::convert(double*v) const{ require_nonnull(); pointer()->convert(v);}voidRefSymmSCMatrix::convert(double**v) const{ require_nonnull(); pointer()->convert(v);}voidRefSymmSCMatrix::scale(double a) const{ require_nonnull(); pointer()->scale(a);}voidRefSymmSCMatrix::assign(double a) const{ require_nonnull(); pointer()->assign(a);}voidRefSymmSCMatrix::accumulate(const RefSymmSCMatrix&a) const{ require_nonnull(); pointer()->accumulate(a.pointer());}voidRefSymmSCMatrix::element_op(const Ref<SCElementOp>&op) const{ if (nonnull()) pointer()->element_op(op);}voidRefSymmSCMatrix::element_op(const Ref<SCElementOp2>&op, const RefSymmSCMatrix&m) const{ if (nonnull()) pointer()->element_op(op,m.pointer());}voidRefSymmSCMatrix::element_op(const Ref<SCElementOp3>&op, const RefSymmSCMatrix&m, const RefSymmSCMatrix&n) const{ if (nonnull()) pointer()->element_op(op,m.pointer(),n.pointer());}voidRefSymmSCMatrix::print(ostream& out) const{ print(0,out);}voidRefSymmSCMatrix::print(const char*title,ostream&out, int precision) const{ if (nonnull()) { pointer()->print(title,out,precision); } else { if (title) out << endl << title << endl; out << "null matrix" << endl; }}RefSCMatrixRefSymmSCMatrix::operator*(const RefSCMatrix&a) const{ require_nonnull(); a.require_nonnull(); RefSCMatrix r = kit()->matrix(dim(),a->coldim()); r->assign(0.0); r->accumulate_product(pointer(),a.pointer()); return r;}RefSCMatrixRefSymmSCMatrix::operator*(const RefSymmSCMatrix&a) const{ require_nonnull(); a.require_nonnull(); RefSCMatrix r = kit()->matrix(dim(),a->dim()); r->assign(0.0); r->accumulate_product(pointer(),a.pointer()); return r;}RefSCVectorRefSymmSCMatrix::operator*(const RefSCVector&a) const{ require_nonnull(); a.require_nonnull(); RefSCVector r = kit()->vector(dim()); r->assign(0.0); r->accumulate_product(pointer(),a.pointer()); return r;}RefSymmSCMatrixRefSymmSCMatrix::operator *(double a) const{ RefSymmSCMatrix r(copy()); r.scale(a); return r;}RefSymmSCMatrixoperator *(double a, const RefSymmSCMatrix& v){ return v*a;}voidRefSymmSCMatrix::accumulate_symmetric_outer_product(const RefSCVector&v) const{ require_nonnull(); pointer()->accumulate_symmetric_outer_product(v.pointer());}doubleRefSymmSCMatrix::scalar_product(const RefSCVector&v) const{ if (null()) return 0.0; return pointer()->scalar_product(v.pointer());}voidRefSymmSCMatrix::save(StateOut&s){ if (null()) s.put(0); else { s.put(1); pointer()->save(s); }}voidRefSymmSCMatrix::restore(StateIn&s){ int have_matrix; s.get(have_matrix); if (have_matrix && nonnull()) { pointer()->restore(s); } else if (have_matrix) { ExEnv::errn() << "RefSymmSCMatrix::restore: " << "matrix not properly initialized" << endl; abort(); } else { clear(); }}intRefSymmSCMatrix::nblock() const{ BlockedSymmSCMatrix *b = dynamic_cast<BlockedSymmSCMatrix*>(pointer()); if (b) return b->nblocks(); return 1;}RefSymmSCMatrixRefSymmSCMatrix::block(int i) const{ BlockedSymmSCMatrix *b = dynamic_cast<BlockedSymmSCMatrix*>(pointer()); if (b) return b->block(i); return *this;}///////////////////////////////////////////////////////////////////// RefDiagSCMatrix membersRefDiagSCMatrix::RefDiagSCMatrix(){} RefDiagSCMatrix::RefDiagSCMatrix (const RefDiagSCMatrix & o): Ref<DiagSCMatrix> (o){} RefDiagSCMatrix::RefDiagSCMatrix (DiagSCMatrix * o): Ref<DiagSCMatrix> (o){}RefDiagSCMatrix::~RefDiagSCMatrix (){}RefDiagSCMatrix&RefDiagSCMatrix::operator=(DiagSCMatrix* cr){ Ref<DiagSCMatrix>::operator=(cr); return *this;}RefDiagSCMatrix&RefDiagSCMatrix::operator=(const RefDiagSCMatrix & c){ Ref<DiagSCMatrix>::operator=(c); return *this;}RefDiagSCMatrix::RefDiagSCMatrix(const RefSCDimension&a, const Ref<SCMatrixKit>&k){ a.require_nonnull(); assign_pointer(k->diagmatrix(a));}voidRefDiagSCMatrix::set_element(int i, double a) const{ require_nonnull(); pointer()->set_element(i,a);}voidRefDiagSCMatrix::accumulate_element(int i, double a) const{ require_nonnull(); pointer()->accumulate_element(i,a);}doubleRefDiagSCMatrix::get_element(int i) const{ require_nonnull();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -