45 #ifndef __H__UG__SMALL_ALGEBRA__DOUBLE__
46 #define __H__UG__SMALL_ALGEBRA__DOUBLE__
81 UG_ASSERT(i == 0,
"block is number, doesnt have component (" << i <<
").");
86 UG_ASSERT(i == 0,
"block is number, doesnt have component (" << i <<
").");
92 UG_ASSERT(i == 0 && j == 0,
"block is number, doesnt have component (" << i <<
", " << j <<
").");
97 UG_ASSERT(i == 0 && j == 0,
"block is number, doesnt have component (" << i <<
", " << j <<
").");
127 UG_ASSERT(a == 1,
"block is number, cannot change size to " << a <<
".");
134 UG_ASSERT(a == 1 && b == 1,
"block is number, cannot change size to (" << a <<
", " << b <<
").");
174 enum { static_num_rows = 1};
175 enum { static_num_cols = 1};
176 enum { static_size = 1 };
#define UG_ASSERT(expr, msg)
Definition: assert.h:70
double number
Definition: types.h:124
size_t GetCols(const T &t)
bool GetInverse(block_traits< T >::inverse_type &inv, const T &m)
void AssignMult(A &dest, const B &b, const C &vec)
void SubMult(A &dest, const B &b, const C &vec)
double & BlockRef(T &vec, size_t i)
Definition: blocks.h:66
void SetSize(T &t, size_t a, size_t b)
size_t GetRows(const T &t)
number BlockMaxNorm(const T &t)
double BlockNorm2(const TYPE &v)
Definition: blocks.h:51
void AddMult(A &dest, const B &b, const C &vec)
bool InverseMatMult(number &dest, const double &beta, const TMat &mat, const TVec &vec)
you can implement this function with GetInverse and MatMult
size_t GetSize(const T &t)
double BlockNorm(const TYPE &v)
Definition: blocks.h:57
T ReturnType
Definition: double.h:194
T ReturnType
Definition: double.h:188
number ReturnType
Definition: double.h:182
Definition: smallalgebra_interface.h:42
number inverse_type
Definition: double.h:171
number vec_type
Definition: double.h:170
Definition: communication_policies.h:58
@ is_static
Definition: communication_policies.h:60