Home | History | Annotate | Download | only in Core
      1 // This file is part of Eigen, a lightweight C++ template library
      2 // for linear algebra.
      3 //
      4 // Copyright (C) 2009-2010 Gael Guennebaud <gael.guennebaud (at) inria.fr>
      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_SELFCWISEBINARYOP_H
     11 #define EIGEN_SELFCWISEBINARYOP_H
     12 
     13 namespace Eigen {
     14 
     15 // TODO generalize the scalar type of 'other'
     16 
     17 template<typename Derived>
     18 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived& DenseBase<Derived>::operator*=(const Scalar& other)
     19 {
     20   typedef typename Derived::PlainObject PlainObject;
     21   internal::call_assignment(this->derived(), PlainObject::Constant(rows(),cols(),other), internal::mul_assign_op<Scalar,Scalar>());
     22   return derived();
     23 }
     24 
     25 template<typename Derived>
     26 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived& ArrayBase<Derived>::operator+=(const Scalar& other)
     27 {
     28   typedef typename Derived::PlainObject PlainObject;
     29   internal::call_assignment(this->derived(), PlainObject::Constant(rows(),cols(),other), internal::add_assign_op<Scalar,Scalar>());
     30   return derived();
     31 }
     32 
     33 template<typename Derived>
     34 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived& ArrayBase<Derived>::operator-=(const Scalar& other)
     35 {
     36   typedef typename Derived::PlainObject PlainObject;
     37   internal::call_assignment(this->derived(), PlainObject::Constant(rows(),cols(),other), internal::sub_assign_op<Scalar,Scalar>());
     38   return derived();
     39 }
     40 
     41 template<typename Derived>
     42 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived& DenseBase<Derived>::operator/=(const Scalar& other)
     43 {
     44   typedef typename Derived::PlainObject PlainObject;
     45   internal::call_assignment(this->derived(), PlainObject::Constant(rows(),cols(),other), internal::div_assign_op<Scalar,Scalar>());
     46   return derived();
     47 }
     48 
     49 } // end namespace Eigen
     50 
     51 #endif // EIGEN_SELFCWISEBINARYOP_H
     52