aboutsummaryrefslogtreecommitdiffhomepage
path: root/third_party/eigen3
diff options
context:
space:
mode:
authorGravatar A. Unique TensorFlower <nobody@tensorflow.org>2015-12-16 17:56:17 -0800
committerGravatar Vijay Vasudevan <vrv@google.com>2015-12-16 17:56:17 -0800
commit12a82de6b7f6b61d6161748b09ec6fb13a108da2 (patch)
tree387dfed611cf22d6d9e46ffea173cf3a259fd3c7 /third_party/eigen3
parent01519191527eab729e9c3aa9c48ec6aebead411f (diff)
Switched to the open source version of Eigen
Change: 110406666
Diffstat (limited to 'third_party/eigen3')
-rw-r--r--third_party/eigen3/BUILD16
-rw-r--r--third_party/eigen3/Eigen/Cholesky35
-rw-r--r--third_party/eigen3/Eigen/Core483
-rw-r--r--third_party/eigen3/Eigen/LU44
-rw-r--r--third_party/eigen3/unsupported/Eigen/CXX11/Tensor147
5 files changed, 16 insertions, 709 deletions
diff --git a/third_party/eigen3/BUILD b/third_party/eigen3/BUILD
index 04841fac71..538260db43 100644
--- a/third_party/eigen3/BUILD
+++ b/third_party/eigen3/BUILD
@@ -3,10 +3,18 @@ licenses(["restricted"]) # MPL2, portions GPL v3, LGPL v3, BSD-like
cc_library(
name = "eigen3",
hdrs = glob([
- "**/*.h",
- "unsupported/Eigen/CXX11/*",
- "Eigen/*",
+ "Eigen/Core",
+ "Eigen/LU",
+ "Eigen/Cholesky",
+ "unsupported/Eigen/CXX11/FixedPoint/Tensor",
+ "unsupported/Eigen/CXX11/FixedPoint",
+ "unsupported/Eigen/CXX11/src/FixedPoint/*.h",
+ "unsupported/Eigen/CXX11/NeuralNetworks",
+ "unsupported/Eigen/CXX11/src/NeuralNetworks/*.h",
]),
- includes = [ "." ],
+ includes = ["."],
visibility = ["//visibility:public"],
+ deps = [
+ "@eigen_archive//:eigen",
+ ],
)
diff --git a/third_party/eigen3/Eigen/Cholesky b/third_party/eigen3/Eigen/Cholesky
index 7314d326c1..942240bd82 100644
--- a/third_party/eigen3/Eigen/Cholesky
+++ b/third_party/eigen3/Eigen/Cholesky
@@ -1,34 +1 @@
-#ifndef EIGEN_CHOLESKY_MODULE_H
-#define EIGEN_CHOLESKY_MODULE_H
-
-#include "Core"
-
-#include "src/Core/util/DisableStupidWarnings.h"
-
-/** \defgroup Cholesky_Module Cholesky module
- *
- *
- *
- * This module provides two variants of the Cholesky decomposition for selfadjoint (hermitian) matrices.
- * Those decompositions are also accessible via the following methods:
- * - MatrixBase::llt()
- * - MatrixBase::ldlt()
- * - SelfAdjointView::llt()
- * - SelfAdjointView::ldlt()
- *
- * \code
- * #include <Eigen/Cholesky>
- * \endcode
- */
-
-#include "src/misc/Solve.h"
-#include "src/Cholesky/LLT.h"
-#include "src/Cholesky/LDLT.h"
-#ifdef EIGEN_USE_LAPACKE
-#include "src/Cholesky/LLT_MKL.h"
-#endif
-
-#include "src/Core/util/ReenableStupidWarnings.h"
-
-#endif // EIGEN_CHOLESKY_MODULE_H
-/* vim: set filetype=cpp et sw=2 ts=2 ai: */
+#include "external/eigen_archive/eigen-eigen-ce5a455b34c0/Eigen/Cholesky"
diff --git a/third_party/eigen3/Eigen/Core b/third_party/eigen3/Eigen/Core
index c18105ad0c..e9896a5fba 100644
--- a/third_party/eigen3/Eigen/Core
+++ b/third_party/eigen3/Eigen/Core
@@ -1,482 +1 @@
-// This file is part of Eigen, a lightweight C++ template library
-// for linear algebra.
-//
-// Copyright (C) 2008 Gael Guennebaud <gael.guennebaud@inria.fr>
-// Copyright (C) 2007-2011 Benoit Jacob <jacob.benoit.1@gmail.com>
-//
-// This Source Code Form is subject to the terms of the Mozilla
-// Public License v. 2.0. If a copy of the MPL was not distributed
-// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-#ifndef EIGEN_CORE_H
-#define EIGEN_CORE_H
-
-// first thing Eigen does: stop the compiler from committing suicide
-#include "src/Core/util/DisableStupidWarnings.h"
-
-// Begin Google-only: this allows us to link MPL2-only and non-MPL2-only
-// versions of Eigen without conflict. Do not use outside of :eigen3_restricted.
-#ifdef GOOGLE3_EIGEN_MPL2_ONLY_OVERRIDE
-#undef EIGEN_MPL2_ONLY
-#endif
-// End Google-only.
-
-#ifdef __CUDACC__
- // Do not try asserts on CUDA!
- #ifndef EIGEN_NO_DEBUG
- #define EIGEN_NO_DEBUG
- #endif
-
- #ifdef EIGEN_INTERNAL_DEBUGGING
- #undef EIGEN_INTERNAL_DEBUGGING
- #endif
-
- // Do not try to vectorize on CUDA!
- #define EIGEN_DONT_VECTORIZE
-
- // All functions callable from CUDA code must be qualified with __device__
- #define EIGEN_DEVICE_FUNC __host__ __device__
-
-#else
- #define EIGEN_DEVICE_FUNC
-
-#endif
-
-// CUDA before C++11 support does not have std::max or std::min
-#if defined(__CUDA_ARCH__) && (__cplusplus < 201103L)
- #define EIGEN_USING_STD_MATH(FUNC) using ::FUNC;
-#else
- #define EIGEN_USING_STD_MATH(FUNC) using std::FUNC;
-#endif
-
-// then include this file where all our macros are defined. It's really important to do it first because
-// it's where we do all the alignment settings (platform detection and honoring the user's will if he
-// defined e.g. EIGEN_DONT_ALIGN) so it needs to be done before we do anything with vectorization.
-#include "src/Core/util/Macros.h"
-
-// Disable the ipa-cp-clone optimization flag with MinGW 6.x or newer (enabled by default with -O3)
-// See http://eigen.tuxfamily.org/bz/show_bug.cgi?id=556 for details.
-#if EIGEN_COMP_MINGW && EIGEN_GNUC_AT_LEAST(4,6)
- #pragma GCC optimize ("-fno-ipa-cp-clone")
-#endif
-
-#include <complex>
-
-// this include file manages BLAS and MKL related macros
-// and inclusion of their respective header files
-#include "src/Core/util/MKL_support.h"
-
-// if alignment is disabled, then disable vectorization. Note: EIGEN_ALIGN is the proper check, it takes into
-// account both the user's will (EIGEN_DONT_ALIGN) and our own platform checks
-#if !EIGEN_ALIGN
- #ifndef EIGEN_DONT_VECTORIZE
- #define EIGEN_DONT_VECTORIZE
- #endif
-#endif
-
-#if EIGEN_COMP_MSVC
- #include <malloc.h> // for _aligned_malloc -- need it regardless of whether vectorization is enabled
- #if (EIGEN_COMP_MSVC >= 1500) // 2008 or later
- // Remember that usage of defined() in a #define is undefined by the standard.
- // a user reported that in 64-bit mode, MSVC doesn't care to define _M_IX86_FP.
- #if (defined(_M_IX86_FP) && (_M_IX86_FP >= 2)) || EIGEN_ARCH_x86_64
- #define EIGEN_SSE2_ON_MSVC_2008_OR_LATER
- #endif
- #endif
-#else
- // Remember that usage of defined() in a #define is undefined by the standard
- #if (defined __SSE2__) && ( (!EIGEN_COMP_GNUC) || EIGEN_COMP_ICC || EIGEN_GNUC_AT_LEAST(4,2) )
- #define EIGEN_SSE2_ON_NON_MSVC_BUT_NOT_OLD_GCC
- #endif
-#endif
-
-#ifndef EIGEN_DONT_VECTORIZE
-
- #if defined (EIGEN_SSE2_ON_NON_MSVC_BUT_NOT_OLD_GCC) || defined(EIGEN_SSE2_ON_MSVC_2008_OR_LATER)
-
- // Defines symbols for compile-time detection of which instructions are
- // used.
- // EIGEN_VECTORIZE_YY is defined if and only if the instruction set YY is used
- #define EIGEN_VECTORIZE
- #define EIGEN_VECTORIZE_SSE
- #define EIGEN_VECTORIZE_SSE2
-
- // Detect sse3/ssse3/sse4:
- // gcc and icc defines __SSE3__, ...
- // there is no way to know about this on msvc. You can define EIGEN_VECTORIZE_SSE* if you
- // want to force the use of those instructions with msvc.
- #ifdef __SSE3__
- #define EIGEN_VECTORIZE_SSE3
- #endif
- #ifdef __SSSE3__
- #define EIGEN_VECTORIZE_SSSE3
- #endif
- #ifdef __SSE4_1__
- #define EIGEN_VECTORIZE_SSE4_1
- #endif
- #ifdef __SSE4_2__
- #define EIGEN_VECTORIZE_SSE4_2
- #endif
- #ifdef __AVX__
- #define EIGEN_VECTORIZE_AVX
- #define EIGEN_VECTORIZE_SSE3
- #define EIGEN_VECTORIZE_SSSE3
- #define EIGEN_VECTORIZE_SSE4_1
- #define EIGEN_VECTORIZE_SSE4_2
- #endif
- #ifdef __AVX2__
- #define EIGEN_VECTORIZE_AVX2
- #endif
- #ifdef __FMA__
- #define EIGEN_VECTORIZE_FMA
- #endif
- // include files
-
- // This extern "C" works around a MINGW-w64 compilation issue
- // https://sourceforge.net/tracker/index.php?func=detail&aid=3018394&group_id=202880&atid=983354
- // In essence, intrin.h is included by windows.h and also declares intrinsics (just as emmintrin.h etc. below do).
- // However, intrin.h uses an extern "C" declaration, and g++ thus complains of duplicate declarations
- // with conflicting linkage. The linkage for intrinsics doesn't matter, but at that stage the compiler doesn't know;
- // so, to avoid compile errors when windows.h is included after Eigen/Core, ensure intrinsics are extern "C" here too.
- // notice that since these are C headers, the extern "C" is theoretically needed anyways.
- extern "C" {
- // In theory we should only include immintrin.h and not the other *mmintrin.h header files directly.
- // Doing so triggers some issues with ICC. However old gcc versions seems to not have this file, thus:
- #if EIGEN_COMP_ICC >= 1110
- #include <immintrin.h>
- #else
- #include <emmintrin.h>
- #include <xmmintrin.h>
- #ifdef EIGEN_VECTORIZE_SSE3
- #include <pmmintrin.h>
- #endif
- #ifdef EIGEN_VECTORIZE_SSSE3
- #include <tmmintrin.h>
- #endif
- #ifdef EIGEN_VECTORIZE_SSE4_1
- #include <smmintrin.h>
- #endif
- #ifdef EIGEN_VECTORIZE_SSE4_2
- #include <nmmintrin.h>
- #endif
- #ifdef EIGEN_VECTORIZE_AVX
- #include <immintrin.h>
- #endif
- #endif
- } // end extern "C"
- #elif defined __VSX__
- #define EIGEN_VECTORIZE
- #define EIGEN_VECTORIZE_VSX
- #include <altivec.h>
- // We need to #undef all these ugly tokens defined in <altivec.h>
- // => use __vector instead of vector
- #undef bool
- #undef vector
- #undef pixel
- #elif defined __ALTIVEC__
- #define EIGEN_VECTORIZE
- #define EIGEN_VECTORIZE_ALTIVEC
- #include <altivec.h>
- // We need to #undef all these ugly tokens defined in <altivec.h>
- // => use __vector instead of vector
- #undef bool
- #undef vector
- #undef pixel
- #elif defined __ARM_NEON__
- #define EIGEN_VECTORIZE
- #define EIGEN_VECTORIZE_NEON
- #include <arm_neon.h>
- #endif
-#endif
-
-#include <float.h>
-#include <limits.h>
-#include <math.h>
-
-#if defined(__NVCC__)
- #define EIGEN_VECTORIZE_CUDA
- #include <vector_types.h>
-#elif defined(__GCUDACC__)
- #define EIGEN_VECTORIZE_CUDA
- #define __VECTOR_TYPES_H__
- #include "third_party/gpus/cuda/include/vector_functions.h"
-#endif
-
-#if (defined _OPENMP) && (!defined EIGEN_DONT_PARALLELIZE)
- #define EIGEN_HAS_OPENMP
-#endif
-
-#ifdef EIGEN_HAS_OPENMP
-#include <omp.h>
-#endif
-
-// MSVC for windows mobile does not have the errno.h file
-#if !(EIGEN_COMP_MSVC && EIGEN_OS_WINCE) && !EIGEN_COMP_ARM
-#define EIGEN_HAS_ERRNO
-#endif
-
-#ifdef EIGEN_HAS_ERRNO
-#include <cerrno>
-#endif
-#include <cstddef>
-#include <cstdlib>
-#include <cmath>
-#include <cassert>
-#include <functional>
-#include <iosfwd>
-#include <cstring>
-#include <string>
-#include <limits>
-#include <climits> // for CHAR_BIT
-// for min/max:
-#include <algorithm>
-
-// for outputting debug info
-#ifdef EIGEN_DEBUG_ASSIGN
-#include <iostream>
-#endif
-
-// required for __cpuid, needs to be included after cmath
-#if defined(_MSC_VER) && (defined(_M_IX86)||defined(_M_X64))
- #include <intrin.h>
-#endif
-
-#if (defined(_CPPUNWIND) || defined(__EXCEPTIONS)) && !defined(__CUDA_ARCH__)
- #define EIGEN_EXCEPTIONS
-#endif
-
-#ifdef EIGEN_EXCEPTIONS
- #include <new>
-#endif
-
-/** \brief Namespace containing all symbols from the %Eigen library. */
-namespace Eigen {
-
-inline static const char *SimdInstructionSetsInUse(void) {
-#if defined(EIGEN_VECTORIZE_AVX)
- return "AVX SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2";
-#elif defined(EIGEN_VECTORIZE_SSE4_2)
- return "SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2";
-#elif defined(EIGEN_VECTORIZE_SSE4_1)
- return "SSE, SSE2, SSE3, SSSE3, SSE4.1";
-#elif defined(EIGEN_VECTORIZE_SSSE3)
- return "SSE, SSE2, SSE3, SSSE3";
-#elif defined(EIGEN_VECTORIZE_SSE3)
- return "SSE, SSE2, SSE3";
-#elif defined(EIGEN_VECTORIZE_SSE2)
- return "SSE, SSE2";
-#elif defined(EIGEN_VECTORIZE_ALTIVEC)
- return "AltiVec";
-#elif defined(EIGEN_VECTORIZE_VSX)
- return "VSX";
-#elif defined(EIGEN_VECTORIZE_NEON)
- return "ARM NEON";
-#else
- return "None";
-#endif
-}
-
-} // end namespace Eigen
-
-#define STAGE10_FULL_EIGEN2_API 10
-#define STAGE20_RESOLVE_API_CONFLICTS 20
-#define STAGE30_FULL_EIGEN3_API 30
-#define STAGE40_FULL_EIGEN3_STRICTNESS 40
-#define STAGE99_NO_EIGEN2_SUPPORT 99
-
-#if defined EIGEN2_SUPPORT_STAGE40_FULL_EIGEN3_STRICTNESS
- #define EIGEN2_SUPPORT
- #define EIGEN2_SUPPORT_STAGE STAGE40_FULL_EIGEN3_STRICTNESS
-#elif defined EIGEN2_SUPPORT_STAGE30_FULL_EIGEN3_API
- #define EIGEN2_SUPPORT
- #define EIGEN2_SUPPORT_STAGE STAGE30_FULL_EIGEN3_API
-#elif defined EIGEN2_SUPPORT_STAGE20_RESOLVE_API_CONFLICTS
- #define EIGEN2_SUPPORT
- #define EIGEN2_SUPPORT_STAGE STAGE20_RESOLVE_API_CONFLICTS
-#elif defined EIGEN2_SUPPORT_STAGE10_FULL_EIGEN2_API
- #define EIGEN2_SUPPORT
- #define EIGEN2_SUPPORT_STAGE STAGE10_FULL_EIGEN2_API
-#elif defined EIGEN2_SUPPORT
- // default to stage 3, that's what it's always meant
- #define EIGEN2_SUPPORT_STAGE30_FULL_EIGEN3_API
- #define EIGEN2_SUPPORT_STAGE STAGE30_FULL_EIGEN3_API
-#else
- #define EIGEN2_SUPPORT_STAGE STAGE99_NO_EIGEN2_SUPPORT
-#endif
-
-#ifdef EIGEN2_SUPPORT
-#undef minor
-#endif
-
-// we use size_t frequently and we'll never remember to prepend it with std:: everytime just to
-// ensure QNX/QCC support
-using std::size_t;
-// gcc 4.6.0 wants std:: for ptrdiff_t
-using std::ptrdiff_t;
-
-/** \defgroup Core_Module Core module
- * This is the main module of Eigen providing dense matrix and vector support
- * (both fixed and dynamic size) with all the features corresponding to a BLAS library
- * and much more...
- *
- * \code
- * #include <Eigen/Core>
- * \endcode
- */
-
-#include "src/Core/util/Constants.h"
-#include "src/Core/util/ForwardDeclarations.h"
-#include "src/Core/util/Meta.h"
-#include "src/Core/util/StaticAssert.h"
-#include "src/Core/util/XprHelper.h"
-#include "src/Core/util/Memory.h"
-
-#include "src/Core/NumTraits.h"
-#include "src/Core/MathFunctions.h"
-#include "src/Core/SpecialFunctions.h"
-#include "src/Core/GenericPacketMath.h"
-
-#if defined EIGEN_VECTORIZE_AVX
- // Use AVX for floats and doubles, SSE for integers
- #include "src/Core/arch/SSE/PacketMath.h"
- #include "src/Core/arch/SSE/Complex.h"
- #include "src/Core/arch/AVX/PacketMath.h"
- #include "src/Core/arch/AVX/Complex.h"
- #include "src/Core/arch/AVX/MathFunctions.h"
- #include "src/Core/arch/AVX/TypeCasting.h"
-#elif defined EIGEN_VECTORIZE_SSE
- #include "src/Core/arch/SSE/PacketMath.h"
- #include "src/Core/arch/SSE/MathFunctions.h"
- #include "src/Core/arch/SSE/Complex.h"
- #include "src/Core/arch/SSE/TypeCasting.h"
-#elif defined(EIGEN_VECTORIZE_ALTIVEC) || defined(EIGEN_VECTORIZE_VSX)
- #include "src/Core/arch/AltiVec/PacketMath.h"
- #include "src/Core/arch/AltiVec/MathFunctions.h"
- #include "src/Core/arch/AltiVec/Complex.h"
-#elif defined EIGEN_VECTORIZE_NEON
- #include "src/Core/arch/NEON/PacketMath.h"
- #include "src/Core/arch/NEON/MathFunctions.h"
- #include "src/Core/arch/NEON/Complex.h"
-#endif
-
-#if defined EIGEN_VECTORIZE_CUDA
- #include "src/Core/arch/CUDA/PacketMath.h"
- #include "src/Core/arch/CUDA/MathFunctions.h"
-#endif
-
-#include "src/Core/arch/Default/Settings.h"
-
-#include "src/Core/functors/BinaryFunctors.h"
-#include "src/Core/functors/UnaryFunctors.h"
-#include "src/Core/functors/NullaryFunctors.h"
-#include "src/Core/functors/StlFunctors.h"
-
-#include "src/Core/DenseCoeffsBase.h"
-#include "src/Core/DenseBase.h"
-#include "src/Core/MatrixBase.h"
-#include "src/Core/EigenBase.h"
-
-#ifdef EIGEN_ENABLE_EVALUATORS
-#include "src/Core/functors/AssignmentFunctors.h"
-#include "src/Core/Product.h"
-#include "src/Core/CoreEvaluators.h"
-#include "src/Core/AssignEvaluator.h"
-#include "src/Core/ProductEvaluators.h"
-#endif
-
-#ifndef EIGEN_PARSED_BY_DOXYGEN // work around Doxygen bug triggered by Assign.h r814874
- // at least confirmed with Doxygen 1.5.5 and 1.5.6
- #include "src/Core/Assign.h"
-#endif
-
-#include "src/Core/ArrayBase.h"
-#include "src/Core/util/BlasUtil.h"
-#include "src/Core/util/MatrixMapper.h"
-#include "src/Core/DenseStorage.h"
-#include "src/Core/NestByValue.h"
-#include "src/Core/ForceAlignedAccess.h"
-#include "src/Core/ReturnByValue.h"
-#include "src/Core/NoAlias.h"
-#include "src/Core/PlainObjectBase.h"
-#include "src/Core/Matrix.h"
-#include "src/Core/Array.h"
-#include "src/Core/CwiseBinaryOp.h"
-#include "src/Core/CwiseUnaryOp.h"
-#include "src/Core/CwiseNullaryOp.h"
-#include "src/Core/CwiseUnaryView.h"
-#include "src/Core/SelfCwiseBinaryOp.h"
-#include "src/Core/Dot.h"
-#include "src/Core/StableNorm.h"
-#include "src/Core/MapBase.h"
-#include "src/Core/Stride.h"
-#include "src/Core/Map.h"
-#include "src/Core/Block.h"
-#include "src/Core/VectorBlock.h"
-#include "src/Core/Ref.h"
-#include "src/Core/Transpose.h"
-#include "src/Core/DiagonalMatrix.h"
-#include "src/Core/Diagonal.h"
-#include "src/Core/DiagonalProduct.h"
-#include "src/Core/PermutationMatrix.h"
-#include "src/Core/Transpositions.h"
-#include "src/Core/Redux.h"
-#include "src/Core/Visitor.h"
-#include "src/Core/Fuzzy.h"
-#include "src/Core/IO.h"
-#include "src/Core/Swap.h"
-#include "src/Core/CommaInitializer.h"
-#include "src/Core/Flagged.h"
-#include "src/Core/ProductBase.h"
-#include "src/Core/GeneralProduct.h"
-#include "src/Core/TriangularMatrix.h"
-#include "src/Core/SelfAdjointView.h"
-#include "src/Core/products/GeneralBlockPanelKernel.h"
-#include "src/Core/products/Parallelizer.h"
-#include "src/Core/products/CoeffBasedProduct.h"
-#include "src/Core/products/GeneralMatrixVector.h"
-#include "src/Core/products/GeneralMatrixMatrix.h"
-#include "src/Core/SolveTriangular.h"
-#include "src/Core/products/GeneralMatrixMatrixTriangular.h"
-#include "src/Core/products/SelfadjointMatrixVector.h"
-#include "src/Core/products/SelfadjointMatrixMatrix.h"
-#include "src/Core/products/SelfadjointProduct.h"
-#include "src/Core/products/SelfadjointRank2Update.h"
-#include "src/Core/products/TriangularMatrixVector.h"
-#include "src/Core/products/TriangularMatrixMatrix.h"
-#include "src/Core/products/TriangularSolverMatrix.h"
-#include "src/Core/products/TriangularSolverVector.h"
-#include "src/Core/BandMatrix.h"
-#include "src/Core/CoreIterators.h"
-
-#include "src/Core/BooleanRedux.h"
-#include "src/Core/Select.h"
-#include "src/Core/VectorwiseOp.h"
-#include "src/Core/Random.h"
-#include "src/Core/Replicate.h"
-#include "src/Core/Reverse.h"
-#include "src/Core/ArrayWrapper.h"
-
-#ifdef EIGEN_USE_BLAS
-#include "src/Core/products/GeneralMatrixMatrix_MKL.h"
-#include "src/Core/products/GeneralMatrixVector_MKL.h"
-#include "src/Core/products/GeneralMatrixMatrixTriangular_MKL.h"
-#include "src/Core/products/SelfadjointMatrixMatrix_MKL.h"
-#include "src/Core/products/SelfadjointMatrixVector_MKL.h"
-#include "src/Core/products/TriangularMatrixMatrix_MKL.h"
-#include "src/Core/products/TriangularMatrixVector_MKL.h"
-#include "src/Core/products/TriangularSolverMatrix_MKL.h"
-#endif // EIGEN_USE_BLAS
-
-#ifdef EIGEN_USE_MKL_VML
-#include "src/Core/Assign_MKL.h"
-#endif
-
-#include "src/Core/GlobalFunctions.h"
-
-#include "src/Core/util/ReenableStupidWarnings.h"
-
-#ifdef EIGEN2_SUPPORT
-#include "Eigen2Support"
-#endif
-
-#endif // EIGEN_CORE_H
+#include "external/eigen_archive/eigen-eigen-ce5a455b34c0/Eigen/Core"
diff --git a/third_party/eigen3/Eigen/LU b/third_party/eigen3/Eigen/LU
index e5c3f32f78..25e4ebf4f5 100644
--- a/third_party/eigen3/Eigen/LU
+++ b/third_party/eigen3/Eigen/LU
@@ -1,43 +1 @@
-#ifndef EIGEN_LU_MODULE_H
-#define EIGEN_LU_MODULE_H
-
-#include "Core"
-
-#include "src/Core/util/DisableStupidWarnings.h"
-
-/** \defgroup LU_Module LU module
- * This module includes %LU decomposition and related notions such as matrix inversion and determinant.
- * This module defines the following MatrixBase methods:
- * - MatrixBase::inverse()
- * - MatrixBase::determinant()
- *
- * \code
- * #include <Eigen/LU>
- * \endcode
- */
-
-#include "src/misc/Solve.h"
-#include "src/misc/Kernel.h"
-#include "src/misc/Image.h"
-#include "src/LU/FullPivLU.h"
-#include "src/LU/PartialPivLU.h"
-#ifdef EIGEN_USE_LAPACKE
-#include "src/LU/PartialPivLU_MKL.h"
-#endif
-#include "src/LU/Determinant.h"
-#include "src/LU/Inverse.h"
-
-// Use the SSE optimized version whenever possible. At the moment the
-// SSE version doesn't compile when AVX is enabled
-#if defined EIGEN_VECTORIZE_SSE && !defined EIGEN_VECTORIZE_AVX
- #include "src/LU/arch/Inverse_SSE.h"
-#endif
-
-#ifdef EIGEN2_SUPPORT
- #include "src/Eigen2Support/LU.h"
-#endif
-
-#include "src/Core/util/ReenableStupidWarnings.h"
-
-#endif // EIGEN_LU_MODULE_H
-/* vim: set filetype=cpp et sw=2 ts=2 ai: */
+#include "external/eigen_archive/eigen-eigen-ce5a455b34c0/Eigen/LU"
diff --git a/third_party/eigen3/unsupported/Eigen/CXX11/Tensor b/third_party/eigen3/unsupported/Eigen/CXX11/Tensor
index 2113b3a00a..8f4bbd7ee9 100644
--- a/third_party/eigen3/unsupported/Eigen/CXX11/Tensor
+++ b/third_party/eigen3/unsupported/Eigen/CXX11/Tensor
@@ -1,146 +1 @@
-// This file is part of Eigen, a lightweight C++ template library
-// for linear algebra.
-//
-// Copyright (C) 2013 Christian Seiler <christian@iwakd.de>
-//
-// This Source Code Form is subject to the terms of the Mozilla
-// Public License v. 2.0. If a copy of the MPL was not distributed
-// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-#ifndef EIGEN_CXX11_TENSOR_MODULE
-#define EIGEN_CXX11_TENSOR_MODULE
-
-#include "Eigen/src/Core/util/StaticAssert.h"
-#include "unsupported/Eigen/CXX11/Core"
-
-#include "Eigen/src/Core/util/DisableStupidWarnings.h"
-
-/** \defgroup CXX11_Tensor_Module Tensor Module
- *
- * This module provides a Tensor class for storing arbitrarily indexed
- * objects.
- *
- * \code
- * #include <Eigen/CXX11/Tensor>
- * \endcode
- */
-
-#include <cstddef>
-#include <cstring>
-#include <stdint.h>
-
-#if __cplusplus > 199711
-#include <random>
-#endif
-
-#ifdef EIGEN_USE_THREADS
-#if defined(EIGEN_USE_CUSTOM_THREAD_POOL)
-// Use the Eigen implementation of the ThreadPool class. We only need to
-// include a few multithreading headers
-#include <condition_variable>
-#include <deque>
-#include <mutex>
-#include <thread>
-#else
-#include "tensorflow/core/platform/port.h"
-#endif // EIGEN_USE_CUSTOM_THREAD_POOL
-
-#include <functional>
-
-#endif // EIGEN_USE_THREADS
-
-#ifdef EIGEN_USE_GPU
-#include "tensorflow/core/platform/port.h"
-#if !defined(__GCUDACC__) && !defined(__GCUDACC_HOST__)
-#include <cuda.h>
-#include <cufft.h>
-#include <cuda_runtime.h>
-#ifdef __CUDACC__
-#include <curand_kernel.h>
-#endif // defined(__CUDACC__)
-#else
-#include "platforms/gpus/gcudacc/runtime/gcudacc_runtime.h"
-#ifdef __CUDACC__
-#include "third_party/gpus/cuda/curand_device/curand_kernel.h"
-#endif // defined(__CUDACC__)
-#endif // __GCUDACC__
-#endif // EIGEN_USE_GPU
-
-#ifdef _WIN32
-#include <winbase.h>
-#elif defined(__APPLE__)
-#include <mach/mach_time.h>
-#else
-#include <time.h>
-#endif
-
-#include "Eigen/Core"
-
-// Beware: the order of the include matters to some compilers. For example
-// TensorIndexList.h should be included before TensorDimensions.h in order to
-// use index lists to encode tensor dimensions when compiling with llvm.
-#include "unsupported/Eigen/CXX11/src/Tensor/TensorForwardDeclarations.h"
-#include "unsupported/Eigen/CXX11/src/Tensor/TensorMeta.h"
-#include "unsupported/Eigen/CXX11/src/Tensor/TensorDeviceType.h"
-#include "unsupported/Eigen/CXX11/src/Tensor/TensorIndexList.h"
-#include "unsupported/Eigen/CXX11/src/Tensor/TensorDimensionList.h"
-#include "unsupported/Eigen/CXX11/src/Tensor/TensorDimensions.h"
-#include "unsupported/Eigen/CXX11/src/Tensor/TensorInitializer.h"
-#include "unsupported/Eigen/CXX11/src/Tensor/TensorTraits.h"
-#include "unsupported/Eigen/CXX11/src/Tensor/TensorFunctors.h"
-#include "unsupported/Eigen/CXX11/src/Tensor/TensorUInt128.h"
-#include "unsupported/Eigen/CXX11/src/Tensor/TensorIntDiv.h"
-#include "unsupported/Eigen/CXX11/src/Tensor/TensorBlock.h"
-
-#include "unsupported/Eigen/CXX11/src/Tensor/TensorBase.h"
-
-#include "unsupported/Eigen/CXX11/src/Tensor/TensorEvaluator.h"
-#include "unsupported/Eigen/CXX11/src/Tensor/TensorExpr.h"
-#include "unsupported/Eigen/CXX11/src/Tensor/TensorReduction.h"
-#include "unsupported/Eigen/CXX11/src/Tensor/TensorArgMax.h"
-
-#include "unsupported/Eigen/CXX11/src/Tensor/TensorConcatenation.h"
-#include "unsupported/Eigen/CXX11/src/Tensor/TensorContractionMappers.h"
-#include "unsupported/Eigen/CXX11/src/Tensor/TensorContraction.h"
-#include "unsupported/Eigen/CXX11/src/Tensor/TensorContractionThreadPool.h"
-#include "unsupported/Eigen/CXX11/src/Tensor/TensorContractionCuda.h"
-#include "unsupported/Eigen/CXX11/src/Tensor/TensorConversion.h"
-#include "unsupported/Eigen/CXX11/src/Tensor/TensorConvolution.h"
-#include "unsupported/Eigen/CXX11/src/NeuralNetworks/TensorConvolutionByFFT.h"
-#include "unsupported/Eigen/CXX11/src/Tensor/TensorFFT.h"
-#include "unsupported/Eigen/CXX11/src/Tensor/TensorPatch.h"
-#include "unsupported/Eigen/CXX11/src/Tensor/TensorImagePatch.h"
-#include "unsupported/Eigen/CXX11/src/Tensor/TensorVolumePatch.h"
-#include "unsupported/Eigen/CXX11/src/Tensor/TensorBroadcasting.h"
-#include "unsupported/Eigen/CXX11/src/Tensor/TensorChipping.h"
-#include "unsupported/Eigen/CXX11/src/Tensor/TensorInflation.h"
-#include "unsupported/Eigen/CXX11/src/Tensor/TensorLayoutSwap.h"
-#include "unsupported/Eigen/CXX11/src/Tensor/TensorMorphing.h"
-#include "unsupported/Eigen/CXX11/src/Tensor/TensorPadding.h"
-#include "unsupported/Eigen/CXX11/src/Tensor/TensorReverse.h"
-#include "unsupported/Eigen/CXX11/src/Tensor/TensorTrueIndices.h"
-#include "unsupported/Eigen/CXX11/src/Tensor/TensorShuffling.h"
-#include "unsupported/Eigen/CXX11/src/Tensor/TensorStriding.h"
-#include "unsupported/Eigen/CXX11/src/Tensor/TensorCustomOp.h"
-#include "unsupported/Eigen/CXX11/src/Tensor/TensorEvalTo.h"
-#include "unsupported/Eigen/CXX11/src/Tensor/TensorForcedEval.h"
-#include "unsupported/Eigen/CXX11/src/Tensor/TensorGenerator.h"
-#include "unsupported/Eigen/CXX11/src/Tensor/TensorAssign.h"
-
-#include "unsupported/Eigen/CXX11/src/Tensor/TensorExecutor.h"
-#include "unsupported/Eigen/CXX11/src/Tensor/TensorDevice.h"
-
-#include "unsupported/Eigen/CXX11/src/Tensor/TensorStorage.h"
-#include "unsupported/Eigen/CXX11/src/Tensor/Tensor.h"
-#include "unsupported/Eigen/CXX11/src/Tensor/TensorFixedSize.h"
-#include "unsupported/Eigen/CXX11/src/Tensor/TensorVarDim.h"
-#include "unsupported/Eigen/CXX11/src/Tensor/TensorMap.h"
-#include "unsupported/Eigen/CXX11/src/Tensor/TensorRef.h"
-
-#include "unsupported/Eigen/CXX11/src/Tensor/TensorReductionCuda.h"
-
-#include "unsupported/Eigen/CXX11/src/Tensor/TensorIO.h"
-
-#include "Eigen/src/Core/util/ReenableStupidWarnings.h"
-
-#endif // EIGEN_CXX11_TENSOR_MODULE
+#include "external/eigen_archive/eigen-eigen-ce5a455b34c0/unsupported/Eigen/CXX11/Tensor"