Go to the documentation of this file.00001 #ifndef __NEW_MAT_SUB_MATRIX_H__
00002 #define __NEW_MAT_SUB_MATRIX_H__
00003
00004
00005
00008 class GetSubMatrix : public NegatedMatrix
00009 {
00010 int row_skip;
00011 int row_number;
00012 int col_skip;
00013 int col_number;
00014 bool IsSym;
00015
00016 GetSubMatrix
00017 (const BaseMatrix* bmx, int rs, int rn, int cs, int cn, bool is)
00018 : NegatedMatrix(bmx),
00019 row_skip(rs), row_number(rn), col_skip(cs), col_number(cn), IsSym(is) {}
00020 void SetUpLHS();
00021 friend class BaseMatrix;
00022 public:
00023 GetSubMatrix() : row_skip(0), row_number(0), col_skip(0), col_number(0) {}
00024 GetSubMatrix(const GetSubMatrix& g)
00025 : NegatedMatrix(g.bm), row_skip(g.row_skip), row_number(g.row_number),
00026 col_skip(g.col_skip), col_number(g.col_number), IsSym(g.IsSym) {}
00027 ~GetSubMatrix() {}
00028 GeneralMatrix* Evaluate(MatrixType mt=MatrixTypeUnSp);
00029 void operator=(const BaseMatrix&);
00030 void operator+=(const BaseMatrix&);
00031 void operator-=(const BaseMatrix&);
00032 void operator=(const GetSubMatrix& m) { operator=((const BaseMatrix&)m); }
00033 void operator<<(const BaseMatrix&);
00034 void operator<<(const double*);
00035 void operator<<(const float*);
00036 void operator<<(const int*);
00037 MatrixInput operator<<(double);
00038 MatrixInput operator<<(float);
00039 MatrixInput operator<<(int f);
00040 void operator=(Real);
00041 void operator+=(Real);
00042 void operator-=(Real r) { operator+=(-r); }
00043 void operator*=(Real);
00044 void operator/=(Real r) { operator*=(1.0/r); }
00045 void inject(const GeneralMatrix&);
00046 void Inject(const GeneralMatrix& GM) { inject(GM); }
00047 MatrixBandWidth bandwidth() const;
00048 NEW_DELETE(GetSubMatrix)
00049 };
00050
00051 #endif
00052