compbio
TensorDevice.h
1 // This file is part of Eigen, a lightweight C++ template library
2 // for linear algebra.
3 //
4 // Copyright (C) 2014 Benoit Steiner <benoit.steiner.goog@gmail.com>
5 //
6 // This Source Code Form is subject to the terms of the Mozilla
7 // Public License v. 2.0. If a copy of the MPL was not distributed
8 // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 
10 #ifndef EIGEN_CXX11_TENSOR_TENSOR_DEVICE_H
11 #define EIGEN_CXX11_TENSOR_TENSOR_DEVICE_H
12 
13 namespace Eigen {
14 
27 template <typename ExpressionType, typename DeviceType> class TensorDevice {
28  public:
29  TensorDevice(const DeviceType& device, ExpressionType& expression) : m_device(device), m_expression(expression) {}
30 
31  template<typename OtherDerived>
32  EIGEN_STRONG_INLINE TensorDevice& operator=(const OtherDerived& other) {
34  Assign assign(m_expression, other);
36  return *this;
37  }
38 
39  template<typename OtherDerived>
40  EIGEN_STRONG_INLINE TensorDevice& operator+=(const OtherDerived& other) {
41  typedef typename OtherDerived::Scalar Scalar;
42  typedef TensorCwiseBinaryOp<internal::scalar_sum_op<Scalar>, const ExpressionType, const OtherDerived> Sum;
43  Sum sum(m_expression, other);
45  Assign assign(m_expression, sum);
47  return *this;
48  }
49 
50  template<typename OtherDerived>
51  EIGEN_STRONG_INLINE TensorDevice& operator-=(const OtherDerived& other) {
52  typedef typename OtherDerived::Scalar Scalar;
53  typedef TensorCwiseBinaryOp<internal::scalar_difference_op<Scalar>, const ExpressionType, const OtherDerived> Difference;
54  Difference difference(m_expression, other);
56  Assign assign(m_expression, difference);
58  return *this;
59  }
60 
61  protected:
62  const DeviceType& m_device;
63  ExpressionType& m_expression;
64 };
65 
66 } // end namespace Eigen
67 
68 #endif // EIGEN_CXX11_TENSOR_TENSOR_DEVICE_H
Definition: TensorExecutor.h:27
Definition: TensorExpr.h:187
Namespace containing all symbols from the Eigen library.
Definition: bench_norm.cpp:85
Pseudo expression providing an operator = that will evaluate its argument on the specified computing ...
Definition: TensorDevice.h:27
Definition: TensorAssign.h:60