26 #ifndef TILEDARRAY_ALGEBRA_UTILS_H__INCLUDED 27 #define TILEDARRAY_ALGEBRA_UTILS_H__INCLUDED 31 #include "../dist_array.h" 32 #include "../expressions/expr.h" 39 std::ostringstream oss;
40 if (DIM > 0) oss <<
"i0";
41 for(
unsigned int d=1; d<DIM; ++d)
48 template <
typename Tile,
typename Policy>
52 return a.
trange().elements_range().volume();
57 template <
typename Tile,
typename Policy>
62 template <
typename Tile,
typename Policy>
68 template <
typename Tile,
typename Policy>
74 template <
typename Tile,
typename Policy>
80 template <
typename Tile,
typename Policy>
84 a1(vars) = a1(vars) * a2(vars);
87 template <
typename Tile,
typename Policy>
91 return a1(vars).dot(a2(vars)).get();
94 template <
typename Left,
typename Right>
99 "no_alias() expressions are not allowed on the right-hand side of the " 100 "assignment operator.");
102 "no_alias() expressions are not allowed on the right-hand side of the " 103 "assignment operator.");
104 return a1.
dot(a2).get();
107 template <
typename Tile,
typename Policy>
111 a(vars) = scaling_factor * a(vars);
114 template <
typename Tile,
typename Policy>
119 y(vars) = y(vars) + a * x(vars);
122 template <
typename Tile,
typename Policy>
128 template <
typename Tile,
typename Policy>
134 template <
typename Tile,
typename Policy>
136 std::cout << label <<
":\n" << a <<
"\n";
141 #endif // TILEDARRAY_ALGEBRA_UTILS_H__INCLUDED DistArray< Tile, Policy >::scalar_type norm2(const DistArray< Tile, Policy > &a)
void scale(DistArray< Tile, Policy > &a, typename DistArray< Tile, Policy >::element_type scaling_factor)
const trange_type & trange() const
Tiled range accessor.
DistArray< Tile, Policy >::element_type maxabs_value(const DistArray< Tile, Policy > &a)
size_t size(const DistArray< Tile, Policy > &a)
detail::scalar_type< Tile >::type scalar_type
The tile scalar type.
TiledArray::expressions::ExprTrait< Left >::scalar_type dot(const TiledArray::expressions::Expr< Left > &a1, const TiledArray::expressions::Expr< Right > &a2)
void axpy(DistArray< Tile, Policy > &y, typename DistArray< Tile, Policy >::element_type a, const DistArray< Tile, Policy > &x)
void vec_multiply(DistArray< Tile, Policy > &a1, const DistArray< Tile, Policy > &a2)
void print(const DistArray< Tile, Policy > &a, const char *label)
Base class for expression evaluation.
DistArray< Tile, Policy > copy(const DistArray< Tile, Policy > &a)
void zero(DistArray< Tile, Policy > &a)
Future< typename TiledArray::DotReduction< typename EngineTrait< engine_type >::eval_type, typename EngineTrait< typename D::engine_type >::eval_type >::result_type > dot(const Expr< D > &right_expr, World &world) const
DistArray< Tile, Policy >::element_type minabs_value(const DistArray< Tile, Policy > &a)
detail::numeric_type< Tile >::type element_type
The tile element type.
std::string dummy_annotation(unsigned int DIM)
DistArray< Tile, Policy >::element_type dot_product(const DistArray< Tile, Policy > &a1, const DistArray< Tile, Policy > &a2)
void assign(DistArray< Tile, Policy > &m1, const DistArray< Tile, Policy > &m2)