12b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang// This file is part of Eigen, a lightweight C++ template library 22b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang// for linear algebra. 32b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang// 42b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang// Copyright (C) 2015 Benoit Steiner <benoit.steiner.goog@gmail.com> 52b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang// 62b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang// This Source Code Form is subject to the terms of the Mozilla 72b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang// Public License v. 2.0. If a copy of the MPL was not distributed 82b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang// with this file, You can obtain one at http://mozilla.org/MPL/2.0/. 92b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang 102b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang#ifndef EIGEN_CXX11_TENSOR_TENSOR_DIMENSION_LIST_H 112b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang#define EIGEN_CXX11_TENSOR_TENSOR_DIMENSION_LIST_H 122b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang 132b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangnamespace Eigen { 142b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang 152b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang/** \internal 162b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang * 172b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang * \class TensorDimensionList 182b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang * \ingroup CXX11_Tensor_Module 192b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang * 202b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang * \brief Special case of tensor index list used to list all the dimensions of a tensor of rank n. 212b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang * 222b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang * \sa Tensor 232b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang */ 242b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang 252b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtemplate <typename Index, std::size_t Rank> struct DimensionList { 262b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE 272b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang const Index operator[] (const Index i) const { return i; } 282b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang}; 292b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang 302b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangnamespace internal { 312b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang 322b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtemplate<typename Index, std::size_t Rank> struct array_size<DimensionList<Index, Rank> > { 332b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang static const size_t value = Rank; 342b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang}; 352b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtemplate<typename Index, std::size_t Rank> struct array_size<const DimensionList<Index, Rank> > { 362b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang static const size_t value = Rank; 372b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang}; 382b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang 392b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtemplate<DenseIndex n, typename Index, std::size_t Rank> const Index array_get(DimensionList<Index, Rank>&) { 402b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang return n; 412b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang} 422b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtemplate<DenseIndex n, typename Index, std::size_t Rank> const Index array_get(const DimensionList<Index, Rank>&) { 432b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang return n; 442b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang} 452b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang 462b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang 472b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang#if EIGEN_HAS_CONSTEXPR 482b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtemplate <typename Index, std::size_t Rank> 492b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangstruct index_known_statically_impl<DimensionList<Index, Rank> > { 502b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang EIGEN_DEVICE_FUNC static constexpr bool run(const DenseIndex) { 512b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang return true; 522b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang } 532b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang}; 542b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtemplate <typename Index, std::size_t Rank> 552b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangstruct index_known_statically_impl<const DimensionList<Index, Rank> > { 562b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang EIGEN_DEVICE_FUNC static constexpr bool run(const DenseIndex) { 572b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang return true; 582b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang } 592b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang}; 602b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang 612b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtemplate <typename Index, std::size_t Rank> 622b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangstruct all_indices_known_statically_impl<DimensionList<Index, Rank> > { 632b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang EIGEN_DEVICE_FUNC static constexpr bool run() { 642b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang return true; 652b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang } 662b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang}; 672b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtemplate <typename Index, std::size_t Rank> 682b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangstruct all_indices_known_statically_impl<const DimensionList<Index, Rank> > { 692b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang EIGEN_DEVICE_FUNC static constexpr bool run() { 702b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang return true; 712b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang } 722b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang}; 732b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang 742b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtemplate <typename Index, std::size_t Rank> 752b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangstruct indices_statically_known_to_increase_impl<DimensionList<Index, Rank> > { 762b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang EIGEN_DEVICE_FUNC static constexpr bool run() { 772b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang return true; 782b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang } 792b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang}; 802b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtemplate <typename Index, std::size_t Rank> 812b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangstruct indices_statically_known_to_increase_impl<const DimensionList<Index, Rank> > { 822b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang EIGEN_DEVICE_FUNC static constexpr bool run() { 832b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang return true; 842b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang } 852b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang}; 862b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang 872b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtemplate <typename Index, std::size_t Rank> 882b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangstruct index_statically_eq_impl<DimensionList<Index, Rank> > { 892b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang static constexpr bool run(const DenseIndex i, const DenseIndex value) { 902b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang return i == value; 912b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang } 922b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang}; 932b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtemplate <typename Index, std::size_t Rank> 942b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangstruct index_statically_eq_impl<const DimensionList<Index, Rank> > { 952b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang EIGEN_DEVICE_FUNC static constexpr bool run(const DenseIndex i, const DenseIndex value) { 962b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang return i == value; 972b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang } 982b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang}; 992b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang 1002b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtemplate <typename Index, std::size_t Rank> 1012b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangstruct index_statically_ne_impl<DimensionList<Index, Rank> > { 1022b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang EIGEN_DEVICE_FUNC static constexpr bool run(const DenseIndex i, const DenseIndex value) { 1032b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang return i != value; 1042b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang } 1052b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang}; 1062b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtemplate <typename Index, std::size_t Rank> 1072b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangstruct index_statically_ne_impl<const DimensionList<Index, Rank> > { 1082b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang static constexpr bool run(const DenseIndex i, const DenseIndex value) { 1092b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang return i != value; 1102b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang } 1112b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang}; 1122b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang 1132b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtemplate <typename Index, std::size_t Rank> 1142b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangstruct index_statically_gt_impl<DimensionList<Index, Rank> > { 1152b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang EIGEN_DEVICE_FUNC static constexpr bool run(const DenseIndex i, const DenseIndex value) { 1162b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang return i > value; 1172b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang } 1182b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang}; 1192b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtemplate <typename Index, std::size_t Rank> 1202b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangstruct index_statically_gt_impl<const DimensionList<Index, Rank> > { 1212b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang EIGEN_DEVICE_FUNC static constexpr bool run(const DenseIndex i, const DenseIndex value) { 1222b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang return i > value; 1232b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang } 1242b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang}; 1252b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang 1262b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtemplate <typename Index, std::size_t Rank> 1272b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangstruct index_statically_lt_impl<DimensionList<Index, Rank> > { 1282b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang EIGEN_DEVICE_FUNC static constexpr bool run(const DenseIndex i, const DenseIndex value) { 1292b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang return i < value; 1302b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang } 1312b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang}; 1322b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtemplate <typename Index, std::size_t Rank> 1332b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangstruct index_statically_lt_impl<const DimensionList<Index, Rank> > { 1342b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang EIGEN_DEVICE_FUNC static constexpr bool run(const DenseIndex i, const DenseIndex value) { 1352b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang return i < value; 1362b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang } 1372b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang}; 1382b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang 1392b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang#else 1402b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtemplate <typename Index, std::size_t Rank> 1412b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangstruct index_known_statically_impl<DimensionList<Index, Rank> > { 1422b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang EIGEN_DEVICE_FUNC static EIGEN_ALWAYS_INLINE bool run(const DenseIndex) { 1432b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang return true; 1442b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang } 1452b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang}; 1462b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtemplate <typename Index, std::size_t Rank> 1472b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangstruct index_known_statically_impl<const DimensionList<Index, Rank> > { 1482b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang EIGEN_DEVICE_FUNC static EIGEN_ALWAYS_INLINE bool run(const DenseIndex) { 1492b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang return true; 1502b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang } 1512b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang}; 1522b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang 1532b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtemplate <typename Index, std::size_t Rank> 1542b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangstruct all_indices_known_statically_impl<DimensionList<Index, Rank> > { 1552b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang EIGEN_DEVICE_FUNC static EIGEN_ALWAYS_INLINE bool run() { 1562b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang return true; 1572b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang } 1582b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang}; 1592b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtemplate <typename Index, std::size_t Rank> 1602b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangstruct all_indices_known_statically_impl<const DimensionList<Index, Rank> > { 1612b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang EIGEN_DEVICE_FUNC static EIGEN_ALWAYS_INLINE bool run() { 1622b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang return true; 1632b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang } 1642b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang}; 1652b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang 1662b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtemplate <typename Index, std::size_t Rank> 1672b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangstruct indices_statically_known_to_increase_impl<DimensionList<Index, Rank> > { 1682b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang static EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE bool run() { 1692b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang return true; 1702b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang } 1712b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang}; 1722b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtemplate <typename Index, std::size_t Rank> 1732b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangstruct indices_statically_known_to_increase_impl<const DimensionList<Index, Rank> > { 1742b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang static EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE bool run() { 1752b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang return true; 1762b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang } 1772b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang}; 1782b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang 1792b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtemplate <typename Index, std::size_t Rank> 1802b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangstruct index_statically_eq_impl<DimensionList<Index, Rank> > { 1812b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang static EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE bool run(const DenseIndex, const DenseIndex) { 1822b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang return false; 1832b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang } 1842b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang}; 1852b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtemplate <typename Index, std::size_t Rank> 1862b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangstruct index_statically_eq_impl<const DimensionList<Index, Rank> > { 1872b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang static EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE bool run(const DenseIndex, const DenseIndex) { 1882b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang return false; 1892b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang } 1902b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang}; 1912b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang 1922b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtemplate <typename Index, std::size_t Rank> 1932b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangstruct index_statically_ne_impl<DimensionList<Index, Rank> > { 1942b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang static EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE bool run(const DenseIndex, const DenseIndex){ 1952b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang return false; 1962b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang } 1972b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang}; 1982b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtemplate <typename Index, std::size_t Rank> 1992b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangstruct index_statically_ne_impl<const DimensionList<Index, Rank> > { 2002b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang static EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE bool run(const DenseIndex, const DenseIndex) { 2012b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang return false; 2022b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang } 2032b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang}; 2042b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang 2052b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtemplate <typename Index, std::size_t Rank> 2062b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangstruct index_statically_gt_impl<DimensionList<Index, Rank> > { 2072b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang static EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE bool run(const DenseIndex, const DenseIndex) { 2082b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang return false; 2092b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang } 2102b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang}; 2112b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtemplate <typename Index, std::size_t Rank> 2122b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangstruct index_statically_gt_impl<const DimensionList<Index, Rank> > { 2132b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang static EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE bool run(const DenseIndex, const DenseIndex) { 2142b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang return false; 2152b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang } 2162b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang}; 2172b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang 2182b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtemplate <typename Index, std::size_t Rank> 2192b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangstruct index_statically_lt_impl<DimensionList<Index, Rank> > { 2202b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang static EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE bool run(const DenseIndex, const DenseIndex) { 2212b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang return false; 2222b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang } 2232b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang}; 2242b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtemplate <typename Index, std::size_t Rank> 2252b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangstruct index_statically_lt_impl<const DimensionList<Index, Rank> > { 2262b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang static EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE bool run(const DenseIndex, const DenseIndex) { 2272b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang return false; 2282b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang } 2292b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang}; 2302b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang#endif 2312b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang 2322b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang} // end namespace internal 2332b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang} // end namespace Eigen 2342b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang 2352b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang 2362b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang#endif // EIGEN_CXX11_TENSOR_TENSOR_DIMENSION_LIST_H 237