diff options
author | Hauke Heibel <hauke.heibel@gmail.com> | 2012-03-02 16:27:27 +0100 |
---|---|---|
committer | Hauke Heibel <hauke.heibel@gmail.com> | 2012-03-02 16:27:27 +0100 |
commit | 8cb3e36e14ff02603eec8969a5dcc6402dac0e26 (patch) | |
tree | b0191ca0f5f62372ea7212b5480ac6a994f75681 /Eigen | |
parent | 8a7d16d52304d3459a9aba2efba4113224b9e9c6 (diff) |
Added support for scalar / array division.
Diffstat (limited to 'Eigen')
-rw-r--r-- | Eigen/src/Core/Functors.h | 14 | ||||
-rw-r--r-- | Eigen/src/Core/GlobalFunctions.h | 13 |
2 files changed, 27 insertions, 0 deletions
diff --git a/Eigen/src/Core/Functors.h b/Eigen/src/Core/Functors.h index dfe19a07f..38e1b57dc 100644 --- a/Eigen/src/Core/Functors.h +++ b/Eigen/src/Core/Functors.h @@ -813,6 +813,20 @@ template<typename Scalar> struct functor_traits<scalar_pow_op<Scalar> > { enum { Cost = 5 * NumTraits<Scalar>::MulCost, PacketAccess = false }; }; +/** \internal
+ * \brief Template functor to compute the quotient between a scalar and array entries.
+ * \sa class CwiseUnaryOp, Cwise::inverse()
+ */
+template<typename Scalar>
+struct scalar_inverse_mult_op {
+ scalar_inverse_mult_op(const Scalar& other) : m_other(other) {}
+ inline Scalar operator() (const Scalar& a) const { return m_other / a; }
+ template<typename Packet>
+ inline const Packet packetOp(const Packet& a) const
+ { return internal::pdiv(pset1<Packet>(m_other),a); }
+ Scalar m_other;
+}; + /** \internal * \brief Template functor to compute the inverse of a scalar * \sa class CwiseUnaryOp, Cwise::inverse() diff --git a/Eigen/src/Core/GlobalFunctions.h b/Eigen/src/Core/GlobalFunctions.h index 144145a95..fba675ffc 100644 --- a/Eigen/src/Core/GlobalFunctions.h +++ b/Eigen/src/Core/GlobalFunctions.h @@ -71,6 +71,19 @@ namespace std } } +/**
+* \brief Component-wise division of a scalar by array elements.
+**/
+template <typename Derived>
+inline const Eigen::CwiseUnaryOp<Eigen::internal::scalar_inverse_mult_op<typename Derived::Scalar>, const Derived>
+ operator/(typename Derived::Scalar s, const Eigen::ArrayBase<Derived>& a)
+{
+ return Eigen::CwiseUnaryOp<Eigen::internal::scalar_inverse_mult_op<typename Derived::Scalar>, const Derived>(
+ a.derived(),
+ Eigen::internal::scalar_inverse_mult_op<typename Derived::Scalar>(s)
+ );
+} + namespace Eigen { namespace internal |