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@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