⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 newmatex.cpp

📁 matrix library for linux and windos
💻 CPP
字号:
//$$ newmatex.cpp                    Exception handler// Copyright (C) 1992,3,4,7: R B Davies#define WANT_STREAM                  // include.h will get stream fns#include "include.h"                 // include standard files#include "newmat.h"#ifdef use_namespacenamespace NEWMAT {#endifunsigned long OverflowException::Select;unsigned long SingularException::Select;unsigned long NPDException::Select;unsigned long ConvergenceException::Select;unsigned long ProgramException::Select;unsigned long IndexException::Select;unsigned long VectorException::Select;unsigned long NotSquareException::Select;unsigned long SubMatrixDimensionException::Select;unsigned long IncompatibleDimensionsException::Select;unsigned long NotDefinedException::Select;unsigned long CannotBuildException::Select;unsigned long InternalException::Select;static void MatrixDetails(const GeneralMatrix& A)// write matrix details to Exception buffer{   MatrixBandWidth bw = A.BandWidth(); int ubw = bw.upper; int lbw = bw.lower;   BaseException::AddMessage("MatrixType = ");   BaseException::AddMessage(A.Type().Value());   BaseException::AddMessage("  # Rows = "); BaseException::AddInt(A.Nrows());   BaseException::AddMessage("; # Cols = "); BaseException::AddInt(A.Ncols());   if (lbw >=0)      { BaseException::AddMessage("; lower BW = "); BaseException::AddInt(lbw); }   if (ubw >=0)      { BaseException::AddMessage("; upper BW = "); BaseException::AddInt(ubw); }   BaseException::AddMessage("\n");}NPDException::NPDException(const GeneralMatrix& A)   : Runtime_error(){   Select = BaseException::Select;   AddMessage("detected by Newmat: matrix not positive definite\n\n");   MatrixDetails(A);   Tracer::AddTrace();}SingularException::SingularException(const GeneralMatrix& A)   : Runtime_error(){   Select = BaseException::Select;   AddMessage("detected by Newmat: matrix is singular\n\n");   MatrixDetails(A);   Tracer::AddTrace();}ConvergenceException::ConvergenceException(const GeneralMatrix& A)   : Runtime_error(){   Select = BaseException::Select;   AddMessage("detected by Newmat: process fails to converge\n\n");   MatrixDetails(A);   Tracer::AddTrace();}ConvergenceException::ConvergenceException(const char* c) : Runtime_error(){   Select = BaseException::Select;   AddMessage("detected by Newmat: ");   AddMessage(c); AddMessage("\n\n");   if (c) Tracer::AddTrace();}OverflowException::OverflowException(const char* c) : Runtime_error(){   Select = BaseException::Select;   AddMessage("detected by Newmat: ");   AddMessage(c); AddMessage("\n\n");   if (c) Tracer::AddTrace();}ProgramException::ProgramException(const char* c) : Logic_error(){   Select = BaseException::Select;   AddMessage("detected by Newmat: ");   AddMessage(c); AddMessage("\n\n");   if (c) Tracer::AddTrace();}ProgramException::ProgramException(const char* c, const GeneralMatrix& A)   : Logic_error(){   Select = BaseException::Select;   AddMessage("detected by Newmat: ");   AddMessage(c); AddMessage("\n\n");   MatrixDetails(A);   if (c) Tracer::AddTrace();}ProgramException::ProgramException(const char* c, const GeneralMatrix& A,   const GeneralMatrix& B) : Logic_error(){   Select = BaseException::Select;   AddMessage("detected by Newmat: ");   AddMessage(c); AddMessage("\n\n");   MatrixDetails(A); MatrixDetails(B);   if (c) Tracer::AddTrace();}ProgramException::ProgramException(const char* c, MatrixType a, MatrixType b)   : Logic_error(){   Select = BaseException::Select;   AddMessage("detected by Newmat: ");   AddMessage(c); AddMessage("\nMatrixTypes = ");   AddMessage(a.Value()); AddMessage("; ");   AddMessage(b.Value()); AddMessage("\n\n");   if (c) Tracer::AddTrace();}VectorException::VectorException() : Logic_error(){   Select = BaseException::Select;   AddMessage("detected by Newmat: cannot convert matrix to vector\n\n");   Tracer::AddTrace();}VectorException::VectorException(const GeneralMatrix& A)   : Logic_error(){   Select = BaseException::Select;   AddMessage("detected by Newmat: cannot convert matrix to vector\n\n");   MatrixDetails(A);   Tracer::AddTrace();}NotSquareException::NotSquareException(const GeneralMatrix& A)   : Logic_error(){   Select = BaseException::Select;   AddMessage("detected by Newmat: matrix is not square\n\n");   MatrixDetails(A);   Tracer::AddTrace();}SubMatrixDimensionException::SubMatrixDimensionException()   : Logic_error(){   Select = BaseException::Select;   AddMessage("detected by Newmat: incompatible submatrix dimension\n\n");   Tracer::AddTrace();}IncompatibleDimensionsException::IncompatibleDimensionsException()   : Logic_error(){   Select = BaseException::Select;   AddMessage("detected by Newmat: incompatible dimensions\n\n");   Tracer::AddTrace();}IncompatibleDimensionsException::IncompatibleDimensionsException   (const GeneralMatrix& A, const GeneralMatrix& B)      : Logic_error(){   Select = BaseException::Select;   AddMessage("detected by Newmat: incompatible dimensions\n\n");   MatrixDetails(A); MatrixDetails(B);   Tracer::AddTrace();}NotDefinedException::NotDefinedException(const char* op, const char* matrix)   : Logic_error(){   Select = BaseException::Select;   AddMessage("detected by Newmat: ");   AddMessage(op);   AddMessage(" not defined for ");   AddMessage(matrix);   AddMessage("\n\n");   Tracer::AddTrace();}CannotBuildException::CannotBuildException(const char* matrix)   : Logic_error(){   Select = BaseException::Select;   AddMessage("detected by Newmat: cannot build matrix type ");   AddMessage(matrix); AddMessage("\n\n");   Tracer::AddTrace();}IndexException::IndexException(int i, const GeneralMatrix& A)   : Logic_error(){   Select = BaseException::Select;   AddMessage("detected by Newmat: index error: requested index = ");   AddInt(i); AddMessage("\n\n");   MatrixDetails(A);   Tracer::AddTrace();}IndexException::IndexException(int i, int j, const GeneralMatrix& A)   : Logic_error(){   Select = BaseException::Select;   AddMessage("detected by Newmat: index error: requested indices = ");   AddInt(i); AddMessage(", "); AddInt(j);   AddMessage("\n\n");   MatrixDetails(A);   Tracer::AddTrace();}IndexException::IndexException(int i, const GeneralMatrix& A, bool)   : Logic_error(){   Select = BaseException::Select;   AddMessage("detected by Newmat: element error: requested index (wrt 0) = ");   AddInt(i);   AddMessage("\n\n");   MatrixDetails(A);   Tracer::AddTrace();}IndexException::IndexException(int i, int j, const GeneralMatrix& A, bool)   : Logic_error(){   Select = BaseException::Select;   AddMessage(      "detected by Newmat: element error: requested indices (wrt 0) = ");   AddInt(i); AddMessage(", "); AddInt(j);   AddMessage("\n\n");   MatrixDetails(A);   Tracer::AddTrace();}InternalException::InternalException(const char* c) : Logic_error(){   Select = BaseException::Select;   AddMessage("internal error detected by Newmat: please inform author\n");   AddMessage(c); AddMessage("\n\n");   Tracer::AddTrace();}/************************* ExeCounter functions *****************************/#ifdef DO_REPORTint ExeCounter::nreports;                      // will be set to zeroExeCounter::ExeCounter(int xl, int xf) : line(xl), fileid(xf), nexe(0) {}ExeCounter::~ExeCounter(){   nreports++;   cout << "REPORT  " << setw(6) << nreports << "  "      << setw(6) << fileid << "  " << setw(6) << line      << "  " << setw(6) << nexe << "\n";}#endif/**************************** error handler *******************************/void MatrixErrorNoSpace(void* v) { if (!v) Throw(Bad_alloc()); }// throw exception if v is null/************************* miscellanous errors ***************************/void CroutMatrix::GetRow(MatrixRowCol&)   { Throw(NotDefinedException("GetRow","Crout")); }void CroutMatrix::GetCol(MatrixRowCol&)   { Throw(NotDefinedException("GetCol","Crout")); }void CroutMatrix::operator=(const BaseMatrix&)   { Throw(NotDefinedException("=","Crout")); }void BandLUMatrix::GetRow(MatrixRowCol&)   { Throw(NotDefinedException("GetRow","BandLUMatrix")); }void BandLUMatrix::GetCol(MatrixRowCol&)   { Throw(NotDefinedException("GetCol","BandLUMatrix")); }void BandLUMatrix::operator=(const BaseMatrix&)   { Throw(NotDefinedException("=","BandLUMatrix")); }void BaseMatrix::IEQND() const   { Throw(NotDefinedException("inequalities", "matrices")); }#ifdef TEMPS_DESTROYED_QUICKLY_R   ReturnMatrixX::ReturnMatrixX(const ReturnMatrixX& tm)     : gm(tm.gm) { Throw(ProgramException("ReturnMatrixX error")); }#endif#ifdef use_namespace}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -