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 13namespace Eigen { 14 15// TODO generalize the scalar type of 'other' 16 17template<typename Derived> 18EIGEN_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 25template<typename Derived> 26EIGEN_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 33template<typename Derived> 34EIGEN_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 41template<typename Derived> 42EIGEN_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