36#ifndef MADNESS_TENSOR_TENSOREXCPT_H__INCLUDED
37#define MADNESS_TENSOR_TENSOREXCPT_H__INCLUDED
63 int lin,
const char *
func,
const char *file)
77 virtual const char*
what()
const throw() {
85 out <<
"TensorException: msg='";
86 if (
e.msg) out <<
e.msg;
88 if (
e.assertion) out <<
" failed assertion='" <<
90 out <<
" value=" <<
e.value <<
"\n";
91 if (
e.line) out <<
" line=" <<
e.line <<
"\n";
92 if (
e.function) out <<
" function='" <<
94 if (
e.filename) out <<
" filename='" <<
96 if (
e.tp !=
nullptr) {
97 out <<
" tensor=Tensor<";
102 out <<
"invalid_type_id>(";
105 for (
int i=0; i<
e.t.ndim(); ++i) {
107 if (i != (
e.t.ndim()-1)) out <<
",";
112 out <<
"invalid_dimensions)";
114 out <<
" at 0x" << (
void *)(
e.tp) <<
"\n";
123#define TENSOR_STRINGIZE(X) #X
124#define TENSOR_EXCEPTION_AT(F, L) TENSOR_STRINGIZE(F) "(" TENSOR_STRINGIZE(L) ")"
126#define TENSOR_EXCEPTION(msg,value,t) \
127 throw ::madness::TensorException("TENSOR EXCEPTION: " TENSOR_EXCEPTION_AT( __FILE__, __LINE__ ) ": " msg , \
128 0,value,t,__LINE__,__FUNCTION__,__FILE__)
130#define TENSOR_ASSERT(condition,msg,value,t) \
131do {if (!(condition)) \
132 throw ::madness::TensorException("TENSOR ASSERTION FAILED: " TENSOR_EXCEPTION_AT( __FILE__, __LINE__ ) ": " msg , \
133 #condition,value,t,__LINE__,__FUNCTION__,__FILE__); \
The base class for tensors defines generic capabilities.
Definition basetensor.h:85
Tensor is intended to throw only TensorExceptions.
Definition tensorexcept.h:50
int line
Definition tensorexcept.h:56
const char * function
Definition tensorexcept.h:57
const char * filename
Definition tensorexcept.h:58
const char * msg
Definition tensorexcept.h:51
friend std::ostream & operator<<(std::ostream &out, const TensorException &e)
Print a TensorException to the stream (for human consumption)
Definition tensorexcept.h:84
TensorException(const char *s, const char *a, int err, const BaseTensor *tp, int lin, const char *func, const char *file)
Definition tensorexcept.h:62
virtual const char * what() const
Definition tensorexcept.h:77
virtual ~TensorException()
Definition tensorexcept.h:81
const BaseTensor * tp
Definition tensorexcept.h:55
BaseTensor t
Definition tensorexcept.h:54
int value
Definition tensorexcept.h:53
const char * assertion
Definition tensorexcept.h:52
Namespace for all elements and tools of MADNESS.
Definition DFParameters.h:10
const char * tensor_type_names[]
std::shared_ptr< FunctionFunctorInterface< double, 3 > > func(new opT(g))
static const double a
Definition nonlinschro.cc:118
#define TENSOR_MAXDIM
Definition tensor_macros.h:194
void e()
Definition test_sig.cc:75
#define TENSOR_MAX_TYPE_ID
Definition type_data.h:115