aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXin Li <delphij@google.com>2017-12-06 11:51:53 -0800
committerXin Li <delphij@google.com>2017-12-06 14:24:47 -0800
commit216f973f1d281de023c052b8c008f448f84e9e19 (patch)
tree41703e7082cd724768de5170878f0328c0c6401a
parent3a6f837d1ecb2969e6349dec9682206a79f8cb4e (diff)
parenta7cab23f0bb1c065a78a36316fc4e6d072373b2c (diff)
downloadeigen-216f973f1d281de023c052b8c008f448f84e9e19.tar.gz
DO NOT MERGE: Merge Oreo MR1 into master
Exempt-From-Owner-Approval: Changes already landed internally Change-Id: Ib47a263fd256516f70cdcdb5e984b8e3afcd9cfe
-rw-r--r--Android.bp1
-rw-r--r--Eigen/src/Core/functors/UnaryFunctors.h31
2 files changed, 32 insertions, 0 deletions
diff --git a/Android.bp b/Android.bp
index 78a86fb7d..6603f2bb6 100644
--- a/Android.bp
+++ b/Android.bp
@@ -15,6 +15,7 @@
cc_library_headers {
export_include_dirs = [ "." ],
name: "libeigen",
+ vendor_available: true,
host_supported: true,
}
diff --git a/Eigen/src/Core/functors/UnaryFunctors.h b/Eigen/src/Core/functors/UnaryFunctors.h
index 2e6a00ffd..581a3c93a 100644
--- a/Eigen/src/Core/functors/UnaryFunctors.h
+++ b/Eigen/src/Core/functors/UnaryFunctors.h
@@ -14,6 +14,37 @@ namespace Eigen {
namespace internal {
+// Copied from unsupported/Eigen/CXX11/src/Tensor/TensorFunctors.h
+// TODO: remove or update after upstream
+/** \internal
+ * \brief Template functor to compute the sigmoid of a scalar
+ * \sa class CwiseUnaryOp, ArrayBase::sigmoid()
+ */
+template <typename T>
+struct scalar_sigmoid_op {
+ EIGEN_EMPTY_STRUCT_CTOR(scalar_sigmoid_op)
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T operator()(const T& x) const {
+ const T one = T(1);
+ return one / (one + numext::exp(-x));
+ }
+
+ template <typename Packet> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+ Packet packetOp(const Packet& x) const {
+ const Packet one = pset1<Packet>(T(1));
+ return pdiv(one, padd(one, pexp(pnegate(x))));
+ }
+};
+
+template <typename T>
+struct functor_traits<scalar_sigmoid_op<T> > {
+ enum {
+ Cost = NumTraits<T>::AddCost * 2 + NumTraits<T>::MulCost * 6,
+ PacketAccess = packet_traits<T>::HasAdd && packet_traits<T>::HasDiv &&
+ packet_traits<T>::HasNegate && packet_traits<T>::HasExp
+ };
+};
+
+
/** \internal
* \brief Template functor to compute the opposite of a scalar
*