/* ---------------------------------------------------------------------------- * GTSAM Copyright 2010, Georgia Tech Research Corporation, * Atlanta, Georgia 30332-0415 * All Rights Reserved * Authors: Frank Dellaert, et al. (see THANKS for the full author list) * See LICENSE for the license information * -------------------------------------------------------------------------- */ /** * @file linearExceptions.cpp * @brief Exceptions that may be thrown by linear solver components * @author Richard Roberts * @date Aug 17, 2012 */ #include #include #include #include namespace gtsam { /* ************************************************************************* */ const char* IndeterminantLinearSystemException::what() const throw() { if(!description_) { description_ = String( "\nIndeterminant linear system detected while working near variable\n" + boost::lexical_cast(j_) + + " (Symbol: " + boost::lexical_cast( gtsam::DefaultKeyFormatter(gtsam::Symbol(j_))) + ").\n" "\n\ Thrown when a linear system is ill-posed. The most common cause for this\n\ error is having underconstrained variables. Mathematically, the system is\n\ underdetermined. See the GTSAM Doxygen documentation at\n\ http://borg.cc.gatech.edu/ on gtsam::IndeterminantLinearSystemException for\n\ more information."); } return description_->c_str(); } /* ************************************************************************* */ const char* InvalidNoiseModel::what() const throw() { if(description_.empty()) description_ = (boost::format( "A JacobianFactor was attempted to be constructed or modified to use a\n" "noise model of incompatible dimension. The JacobianFactor has\n" "dimensionality (i.e. length of error vector) %d but the provided noise\n" "model has dimensionality %d.") % factorDims % noiseModelDims).str(); return description_.c_str(); } /* ************************************************************************* */ const char* InvalidMatrixBlock::what() const throw() { if(description_.empty()) description_ = (boost::format( "A JacobianFactor was attempted to be constructed with a matrix block of\n" "inconsistent dimension. The JacobianFactor has %d rows (i.e. length of\n" "error vector) but the provided matrix block has %d rows.") % factorRows % blockRows).str(); return description_.c_str(); } }