Go to the documentation of this file.
26 #ifndef TILEDARRAY_EXPRESSIONS_SCAL_TSR_EXPR_H__INCLUDED
27 #define TILEDARRAY_EXPRESSIONS_SCAL_TSR_EXPR_H__INCLUDED
32 namespace expressions {
34 template <
typename Array>
38 template <
typename Array,
typename Scalar>
46 template <
typename,
typename>
49 template <
typename Array,
typename Scalar>
66 template <
typename Array,
typename Scalar>
80 std::string annotation_;
111 const std::string&
annotation()
const {
return annotation_; }
127 template <
typename Array,
typename Scalar,
128 typename std::enable_if<
129 TiledArray::detail::is_numeric_v<Scalar> >::type* =
nullptr>
143 template <
typename Array,
typename Scalar,
144 typename std::enable_if<
145 TiledArray::detail::is_numeric_v<Scalar> >::type* =
nullptr>
160 template <
typename Array,
typename Scalar1,
typename Scalar2,
161 typename std::enable_if<
162 TiledArray::detail::is_numeric_v<Scalar2> >::type* =
nullptr>
177 template <
typename Array,
typename Scalar1,
typename Scalar2,
178 typename std::enable_if<
179 TiledArray::detail::is_numeric_v<Scalar1> >::type* =
nullptr>
191 template <
typename Array>
192 inline ScalTsrExpr<typename std::remove_const<Array>::type,
193 typename ExprTrait<TsrExpr<Array, true> >::numeric_type>
206 template <
typename Array,
typename Scalar>
218 template <
typename Array>
230 template <
typename Array>
241 template <
typename Array,
typename Scalar>
255 template <
typename Array,
typename Scalar>
270 template <
typename Array,
typename Scalar,
271 typename std::enable_if<
272 TiledArray::detail::is_numeric_v<Scalar> >::type* =
nullptr>
286 template <
typename Array,
typename Scalar,
287 typename std::enable_if<
288 TiledArray::detail::is_numeric_v<Scalar> >::type* =
nullptr>
302 template <
typename Array,
typename Scalar1,
typename Scalar2,
303 typename std::enable_if<
304 TiledArray::detail::is_numeric_v<Scalar2> >::type* =
nullptr>
319 template <
typename Array,
typename Scalar1,
typename Scalar2,
320 typename std::enable_if<
321 TiledArray::detail::is_numeric_v<Scalar1> >::type* =
nullptr>
334 template <
typename Array>
336 typename ExprTrait<ConjTsrExpr<Array> >::numeric_type>
340 conj_op<numeric_type>(-1));
349 template <
typename Array,
typename Scalar>
359 #endif // TILEDARRAY_EXPRESSIONS_SCAL_TSR_EXPR_H__INCLUDED
ScalAddExpr< Left, Right, typename ExprTrait< AddExpr< Left, Right > >::numeric_type > operator-(const AddExpr< Left, Right > &expr)
Negated addition expression factor.
Expr< ScalTsrExpr_ > Expr_
Expression base type.
typename TiledArray::detail::numeric_type< T >::type numeric_t
numeric_t<T> is an alias for numeric_type<T>::type
decltype(std::declval< Scalar1 >() *std::declval< Scalar2 >()) mult_t
array_type & array() const
Array accessor.
Expression wrapper for array objects.
TiledArray::tile_interface::result_of_scale_t< typename Array::eval_type, scalar_type > result_type
Result tile type.
ScalTsrExpr(const array_type &array, const std::string &annotation, const scalar_type factor)
Construct a scaled tensor expression.
ScalTsrEngine< Array, scalar_type, result_type > engine_type
Expression engine type.
Base class for expression evaluation.
std::enable_if< TiledArray::detail::is_numeric_v< Scalar >, ScalAddExpr< Left, Right, Scalar > >::type operator*(const AddExpr< Left, Right > &expr, const Scalar &factor)
Scaled-addition expression factor.
ExprTrait< ScalTsrExpr_ >::engine_type engine_type
Expression engine type.
decltype(scale(std::declval< T >()...)) result_of_scale_t
const array_type & array() const
Array accessor.
impl_type::eval_type eval_type
The tile evaluation type.
ConjAddExpr< Left, Right > conj(const AddExpr< Left, Right > &expr)
Conjugated addition expression factory.
ExprTrait< ScalTsrExpr_ >::array_type array_type
The array type.
ScalTsrExpr_ & operator=(ScalTsrExpr_ &&)=delete
const std::string & annotation() const
Tensor annotation accessor.
DistArray< Tile, Policy > Array
Array array_type
The Array type.
Scaled tensor expression engine.
ScalTsrExpr_ & operator=(const ScalTsrExpr_ &)=delete
ExprTrait< ScalTsrExpr_ >::scalar_type scalar_type
Scalar type.
ScalTsrExpr< Array, TiledArray::detail::ComplexConjugate< Scalar > > ScalConjTsrExpr
Expression wrapper for scaled array objects.
const std::string & annotation() const
Tensor annotation accessor.
ScalTsrExpr(const ScalTsrExpr_ &)=default
ComplexConjugate< S > conj_op(const S factor)
ComplexConjugate operator factory function.
TiledArray::detail::numeric_t< Array > numeric_type
Array base numeric type.
scalar_type factor() const
Scaling factor accessor.
Expression wrapper for const array objects.
Scalar scalar_type
Expression scalar type.
TILEDARRAY_FORCE_INLINE R conj(const R r)
Wrapper function for std::conj
ScalTsrExpr< Array, Scalar > ScalTsrExpr_
This class type.
ScalTsrExpr(ScalTsrExpr_ &&)=default