Repository: yyccR/Location
Branch: master
Commit: 3d163f28970d
Files: 1683
Total size: 13.4 MB
Directory structure:
gitextract_8z7l01r9/
├── .gitignore
├── .travis.yml
├── CMakeLists.txt
├── README.md
├── README_CN.md
├── config/
│ ├── CMakeLists.txt
│ ├── Config.cpp
│ ├── Config.h
│ └── config_files/
│ ├── Android.config
│ └── IOS.config
├── docs/
│ ├── SensorCalibration.md
│ ├── SensorDataChecking.md
│ ├── SomeTestCaseResults.md
│ ├── apiCallDetails.md
│ ├── implementDetails.md
│ ├── sensors.md
│ ├── trainingStopDetectModel.md
│ └── workflow.md
├── include/
│ └── eigen3/
│ ├── .hg_archival.txt
│ ├── .hgeol
│ ├── .hgignore
│ ├── .hgtags
│ ├── CMakeLists.txt
│ ├── COPYING.BSD
│ ├── COPYING.GPL
│ ├── COPYING.LGPL
│ ├── COPYING.MINPACK
│ ├── COPYING.MPL2
│ ├── COPYING.README
│ ├── CTestConfig.cmake
│ ├── CTestCustom.cmake.in
│ ├── Eigen/
│ │ ├── CMakeLists.txt
│ │ ├── Cholesky
│ │ ├── CholmodSupport
│ │ ├── Core
│ │ ├── Dense
│ │ ├── Eigen
│ │ ├── Eigenvalues
│ │ ├── Geometry
│ │ ├── Householder
│ │ ├── IterativeLinearSolvers
│ │ ├── Jacobi
│ │ ├── LU
│ │ ├── MetisSupport
│ │ ├── OrderingMethods
│ │ ├── PaStiXSupport
│ │ ├── PardisoSupport
│ │ ├── QR
│ │ ├── QtAlignedMalloc
│ │ ├── SPQRSupport
│ │ ├── SVD
│ │ ├── Sparse
│ │ ├── SparseCholesky
│ │ ├── SparseCore
│ │ ├── SparseLU
│ │ ├── SparseQR
│ │ ├── StdDeque
│ │ ├── StdList
│ │ ├── StdVector
│ │ ├── SuperLUSupport
│ │ ├── UmfPackSupport
│ │ └── src/
│ │ ├── Cholesky/
│ │ │ ├── LDLT.h
│ │ │ ├── LLT.h
│ │ │ └── LLT_LAPACKE.h
│ │ ├── CholmodSupport/
│ │ │ └── CholmodSupport.h
│ │ ├── Core/
│ │ │ ├── Array.h
│ │ │ ├── ArrayBase.h
│ │ │ ├── ArrayWrapper.h
│ │ │ ├── Assign.h
│ │ │ ├── AssignEvaluator.h
│ │ │ ├── Assign_MKL.h
│ │ │ ├── BandMatrix.h
│ │ │ ├── Block.h
│ │ │ ├── BooleanRedux.h
│ │ │ ├── CommaInitializer.h
│ │ │ ├── ConditionEstimator.h
│ │ │ ├── CoreEvaluators.h
│ │ │ ├── CoreIterators.h
│ │ │ ├── CwiseBinaryOp.h
│ │ │ ├── CwiseNullaryOp.h
│ │ │ ├── CwiseTernaryOp.h
│ │ │ ├── CwiseUnaryOp.h
│ │ │ ├── CwiseUnaryView.h
│ │ │ ├── DenseBase.h
│ │ │ ├── DenseCoeffsBase.h
│ │ │ ├── DenseStorage.h
│ │ │ ├── Diagonal.h
│ │ │ ├── DiagonalMatrix.h
│ │ │ ├── DiagonalProduct.h
│ │ │ ├── Dot.h
│ │ │ ├── EigenBase.h
│ │ │ ├── ForceAlignedAccess.h
│ │ │ ├── Fuzzy.h
│ │ │ ├── GeneralProduct.h
│ │ │ ├── GenericPacketMath.h
│ │ │ ├── GlobalFunctions.h
│ │ │ ├── IO.h
│ │ │ ├── Inverse.h
│ │ │ ├── Map.h
│ │ │ ├── MapBase.h
│ │ │ ├── MathFunctions.h
│ │ │ ├── MathFunctionsImpl.h
│ │ │ ├── Matrix.h
│ │ │ ├── MatrixBase.h
│ │ │ ├── NestByValue.h
│ │ │ ├── NoAlias.h
│ │ │ ├── NumTraits.h
│ │ │ ├── PermutationMatrix.h
│ │ │ ├── PlainObjectBase.h
│ │ │ ├── Product.h
│ │ │ ├── ProductEvaluators.h
│ │ │ ├── Random.h
│ │ │ ├── Redux.h
│ │ │ ├── Ref.h
│ │ │ ├── Replicate.h
│ │ │ ├── ReturnByValue.h
│ │ │ ├── Reverse.h
│ │ │ ├── Select.h
│ │ │ ├── SelfAdjointView.h
│ │ │ ├── SelfCwiseBinaryOp.h
│ │ │ ├── Solve.h
│ │ │ ├── SolveTriangular.h
│ │ │ ├── SolverBase.h
│ │ │ ├── StableNorm.h
│ │ │ ├── Stride.h
│ │ │ ├── Swap.h
│ │ │ ├── Transpose.h
│ │ │ ├── Transpositions.h
│ │ │ ├── TriangularMatrix.h
│ │ │ ├── VectorBlock.h
│ │ │ ├── VectorwiseOp.h
│ │ │ ├── Visitor.h
│ │ │ ├── arch/
│ │ │ │ ├── AVX/
│ │ │ │ │ ├── Complex.h
│ │ │ │ │ ├── MathFunctions.h
│ │ │ │ │ ├── PacketMath.h
│ │ │ │ │ └── TypeCasting.h
│ │ │ │ ├── AVX512/
│ │ │ │ │ ├── MathFunctions.h
│ │ │ │ │ └── PacketMath.h
│ │ │ │ ├── AltiVec/
│ │ │ │ │ ├── Complex.h
│ │ │ │ │ ├── MathFunctions.h
│ │ │ │ │ └── PacketMath.h
│ │ │ │ ├── CUDA/
│ │ │ │ │ ├── Complex.h
│ │ │ │ │ ├── Half.h
│ │ │ │ │ ├── MathFunctions.h
│ │ │ │ │ ├── PacketMath.h
│ │ │ │ │ ├── PacketMathHalf.h
│ │ │ │ │ └── TypeCasting.h
│ │ │ │ ├── Default/
│ │ │ │ │ ├── ConjHelper.h
│ │ │ │ │ └── Settings.h
│ │ │ │ ├── NEON/
│ │ │ │ │ ├── Complex.h
│ │ │ │ │ ├── MathFunctions.h
│ │ │ │ │ └── PacketMath.h
│ │ │ │ ├── SSE/
│ │ │ │ │ ├── Complex.h
│ │ │ │ │ ├── MathFunctions.h
│ │ │ │ │ ├── PacketMath.h
│ │ │ │ │ └── TypeCasting.h
│ │ │ │ └── ZVector/
│ │ │ │ ├── Complex.h
│ │ │ │ ├── MathFunctions.h
│ │ │ │ └── PacketMath.h
│ │ │ ├── functors/
│ │ │ │ ├── AssignmentFunctors.h
│ │ │ │ ├── BinaryFunctors.h
│ │ │ │ ├── NullaryFunctors.h
│ │ │ │ ├── StlFunctors.h
│ │ │ │ ├── TernaryFunctors.h
│ │ │ │ └── UnaryFunctors.h
│ │ │ ├── products/
│ │ │ │ ├── GeneralBlockPanelKernel.h
│ │ │ │ ├── GeneralMatrixMatrix.h
│ │ │ │ ├── GeneralMatrixMatrixTriangular.h
│ │ │ │ ├── GeneralMatrixMatrixTriangular_BLAS.h
│ │ │ │ ├── GeneralMatrixMatrix_BLAS.h
│ │ │ │ ├── GeneralMatrixVector.h
│ │ │ │ ├── GeneralMatrixVector_BLAS.h
│ │ │ │ ├── Parallelizer.h
│ │ │ │ ├── SelfadjointMatrixMatrix.h
│ │ │ │ ├── SelfadjointMatrixMatrix_BLAS.h
│ │ │ │ ├── SelfadjointMatrixVector.h
│ │ │ │ ├── SelfadjointMatrixVector_BLAS.h
│ │ │ │ ├── SelfadjointProduct.h
│ │ │ │ ├── SelfadjointRank2Update.h
│ │ │ │ ├── TriangularMatrixMatrix.h
│ │ │ │ ├── TriangularMatrixMatrix_BLAS.h
│ │ │ │ ├── TriangularMatrixVector.h
│ │ │ │ ├── TriangularMatrixVector_BLAS.h
│ │ │ │ ├── TriangularSolverMatrix.h
│ │ │ │ ├── TriangularSolverMatrix_BLAS.h
│ │ │ │ └── TriangularSolverVector.h
│ │ │ └── util/
│ │ │ ├── BlasUtil.h
│ │ │ ├── Constants.h
│ │ │ ├── DisableStupidWarnings.h
│ │ │ ├── ForwardDeclarations.h
│ │ │ ├── MKL_support.h
│ │ │ ├── Macros.h
│ │ │ ├── Memory.h
│ │ │ ├── Meta.h
│ │ │ ├── NonMPL2.h
│ │ │ ├── ReenableStupidWarnings.h
│ │ │ ├── StaticAssert.h
│ │ │ └── XprHelper.h
│ │ ├── Eigenvalues/
│ │ │ ├── ComplexEigenSolver.h
│ │ │ ├── ComplexSchur.h
│ │ │ ├── ComplexSchur_LAPACKE.h
│ │ │ ├── EigenSolver.h
│ │ │ ├── GeneralizedEigenSolver.h
│ │ │ ├── GeneralizedSelfAdjointEigenSolver.h
│ │ │ ├── HessenbergDecomposition.h
│ │ │ ├── MatrixBaseEigenvalues.h
│ │ │ ├── RealQZ.h
│ │ │ ├── RealSchur.h
│ │ │ ├── RealSchur_LAPACKE.h
│ │ │ ├── SelfAdjointEigenSolver.h
│ │ │ ├── SelfAdjointEigenSolver_LAPACKE.h
│ │ │ └── Tridiagonalization.h
│ │ ├── Geometry/
│ │ │ ├── AlignedBox.h
│ │ │ ├── AngleAxis.h
│ │ │ ├── EulerAngles.h
│ │ │ ├── Homogeneous.h
│ │ │ ├── Hyperplane.h
│ │ │ ├── OrthoMethods.h
│ │ │ ├── ParametrizedLine.h
│ │ │ ├── Quaternion.h
│ │ │ ├── Rotation2D.h
│ │ │ ├── RotationBase.h
│ │ │ ├── Scaling.h
│ │ │ ├── Transform.h
│ │ │ ├── Translation.h
│ │ │ ├── Umeyama.h
│ │ │ └── arch/
│ │ │ └── Geometry_SSE.h
│ │ ├── Householder/
│ │ │ ├── BlockHouseholder.h
│ │ │ ├── Householder.h
│ │ │ └── HouseholderSequence.h
│ │ ├── IterativeLinearSolvers/
│ │ │ ├── BasicPreconditioners.h
│ │ │ ├── BiCGSTAB.h
│ │ │ ├── ConjugateGradient.h
│ │ │ ├── IncompleteCholesky.h
│ │ │ ├── IncompleteLUT.h
│ │ │ ├── IterativeSolverBase.h
│ │ │ ├── LeastSquareConjugateGradient.h
│ │ │ └── SolveWithGuess.h
│ │ ├── Jacobi/
│ │ │ └── Jacobi.h
│ │ ├── LU/
│ │ │ ├── Determinant.h
│ │ │ ├── FullPivLU.h
│ │ │ ├── InverseImpl.h
│ │ │ ├── PartialPivLU.h
│ │ │ ├── PartialPivLU_LAPACKE.h
│ │ │ └── arch/
│ │ │ └── Inverse_SSE.h
│ │ ├── MetisSupport/
│ │ │ └── MetisSupport.h
│ │ ├── OrderingMethods/
│ │ │ ├── Amd.h
│ │ │ ├── Eigen_Colamd.h
│ │ │ └── Ordering.h
│ │ ├── PaStiXSupport/
│ │ │ └── PaStiXSupport.h
│ │ ├── PardisoSupport/
│ │ │ └── PardisoSupport.h
│ │ ├── QR/
│ │ │ ├── ColPivHouseholderQR.h
│ │ │ ├── ColPivHouseholderQR_LAPACKE.h
│ │ │ ├── CompleteOrthogonalDecomposition.h
│ │ │ ├── FullPivHouseholderQR.h
│ │ │ ├── HouseholderQR.h
│ │ │ └── HouseholderQR_LAPACKE.h
│ │ ├── SPQRSupport/
│ │ │ └── SuiteSparseQRSupport.h
│ │ ├── SVD/
│ │ │ ├── BDCSVD.h
│ │ │ ├── JacobiSVD.h
│ │ │ ├── JacobiSVD_LAPACKE.h
│ │ │ ├── SVDBase.h
│ │ │ └── UpperBidiagonalization.h
│ │ ├── SparseCholesky/
│ │ │ ├── SimplicialCholesky.h
│ │ │ └── SimplicialCholesky_impl.h
│ │ ├── SparseCore/
│ │ │ ├── AmbiVector.h
│ │ │ ├── CompressedStorage.h
│ │ │ ├── ConservativeSparseSparseProduct.h
│ │ │ ├── MappedSparseMatrix.h
│ │ │ ├── SparseAssign.h
│ │ │ ├── SparseBlock.h
│ │ │ ├── SparseColEtree.h
│ │ │ ├── SparseCompressedBase.h
│ │ │ ├── SparseCwiseBinaryOp.h
│ │ │ ├── SparseCwiseUnaryOp.h
│ │ │ ├── SparseDenseProduct.h
│ │ │ ├── SparseDiagonalProduct.h
│ │ │ ├── SparseDot.h
│ │ │ ├── SparseFuzzy.h
│ │ │ ├── SparseMap.h
│ │ │ ├── SparseMatrix.h
│ │ │ ├── SparseMatrixBase.h
│ │ │ ├── SparsePermutation.h
│ │ │ ├── SparseProduct.h
│ │ │ ├── SparseRedux.h
│ │ │ ├── SparseRef.h
│ │ │ ├── SparseSelfAdjointView.h
│ │ │ ├── SparseSolverBase.h
│ │ │ ├── SparseSparseProductWithPruning.h
│ │ │ ├── SparseTranspose.h
│ │ │ ├── SparseTriangularView.h
│ │ │ ├── SparseUtil.h
│ │ │ ├── SparseVector.h
│ │ │ ├── SparseView.h
│ │ │ └── TriangularSolver.h
│ │ ├── SparseLU/
│ │ │ ├── SparseLU.h
│ │ │ ├── SparseLUImpl.h
│ │ │ ├── SparseLU_Memory.h
│ │ │ ├── SparseLU_Structs.h
│ │ │ ├── SparseLU_SupernodalMatrix.h
│ │ │ ├── SparseLU_Utils.h
│ │ │ ├── SparseLU_column_bmod.h
│ │ │ ├── SparseLU_column_dfs.h
│ │ │ ├── SparseLU_copy_to_ucol.h
│ │ │ ├── SparseLU_gemm_kernel.h
│ │ │ ├── SparseLU_heap_relax_snode.h
│ │ │ ├── SparseLU_kernel_bmod.h
│ │ │ ├── SparseLU_panel_bmod.h
│ │ │ ├── SparseLU_panel_dfs.h
│ │ │ ├── SparseLU_pivotL.h
│ │ │ ├── SparseLU_pruneL.h
│ │ │ └── SparseLU_relax_snode.h
│ │ ├── SparseQR/
│ │ │ └── SparseQR.h
│ │ ├── StlSupport/
│ │ │ ├── StdDeque.h
│ │ │ ├── StdList.h
│ │ │ ├── StdVector.h
│ │ │ └── details.h
│ │ ├── SuperLUSupport/
│ │ │ └── SuperLUSupport.h
│ │ ├── UmfPackSupport/
│ │ │ └── UmfPackSupport.h
│ │ ├── misc/
│ │ │ ├── Image.h
│ │ │ ├── Kernel.h
│ │ │ ├── RealSvd2x2.h
│ │ │ ├── blas.h
│ │ │ ├── lapack.h
│ │ │ ├── lapacke.h
│ │ │ └── lapacke_mangling.h
│ │ └── plugins/
│ │ ├── ArrayCwiseBinaryOps.h
│ │ ├── ArrayCwiseUnaryOps.h
│ │ ├── BlockMethods.h
│ │ ├── CommonCwiseBinaryOps.h
│ │ ├── CommonCwiseUnaryOps.h
│ │ ├── MatrixCwiseBinaryOps.h
│ │ └── MatrixCwiseUnaryOps.h
│ ├── INSTALL
│ ├── README.md
│ ├── bench/
│ │ ├── BenchSparseUtil.h
│ │ ├── BenchTimer.h
│ │ ├── BenchUtil.h
│ │ ├── README.txt
│ │ ├── analyze-blocking-sizes.cpp
│ │ ├── basicbench.cxxlist
│ │ ├── basicbenchmark.cpp
│ │ ├── basicbenchmark.h
│ │ ├── benchBlasGemm.cpp
│ │ ├── benchCholesky.cpp
│ │ ├── benchEigenSolver.cpp
│ │ ├── benchFFT.cpp
│ │ ├── benchGeometry.cpp
│ │ ├── benchVecAdd.cpp
│ │ ├── bench_gemm.cpp
│ │ ├── bench_multi_compilers.sh
│ │ ├── bench_norm.cpp
│ │ ├── bench_reverse.cpp
│ │ ├── bench_sum.cpp
│ │ ├── bench_unrolling
│ │ ├── benchmark-blocking-sizes.cpp
│ │ ├── benchmark.cpp
│ │ ├── benchmarkSlice.cpp
│ │ ├── benchmarkX.cpp
│ │ ├── benchmarkXcwise.cpp
│ │ ├── benchmark_suite
│ │ ├── btl/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── COPYING
│ │ │ ├── README
│ │ │ ├── actions/
│ │ │ │ ├── action_aat_product.hh
│ │ │ │ ├── action_ata_product.hh
│ │ │ │ ├── action_atv_product.hh
│ │ │ │ ├── action_axpby.hh
│ │ │ │ ├── action_axpy.hh
│ │ │ │ ├── action_cholesky.hh
│ │ │ │ ├── action_ger.hh
│ │ │ │ ├── action_hessenberg.hh
│ │ │ │ ├── action_lu_decomp.hh
│ │ │ │ ├── action_lu_solve.hh
│ │ │ │ ├── action_matrix_matrix_product.hh
│ │ │ │ ├── action_matrix_matrix_product_bis.hh
│ │ │ │ ├── action_matrix_vector_product.hh
│ │ │ │ ├── action_partial_lu.hh
│ │ │ │ ├── action_rot.hh
│ │ │ │ ├── action_symv.hh
│ │ │ │ ├── action_syr2.hh
│ │ │ │ ├── action_trisolve.hh
│ │ │ │ ├── action_trisolve_matrix.hh
│ │ │ │ ├── action_trmm.hh
│ │ │ │ └── basic_actions.hh
│ │ │ ├── cmake/
│ │ │ │ ├── FindACML.cmake
│ │ │ │ ├── FindATLAS.cmake
│ │ │ │ ├── FindBLAZE.cmake
│ │ │ │ ├── FindBlitz.cmake
│ │ │ │ ├── FindCBLAS.cmake
│ │ │ │ ├── FindGMM.cmake
│ │ │ │ ├── FindMKL.cmake
│ │ │ │ ├── FindMTL4.cmake
│ │ │ │ ├── FindOPENBLAS.cmake
│ │ │ │ ├── FindPackageHandleStandardArgs.cmake
│ │ │ │ ├── FindTvmet.cmake
│ │ │ │ └── MacroOptionalAddSubdirectory.cmake
│ │ │ ├── data/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── action_settings.txt
│ │ │ │ ├── gnuplot_common_settings.hh
│ │ │ │ ├── go_mean
│ │ │ │ ├── mean.cxx
│ │ │ │ ├── mk_gnuplot_script.sh
│ │ │ │ ├── mk_mean_script.sh
│ │ │ │ ├── mk_new_gnuplot.sh
│ │ │ │ ├── perlib_plot_settings.txt
│ │ │ │ ├── regularize.cxx
│ │ │ │ ├── smooth.cxx
│ │ │ │ └── smooth_all.sh
│ │ │ ├── generic_bench/
│ │ │ │ ├── bench.hh
│ │ │ │ ├── bench_parameter.hh
│ │ │ │ ├── btl.hh
│ │ │ │ ├── init/
│ │ │ │ │ ├── init_function.hh
│ │ │ │ │ ├── init_matrix.hh
│ │ │ │ │ └── init_vector.hh
│ │ │ │ ├── static/
│ │ │ │ │ ├── bench_static.hh
│ │ │ │ │ ├── intel_bench_fixed_size.hh
│ │ │ │ │ └── static_size_generator.hh
│ │ │ │ ├── timers/
│ │ │ │ │ ├── STL_perf_analyzer.hh
│ │ │ │ │ ├── STL_timer.hh
│ │ │ │ │ ├── mixed_perf_analyzer.hh
│ │ │ │ │ ├── portable_perf_analyzer.hh
│ │ │ │ │ ├── portable_perf_analyzer_old.hh
│ │ │ │ │ ├── portable_timer.hh
│ │ │ │ │ ├── x86_perf_analyzer.hh
│ │ │ │ │ └── x86_timer.hh
│ │ │ │ └── utils/
│ │ │ │ ├── size_lin_log.hh
│ │ │ │ ├── size_log.hh
│ │ │ │ ├── utilities.h
│ │ │ │ └── xy_file.hh
│ │ │ └── libs/
│ │ │ ├── BLAS/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── blas.h
│ │ │ │ ├── blas_interface.hh
│ │ │ │ ├── blas_interface_impl.hh
│ │ │ │ ├── c_interface_base.h
│ │ │ │ └── main.cpp
│ │ │ ├── STL/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── STL_interface.hh
│ │ │ │ └── main.cpp
│ │ │ ├── blaze/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── blaze_interface.hh
│ │ │ │ └── main.cpp
│ │ │ ├── blitz/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── blitz_LU_solve_interface.hh
│ │ │ │ ├── blitz_interface.hh
│ │ │ │ ├── btl_blitz.cpp
│ │ │ │ ├── btl_tiny_blitz.cpp
│ │ │ │ └── tiny_blitz_interface.hh
│ │ │ ├── eigen2/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── btl_tiny_eigen2.cpp
│ │ │ │ ├── eigen2_interface.hh
│ │ │ │ ├── main_adv.cpp
│ │ │ │ ├── main_linear.cpp
│ │ │ │ ├── main_matmat.cpp
│ │ │ │ └── main_vecmat.cpp
│ │ │ ├── eigen3/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── btl_tiny_eigen3.cpp
│ │ │ │ ├── eigen3_interface.hh
│ │ │ │ ├── main_adv.cpp
│ │ │ │ ├── main_linear.cpp
│ │ │ │ ├── main_matmat.cpp
│ │ │ │ └── main_vecmat.cpp
│ │ │ ├── gmm/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── gmm_LU_solve_interface.hh
│ │ │ │ ├── gmm_interface.hh
│ │ │ │ └── main.cpp
│ │ │ ├── mtl4/
│ │ │ │ ├── .kdbgrc.main
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── main.cpp
│ │ │ │ ├── mtl4_LU_solve_interface.hh
│ │ │ │ └── mtl4_interface.hh
│ │ │ ├── tensors/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── main_linear.cpp
│ │ │ │ ├── main_matmat.cpp
│ │ │ │ ├── main_vecmat.cpp
│ │ │ │ └── tensor_interface.hh
│ │ │ ├── tvmet/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── main.cpp
│ │ │ │ └── tvmet_interface.hh
│ │ │ └── ublas/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── main.cpp
│ │ │ └── ublas_interface.hh
│ │ ├── check_cache_queries.cpp
│ │ ├── dense_solvers.cpp
│ │ ├── eig33.cpp
│ │ ├── geometry.cpp
│ │ ├── perf_monitoring/
│ │ │ └── gemm/
│ │ │ ├── changesets.txt
│ │ │ ├── gemm.cpp
│ │ │ ├── gemm_settings.txt
│ │ │ ├── lazy_gemm.cpp
│ │ │ ├── lazy_gemm_settings.txt
│ │ │ ├── make_plot.sh
│ │ │ └── run.sh
│ │ ├── product_threshold.cpp
│ │ ├── quat_slerp.cpp
│ │ ├── quatmul.cpp
│ │ ├── sparse_cholesky.cpp
│ │ ├── sparse_dense_product.cpp
│ │ ├── sparse_lu.cpp
│ │ ├── sparse_product.cpp
│ │ ├── sparse_randomsetter.cpp
│ │ ├── sparse_setter.cpp
│ │ ├── sparse_transpose.cpp
│ │ ├── sparse_trisolver.cpp
│ │ ├── spbench/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── sp_solver.cpp
│ │ │ ├── spbench.dtd
│ │ │ ├── spbenchsolver.cpp
│ │ │ ├── spbenchsolver.h
│ │ │ ├── spbenchstyle.h
│ │ │ └── test_sparseLU.cpp
│ │ ├── spmv.cpp
│ │ ├── tensors/
│ │ │ ├── README
│ │ │ ├── benchmark.h
│ │ │ ├── benchmark_main.cc
│ │ │ ├── contraction_benchmarks_cpu.cc
│ │ │ ├── tensor_benchmarks.h
│ │ │ ├── tensor_benchmarks_cpu.cc
│ │ │ ├── tensor_benchmarks_fp16_gpu.cu
│ │ │ ├── tensor_benchmarks_gpu.cu
│ │ │ └── tensor_benchmarks_sycl.cc
│ │ └── vdw_new.cpp
│ ├── blas/
│ │ ├── BandTriangularSolver.h
│ │ ├── CMakeLists.txt
│ │ ├── GeneralRank1Update.h
│ │ ├── PackedSelfadjointProduct.h
│ │ ├── PackedTriangularMatrixVector.h
│ │ ├── PackedTriangularSolverVector.h
│ │ ├── README.txt
│ │ ├── Rank2Update.h
│ │ ├── common.h
│ │ ├── complex_double.cpp
│ │ ├── complex_single.cpp
│ │ ├── double.cpp
│ │ ├── f2c/
│ │ │ ├── chbmv.c
│ │ │ ├── chpmv.c
│ │ │ ├── complexdots.c
│ │ │ ├── ctbmv.c
│ │ │ ├── d_cnjg.c
│ │ │ ├── datatypes.h
│ │ │ ├── drotm.c
│ │ │ ├── drotmg.c
│ │ │ ├── dsbmv.c
│ │ │ ├── dspmv.c
│ │ │ ├── dtbmv.c
│ │ │ ├── lsame.c
│ │ │ ├── r_cnjg.c
│ │ │ ├── srotm.c
│ │ │ ├── srotmg.c
│ │ │ ├── ssbmv.c
│ │ │ ├── sspmv.c
│ │ │ ├── stbmv.c
│ │ │ ├── zhbmv.c
│ │ │ ├── zhpmv.c
│ │ │ └── ztbmv.c
│ │ ├── fortran/
│ │ │ └── complexdots.f
│ │ ├── level1_cplx_impl.h
│ │ ├── level1_impl.h
│ │ ├── level1_real_impl.h
│ │ ├── level2_cplx_impl.h
│ │ ├── level2_impl.h
│ │ ├── level2_real_impl.h
│ │ ├── level3_impl.h
│ │ ├── single.cpp
│ │ ├── testing/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── cblat1.f
│ │ │ ├── cblat2.f
│ │ │ ├── cblat3.f
│ │ │ ├── dblat1.f
│ │ │ ├── dblat2.f
│ │ │ ├── dblat3.f
│ │ │ ├── runblastest.sh
│ │ │ ├── sblat1.f
│ │ │ ├── sblat2.f
│ │ │ ├── sblat3.f
│ │ │ ├── zblat1.f
│ │ │ ├── zblat2.f
│ │ │ └── zblat3.f
│ │ └── xerbla.cpp
│ ├── cmake/
│ │ ├── Eigen3Config.cmake.in
│ │ ├── Eigen3ConfigLegacy.cmake.in
│ │ ├── EigenConfigureTesting.cmake
│ │ ├── EigenDetermineOSVersion.cmake
│ │ ├── EigenDetermineVSServicePack.cmake
│ │ ├── EigenTesting.cmake
│ │ ├── EigenUninstall.cmake
│ │ ├── FindAdolc.cmake
│ │ ├── FindBLAS.cmake
│ │ ├── FindBLASEXT.cmake
│ │ ├── FindCholmod.cmake
│ │ ├── FindComputeCpp.cmake
│ │ ├── FindEigen2.cmake
│ │ ├── FindEigen3.cmake
│ │ ├── FindFFTW.cmake
│ │ ├── FindGLEW.cmake
│ │ ├── FindGMP.cmake
│ │ ├── FindGSL.cmake
│ │ ├── FindGoogleHash.cmake
│ │ ├── FindHWLOC.cmake
│ │ ├── FindLAPACK.cmake
│ │ ├── FindMPFR.cmake
│ │ ├── FindMetis.cmake
│ │ ├── FindPTSCOTCH.cmake
│ │ ├── FindPastix.cmake
│ │ ├── FindSPQR.cmake
│ │ ├── FindScotch.cmake
│ │ ├── FindStandardMathLibrary.cmake
│ │ ├── FindSuperLU.cmake
│ │ ├── FindUmfpack.cmake
│ │ ├── RegexUtils.cmake
│ │ ├── UseEigen3.cmake
│ │ └── language_support.cmake
│ ├── debug/
│ │ ├── gdb/
│ │ │ ├── __init__.py
│ │ │ └── printers.py
│ │ └── msvc/
│ │ └── eigen.natvis
│ ├── demos/
│ │ ├── CMakeLists.txt
│ │ ├── mandelbrot/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── README
│ │ │ ├── mandelbrot.cpp
│ │ │ └── mandelbrot.h
│ │ ├── mix_eigen_and_c/
│ │ │ ├── README
│ │ │ ├── binary_library.cpp
│ │ │ ├── binary_library.h
│ │ │ └── example.c
│ │ └── opengl/
│ │ ├── CMakeLists.txt
│ │ ├── README
│ │ ├── camera.cpp
│ │ ├── camera.h
│ │ ├── gpuhelper.cpp
│ │ ├── gpuhelper.h
│ │ ├── icosphere.cpp
│ │ ├── icosphere.h
│ │ ├── quaternion_demo.cpp
│ │ ├── quaternion_demo.h
│ │ ├── trackball.cpp
│ │ └── trackball.h
│ ├── doc/
│ │ ├── A05_PortingFrom2To3.dox
│ │ ├── AsciiQuickReference.txt
│ │ ├── B01_Experimental.dox
│ │ ├── CMakeLists.txt
│ │ ├── ClassHierarchy.dox
│ │ ├── CoeffwiseMathFunctionsTable.dox
│ │ ├── CustomizingEigen_CustomScalar.dox
│ │ ├── CustomizingEigen_InheritingMatrix.dox
│ │ ├── CustomizingEigen_NullaryExpr.dox
│ │ ├── CustomizingEigen_Plugins.dox
│ │ ├── DenseDecompositionBenchmark.dox
│ │ ├── Doxyfile.in
│ │ ├── FixedSizeVectorizable.dox
│ │ ├── FunctionsTakingEigenTypes.dox
│ │ ├── HiPerformance.dox
│ │ ├── InplaceDecomposition.dox
│ │ ├── InsideEigenExample.dox
│ │ ├── LeastSquares.dox
│ │ ├── Manual.dox
│ │ ├── MatrixfreeSolverExample.dox
│ │ ├── NewExpressionType.dox
│ │ ├── Overview.dox
│ │ ├── PassingByValue.dox
│ │ ├── Pitfalls.dox
│ │ ├── PreprocessorDirectives.dox
│ │ ├── QuickReference.dox
│ │ ├── QuickStartGuide.dox
│ │ ├── SparseLinearSystems.dox
│ │ ├── SparseQuickReference.dox
│ │ ├── StlContainers.dox
│ │ ├── StorageOrders.dox
│ │ ├── StructHavingEigenMembers.dox
│ │ ├── TemplateKeyword.dox
│ │ ├── TopicAliasing.dox
│ │ ├── TopicAssertions.dox
│ │ ├── TopicCMakeGuide.dox
│ │ ├── TopicEigenExpressionTemplates.dox
│ │ ├── TopicLazyEvaluation.dox
│ │ ├── TopicLinearAlgebraDecompositions.dox
│ │ ├── TopicMultithreading.dox
│ │ ├── TopicResizing.dox
│ │ ├── TopicScalarTypes.dox
│ │ ├── TopicVectorization.dox
│ │ ├── TutorialAdvancedInitialization.dox
│ │ ├── TutorialArrayClass.dox
│ │ ├── TutorialBlockOperations.dox
│ │ ├── TutorialGeometry.dox
│ │ ├── TutorialLinearAlgebra.dox
│ │ ├── TutorialMapClass.dox
│ │ ├── TutorialMatrixArithmetic.dox
│ │ ├── TutorialMatrixClass.dox
│ │ ├── TutorialReductionsVisitorsBroadcasting.dox
│ │ ├── TutorialReshapeSlicing.dox
│ │ ├── TutorialSparse.dox
│ │ ├── TutorialSparse_example_details.dox
│ │ ├── UnalignedArrayAssert.dox
│ │ ├── UsingBlasLapackBackends.dox
│ │ ├── UsingIntelMKL.dox
│ │ ├── UsingNVCC.dox
│ │ ├── WrongStackAlignment.dox
│ │ ├── eigen_navtree_hacks.js
│ │ ├── eigendoxy.css
│ │ ├── eigendoxy_footer.html.in
│ │ ├── eigendoxy_header.html.in
│ │ ├── eigendoxy_layout.xml.in
│ │ ├── eigendoxy_tabs.css
│ │ ├── examples/
│ │ │ ├── .krazy
│ │ │ ├── CMakeLists.txt
│ │ │ ├── CustomizingEigen_Inheritance.cpp
│ │ │ ├── Cwise_erf.cpp
│ │ │ ├── Cwise_erfc.cpp
│ │ │ ├── Cwise_lgamma.cpp
│ │ │ ├── DenseBase_middleCols_int.cpp
│ │ │ ├── DenseBase_middleRows_int.cpp
│ │ │ ├── DenseBase_template_int_middleCols.cpp
│ │ │ ├── DenseBase_template_int_middleRows.cpp
│ │ │ ├── QuickStart_example.cpp
│ │ │ ├── QuickStart_example2_dynamic.cpp
│ │ │ ├── QuickStart_example2_fixed.cpp
│ │ │ ├── TemplateKeyword_flexible.cpp
│ │ │ ├── TemplateKeyword_simple.cpp
│ │ │ ├── TutorialInplaceLU.cpp
│ │ │ ├── TutorialLinAlgComputeTwice.cpp
│ │ │ ├── TutorialLinAlgExComputeSolveError.cpp
│ │ │ ├── TutorialLinAlgExSolveColPivHouseholderQR.cpp
│ │ │ ├── TutorialLinAlgExSolveLDLT.cpp
│ │ │ ├── TutorialLinAlgInverseDeterminant.cpp
│ │ │ ├── TutorialLinAlgRankRevealing.cpp
│ │ │ ├── TutorialLinAlgSVDSolve.cpp
│ │ │ ├── TutorialLinAlgSelfAdjointEigenSolver.cpp
│ │ │ ├── TutorialLinAlgSetThreshold.cpp
│ │ │ ├── Tutorial_ArrayClass_accessors.cpp
│ │ │ ├── Tutorial_ArrayClass_addition.cpp
│ │ │ ├── Tutorial_ArrayClass_cwise_other.cpp
│ │ │ ├── Tutorial_ArrayClass_interop.cpp
│ │ │ ├── Tutorial_ArrayClass_interop_matrix.cpp
│ │ │ ├── Tutorial_ArrayClass_mult.cpp
│ │ │ ├── Tutorial_BlockOperations_block_assignment.cpp
│ │ │ ├── Tutorial_BlockOperations_colrow.cpp
│ │ │ ├── Tutorial_BlockOperations_corner.cpp
│ │ │ ├── Tutorial_BlockOperations_print_block.cpp
│ │ │ ├── Tutorial_BlockOperations_vector.cpp
│ │ │ ├── Tutorial_PartialLU_solve.cpp
│ │ │ ├── Tutorial_ReductionsVisitorsBroadcasting_broadcast_1nn.cpp
│ │ │ ├── Tutorial_ReductionsVisitorsBroadcasting_broadcast_simple.cpp
│ │ │ ├── Tutorial_ReductionsVisitorsBroadcasting_broadcast_simple_rowwise.cpp
│ │ │ ├── Tutorial_ReductionsVisitorsBroadcasting_colwise.cpp
│ │ │ ├── Tutorial_ReductionsVisitorsBroadcasting_maxnorm.cpp
│ │ │ ├── Tutorial_ReductionsVisitorsBroadcasting_reductions_bool.cpp
│ │ │ ├── Tutorial_ReductionsVisitorsBroadcasting_reductions_norm.cpp
│ │ │ ├── Tutorial_ReductionsVisitorsBroadcasting_reductions_operatornorm.cpp
│ │ │ ├── Tutorial_ReductionsVisitorsBroadcasting_rowwise.cpp
│ │ │ ├── Tutorial_ReductionsVisitorsBroadcasting_visitors.cpp
│ │ │ ├── Tutorial_simple_example_dynamic_size.cpp
│ │ │ ├── Tutorial_simple_example_fixed_size.cpp
│ │ │ ├── class_Block.cpp
│ │ │ ├── class_CwiseBinaryOp.cpp
│ │ │ ├── class_CwiseUnaryOp.cpp
│ │ │ ├── class_CwiseUnaryOp_ptrfun.cpp
│ │ │ ├── class_FixedBlock.cpp
│ │ │ ├── class_FixedVectorBlock.cpp
│ │ │ ├── class_VectorBlock.cpp
│ │ │ ├── function_taking_eigenbase.cpp
│ │ │ ├── function_taking_ref.cpp
│ │ │ ├── make_circulant.cpp
│ │ │ ├── make_circulant.cpp.entry
│ │ │ ├── make_circulant.cpp.evaluator
│ │ │ ├── make_circulant.cpp.expression
│ │ │ ├── make_circulant.cpp.main
│ │ │ ├── make_circulant.cpp.preamble
│ │ │ ├── make_circulant.cpp.traits
│ │ │ ├── make_circulant2.cpp
│ │ │ ├── matrixfree_cg.cpp
│ │ │ ├── nullary_indexing.cpp
│ │ │ ├── tut_arithmetic_add_sub.cpp
│ │ │ ├── tut_arithmetic_dot_cross.cpp
│ │ │ ├── tut_arithmetic_matrix_mul.cpp
│ │ │ ├── tut_arithmetic_redux_basic.cpp
│ │ │ ├── tut_arithmetic_scalar_mul_div.cpp
│ │ │ ├── tut_matrix_coefficient_accessors.cpp
│ │ │ ├── tut_matrix_resize.cpp
│ │ │ └── tut_matrix_resize_fixed_size.cpp
│ │ ├── snippets/
│ │ │ ├── .krazy
│ │ │ ├── AngleAxis_mimic_euler.cpp
│ │ │ ├── BiCGSTAB_simple.cpp
│ │ │ ├── BiCGSTAB_step_by_step.cpp
│ │ │ ├── CMakeLists.txt
│ │ │ ├── ColPivHouseholderQR_solve.cpp
│ │ │ ├── ComplexEigenSolver_compute.cpp
│ │ │ ├── ComplexEigenSolver_eigenvalues.cpp
│ │ │ ├── ComplexEigenSolver_eigenvectors.cpp
│ │ │ ├── ComplexSchur_compute.cpp
│ │ │ ├── ComplexSchur_matrixT.cpp
│ │ │ ├── ComplexSchur_matrixU.cpp
│ │ │ ├── Cwise_abs.cpp
│ │ │ ├── Cwise_abs2.cpp
│ │ │ ├── Cwise_acos.cpp
│ │ │ ├── Cwise_arg.cpp
│ │ │ ├── Cwise_array_power_array.cpp
│ │ │ ├── Cwise_asin.cpp
│ │ │ ├── Cwise_atan.cpp
│ │ │ ├── Cwise_boolean_and.cpp
│ │ │ ├── Cwise_boolean_not.cpp
│ │ │ ├── Cwise_boolean_or.cpp
│ │ │ ├── Cwise_boolean_xor.cpp
│ │ │ ├── Cwise_ceil.cpp
│ │ │ ├── Cwise_cos.cpp
│ │ │ ├── Cwise_cosh.cpp
│ │ │ ├── Cwise_cube.cpp
│ │ │ ├── Cwise_equal_equal.cpp
│ │ │ ├── Cwise_exp.cpp
│ │ │ ├── Cwise_floor.cpp
│ │ │ ├── Cwise_greater.cpp
│ │ │ ├── Cwise_greater_equal.cpp
│ │ │ ├── Cwise_inverse.cpp
│ │ │ ├── Cwise_isFinite.cpp
│ │ │ ├── Cwise_isInf.cpp
│ │ │ ├── Cwise_isNaN.cpp
│ │ │ ├── Cwise_less.cpp
│ │ │ ├── Cwise_less_equal.cpp
│ │ │ ├── Cwise_log.cpp
│ │ │ ├── Cwise_log10.cpp
│ │ │ ├── Cwise_max.cpp
│ │ │ ├── Cwise_min.cpp
│ │ │ ├── Cwise_minus.cpp
│ │ │ ├── Cwise_minus_equal.cpp
│ │ │ ├── Cwise_not_equal.cpp
│ │ │ ├── Cwise_plus.cpp
│ │ │ ├── Cwise_plus_equal.cpp
│ │ │ ├── Cwise_pow.cpp
│ │ │ ├── Cwise_product.cpp
│ │ │ ├── Cwise_quotient.cpp
│ │ │ ├── Cwise_round.cpp
│ │ │ ├── Cwise_scalar_power_array.cpp
│ │ │ ├── Cwise_sign.cpp
│ │ │ ├── Cwise_sin.cpp
│ │ │ ├── Cwise_sinh.cpp
│ │ │ ├── Cwise_slash_equal.cpp
│ │ │ ├── Cwise_sqrt.cpp
│ │ │ ├── Cwise_square.cpp
│ │ │ ├── Cwise_tan.cpp
│ │ │ ├── Cwise_tanh.cpp
│ │ │ ├── Cwise_times_equal.cpp
│ │ │ ├── DenseBase_LinSpaced.cpp
│ │ │ ├── DenseBase_LinSpacedInt.cpp
│ │ │ ├── DenseBase_LinSpaced_seq.cpp
│ │ │ ├── DenseBase_setLinSpaced.cpp
│ │ │ ├── DirectionWise_hnormalized.cpp
│ │ │ ├── DirectionWise_replicate.cpp
│ │ │ ├── DirectionWise_replicate_int.cpp
│ │ │ ├── EigenSolver_EigenSolver_MatrixType.cpp
│ │ │ ├── EigenSolver_compute.cpp
│ │ │ ├── EigenSolver_eigenvalues.cpp
│ │ │ ├── EigenSolver_eigenvectors.cpp
│ │ │ ├── EigenSolver_pseudoEigenvectors.cpp
│ │ │ ├── FullPivHouseholderQR_solve.cpp
│ │ │ ├── FullPivLU_image.cpp
│ │ │ ├── FullPivLU_kernel.cpp
│ │ │ ├── FullPivLU_solve.cpp
│ │ │ ├── GeneralizedEigenSolver.cpp
│ │ │ ├── HessenbergDecomposition_compute.cpp
│ │ │ ├── HessenbergDecomposition_matrixH.cpp
│ │ │ ├── HessenbergDecomposition_packedMatrix.cpp
│ │ │ ├── HouseholderQR_householderQ.cpp
│ │ │ ├── HouseholderQR_solve.cpp
│ │ │ ├── HouseholderSequence_HouseholderSequence.cpp
│ │ │ ├── IOFormat.cpp
│ │ │ ├── JacobiSVD_basic.cpp
│ │ │ ├── Jacobi_makeGivens.cpp
│ │ │ ├── Jacobi_makeJacobi.cpp
│ │ │ ├── LLT_example.cpp
│ │ │ ├── LLT_solve.cpp
│ │ │ ├── LeastSquaresNormalEquations.cpp
│ │ │ ├── LeastSquaresQR.cpp
│ │ │ ├── Map_general_stride.cpp
│ │ │ ├── Map_inner_stride.cpp
│ │ │ ├── Map_outer_stride.cpp
│ │ │ ├── Map_placement_new.cpp
│ │ │ ├── Map_simple.cpp
│ │ │ ├── MatrixBase_adjoint.cpp
│ │ │ ├── MatrixBase_all.cpp
│ │ │ ├── MatrixBase_applyOnTheLeft.cpp
│ │ │ ├── MatrixBase_applyOnTheRight.cpp
│ │ │ ├── MatrixBase_array.cpp
│ │ │ ├── MatrixBase_array_const.cpp
│ │ │ ├── MatrixBase_asDiagonal.cpp
│ │ │ ├── MatrixBase_block_int_int.cpp
│ │ │ ├── MatrixBase_block_int_int_int_int.cpp
│ │ │ ├── MatrixBase_bottomLeftCorner_int_int.cpp
│ │ │ ├── MatrixBase_bottomRightCorner_int_int.cpp
│ │ │ ├── MatrixBase_bottomRows_int.cpp
│ │ │ ├── MatrixBase_cast.cpp
│ │ │ ├── MatrixBase_col.cpp
│ │ │ ├── MatrixBase_colwise.cpp
│ │ │ ├── MatrixBase_computeInverseAndDetWithCheck.cpp
│ │ │ ├── MatrixBase_computeInverseWithCheck.cpp
│ │ │ ├── MatrixBase_cwiseAbs.cpp
│ │ │ ├── MatrixBase_cwiseAbs2.cpp
│ │ │ ├── MatrixBase_cwiseEqual.cpp
│ │ │ ├── MatrixBase_cwiseInverse.cpp
│ │ │ ├── MatrixBase_cwiseMax.cpp
│ │ │ ├── MatrixBase_cwiseMin.cpp
│ │ │ ├── MatrixBase_cwiseNotEqual.cpp
│ │ │ ├── MatrixBase_cwiseProduct.cpp
│ │ │ ├── MatrixBase_cwiseQuotient.cpp
│ │ │ ├── MatrixBase_cwiseSign.cpp
│ │ │ ├── MatrixBase_cwiseSqrt.cpp
│ │ │ ├── MatrixBase_diagonal.cpp
│ │ │ ├── MatrixBase_diagonal_int.cpp
│ │ │ ├── MatrixBase_diagonal_template_int.cpp
│ │ │ ├── MatrixBase_eigenvalues.cpp
│ │ │ ├── MatrixBase_end_int.cpp
│ │ │ ├── MatrixBase_eval.cpp
│ │ │ ├── MatrixBase_fixedBlock_int_int.cpp
│ │ │ ├── MatrixBase_hnormalized.cpp
│ │ │ ├── MatrixBase_homogeneous.cpp
│ │ │ ├── MatrixBase_identity.cpp
│ │ │ ├── MatrixBase_identity_int_int.cpp
│ │ │ ├── MatrixBase_inverse.cpp
│ │ │ ├── MatrixBase_isDiagonal.cpp
│ │ │ ├── MatrixBase_isIdentity.cpp
│ │ │ ├── MatrixBase_isOnes.cpp
│ │ │ ├── MatrixBase_isOrthogonal.cpp
│ │ │ ├── MatrixBase_isUnitary.cpp
│ │ │ ├── MatrixBase_isZero.cpp
│ │ │ ├── MatrixBase_leftCols_int.cpp
│ │ │ ├── MatrixBase_noalias.cpp
│ │ │ ├── MatrixBase_ones.cpp
│ │ │ ├── MatrixBase_ones_int.cpp
│ │ │ ├── MatrixBase_ones_int_int.cpp
│ │ │ ├── MatrixBase_operatorNorm.cpp
│ │ │ ├── MatrixBase_prod.cpp
│ │ │ ├── MatrixBase_random.cpp
│ │ │ ├── MatrixBase_random_int.cpp
│ │ │ ├── MatrixBase_random_int_int.cpp
│ │ │ ├── MatrixBase_replicate.cpp
│ │ │ ├── MatrixBase_replicate_int_int.cpp
│ │ │ ├── MatrixBase_reverse.cpp
│ │ │ ├── MatrixBase_rightCols_int.cpp
│ │ │ ├── MatrixBase_row.cpp
│ │ │ ├── MatrixBase_rowwise.cpp
│ │ │ ├── MatrixBase_segment_int_int.cpp
│ │ │ ├── MatrixBase_select.cpp
│ │ │ ├── MatrixBase_selfadjointView.cpp
│ │ │ ├── MatrixBase_set.cpp
│ │ │ ├── MatrixBase_setIdentity.cpp
│ │ │ ├── MatrixBase_setOnes.cpp
│ │ │ ├── MatrixBase_setRandom.cpp
│ │ │ ├── MatrixBase_setZero.cpp
│ │ │ ├── MatrixBase_start_int.cpp
│ │ │ ├── MatrixBase_template_int_bottomRows.cpp
│ │ │ ├── MatrixBase_template_int_end.cpp
│ │ │ ├── MatrixBase_template_int_int_block_int_int_int_int.cpp
│ │ │ ├── MatrixBase_template_int_int_bottomLeftCorner.cpp
│ │ │ ├── MatrixBase_template_int_int_bottomLeftCorner_int_int.cpp
│ │ │ ├── MatrixBase_template_int_int_bottomRightCorner.cpp
│ │ │ ├── MatrixBase_template_int_int_bottomRightCorner_int_int.cpp
│ │ │ ├── MatrixBase_template_int_int_topLeftCorner.cpp
│ │ │ ├── MatrixBase_template_int_int_topLeftCorner_int_int.cpp
│ │ │ ├── MatrixBase_template_int_int_topRightCorner.cpp
│ │ │ ├── MatrixBase_template_int_int_topRightCorner_int_int.cpp
│ │ │ ├── MatrixBase_template_int_leftCols.cpp
│ │ │ ├── MatrixBase_template_int_rightCols.cpp
│ │ │ ├── MatrixBase_template_int_segment.cpp
│ │ │ ├── MatrixBase_template_int_start.cpp
│ │ │ ├── MatrixBase_template_int_topRows.cpp
│ │ │ ├── MatrixBase_topLeftCorner_int_int.cpp
│ │ │ ├── MatrixBase_topRightCorner_int_int.cpp
│ │ │ ├── MatrixBase_topRows_int.cpp
│ │ │ ├── MatrixBase_transpose.cpp
│ │ │ ├── MatrixBase_triangularView.cpp
│ │ │ ├── MatrixBase_zero.cpp
│ │ │ ├── MatrixBase_zero_int.cpp
│ │ │ ├── MatrixBase_zero_int_int.cpp
│ │ │ ├── Matrix_Map_stride.cpp
│ │ │ ├── Matrix_resize_NoChange_int.cpp
│ │ │ ├── Matrix_resize_int.cpp
│ │ │ ├── Matrix_resize_int_NoChange.cpp
│ │ │ ├── Matrix_resize_int_int.cpp
│ │ │ ├── Matrix_setConstant_int.cpp
│ │ │ ├── Matrix_setConstant_int_int.cpp
│ │ │ ├── Matrix_setIdentity_int_int.cpp
│ │ │ ├── Matrix_setOnes_int.cpp
│ │ │ ├── Matrix_setOnes_int_int.cpp
│ │ │ ├── Matrix_setRandom_int.cpp
│ │ │ ├── Matrix_setRandom_int_int.cpp
│ │ │ ├── Matrix_setZero_int.cpp
│ │ │ ├── Matrix_setZero_int_int.cpp
│ │ │ ├── PartialPivLU_solve.cpp
│ │ │ ├── PartialRedux_count.cpp
│ │ │ ├── PartialRedux_maxCoeff.cpp
│ │ │ ├── PartialRedux_minCoeff.cpp
│ │ │ ├── PartialRedux_norm.cpp
│ │ │ ├── PartialRedux_prod.cpp
│ │ │ ├── PartialRedux_squaredNorm.cpp
│ │ │ ├── PartialRedux_sum.cpp
│ │ │ ├── RealQZ_compute.cpp
│ │ │ ├── RealSchur_RealSchur_MatrixType.cpp
│ │ │ ├── RealSchur_compute.cpp
│ │ │ ├── SelfAdjointEigenSolver_SelfAdjointEigenSolver.cpp
│ │ │ ├── SelfAdjointEigenSolver_SelfAdjointEigenSolver_MatrixType.cpp
│ │ │ ├── SelfAdjointEigenSolver_SelfAdjointEigenSolver_MatrixType2.cpp
│ │ │ ├── SelfAdjointEigenSolver_compute_MatrixType.cpp
│ │ │ ├── SelfAdjointEigenSolver_compute_MatrixType2.cpp
│ │ │ ├── SelfAdjointEigenSolver_eigenvalues.cpp
│ │ │ ├── SelfAdjointEigenSolver_eigenvectors.cpp
│ │ │ ├── SelfAdjointEigenSolver_operatorInverseSqrt.cpp
│ │ │ ├── SelfAdjointEigenSolver_operatorSqrt.cpp
│ │ │ ├── SelfAdjointView_eigenvalues.cpp
│ │ │ ├── SelfAdjointView_operatorNorm.cpp
│ │ │ ├── SparseMatrix_coeffs.cpp
│ │ │ ├── TopicAliasing_block.cpp
│ │ │ ├── TopicAliasing_block_correct.cpp
│ │ │ ├── TopicAliasing_cwise.cpp
│ │ │ ├── TopicAliasing_mult1.cpp
│ │ │ ├── TopicAliasing_mult2.cpp
│ │ │ ├── TopicAliasing_mult3.cpp
│ │ │ ├── TopicAliasing_mult4.cpp
│ │ │ ├── TopicAliasing_mult5.cpp
│ │ │ ├── TopicStorageOrders_example.cpp
│ │ │ ├── Triangular_solve.cpp
│ │ │ ├── Tridiagonalization_Tridiagonalization_MatrixType.cpp
│ │ │ ├── Tridiagonalization_compute.cpp
│ │ │ ├── Tridiagonalization_decomposeInPlace.cpp
│ │ │ ├── Tridiagonalization_diagonal.cpp
│ │ │ ├── Tridiagonalization_householderCoefficients.cpp
│ │ │ ├── Tridiagonalization_packedMatrix.cpp
│ │ │ ├── Tutorial_AdvancedInitialization_Block.cpp
│ │ │ ├── Tutorial_AdvancedInitialization_CommaTemporary.cpp
│ │ │ ├── Tutorial_AdvancedInitialization_Join.cpp
│ │ │ ├── Tutorial_AdvancedInitialization_LinSpaced.cpp
│ │ │ ├── Tutorial_AdvancedInitialization_ThreeWays.cpp
│ │ │ ├── Tutorial_AdvancedInitialization_Zero.cpp
│ │ │ ├── Tutorial_Map_rowmajor.cpp
│ │ │ ├── Tutorial_Map_using.cpp
│ │ │ ├── Tutorial_ReshapeMat2Mat.cpp
│ │ │ ├── Tutorial_ReshapeMat2Vec.cpp
│ │ │ ├── Tutorial_SlicingCol.cpp
│ │ │ ├── Tutorial_SlicingVec.cpp
│ │ │ ├── Tutorial_commainit_01.cpp
│ │ │ ├── Tutorial_commainit_01b.cpp
│ │ │ ├── Tutorial_commainit_02.cpp
│ │ │ ├── Tutorial_solve_matrix_inverse.cpp
│ │ │ ├── Tutorial_solve_multiple_rhs.cpp
│ │ │ ├── Tutorial_solve_reuse_decomposition.cpp
│ │ │ ├── Tutorial_solve_singular.cpp
│ │ │ ├── Tutorial_solve_triangular.cpp
│ │ │ ├── Tutorial_solve_triangular_inplace.cpp
│ │ │ ├── VectorwiseOp_homogeneous.cpp
│ │ │ ├── Vectorwise_reverse.cpp
│ │ │ ├── class_FullPivLU.cpp
│ │ │ ├── compile_snippet.cpp.in
│ │ │ ├── tut_arithmetic_redux_minmax.cpp
│ │ │ ├── tut_arithmetic_transpose_aliasing.cpp
│ │ │ ├── tut_arithmetic_transpose_conjugate.cpp
│ │ │ ├── tut_arithmetic_transpose_inplace.cpp
│ │ │ └── tut_matrix_assignment_resizing.cpp
│ │ ├── special_examples/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── Tutorial_sparse_example.cpp
│ │ │ ├── Tutorial_sparse_example_details.cpp
│ │ │ └── random_cpp11.cpp
│ │ └── tutorial.cpp
│ ├── eigen3.pc.in
│ ├── failtest/
│ │ ├── CMakeLists.txt
│ │ ├── bdcsvd_int.cpp
│ │ ├── block_nonconst_ctor_on_const_xpr_0.cpp
│ │ ├── block_nonconst_ctor_on_const_xpr_1.cpp
│ │ ├── block_nonconst_ctor_on_const_xpr_2.cpp
│ │ ├── block_on_const_type_actually_const_0.cpp
│ │ ├── block_on_const_type_actually_const_1.cpp
│ │ ├── colpivqr_int.cpp
│ │ ├── const_qualified_block_method_retval_0.cpp
│ │ ├── const_qualified_block_method_retval_1.cpp
│ │ ├── const_qualified_diagonal_method_retval.cpp
│ │ ├── const_qualified_transpose_method_retval.cpp
│ │ ├── cwiseunaryview_nonconst_ctor_on_const_xpr.cpp
│ │ ├── cwiseunaryview_on_const_type_actually_const.cpp
│ │ ├── diagonal_nonconst_ctor_on_const_xpr.cpp
│ │ ├── diagonal_on_const_type_actually_const.cpp
│ │ ├── eigensolver_cplx.cpp
│ │ ├── eigensolver_int.cpp
│ │ ├── failtest_sanity_check.cpp
│ │ ├── fullpivlu_int.cpp
│ │ ├── fullpivqr_int.cpp
│ │ ├── jacobisvd_int.cpp
│ │ ├── ldlt_int.cpp
│ │ ├── llt_int.cpp
│ │ ├── map_nonconst_ctor_on_const_ptr_0.cpp
│ │ ├── map_nonconst_ctor_on_const_ptr_1.cpp
│ │ ├── map_nonconst_ctor_on_const_ptr_2.cpp
│ │ ├── map_nonconst_ctor_on_const_ptr_3.cpp
│ │ ├── map_nonconst_ctor_on_const_ptr_4.cpp
│ │ ├── map_on_const_type_actually_const_0.cpp
│ │ ├── map_on_const_type_actually_const_1.cpp
│ │ ├── partialpivlu_int.cpp
│ │ ├── qr_int.cpp
│ │ ├── ref_1.cpp
│ │ ├── ref_2.cpp
│ │ ├── ref_3.cpp
│ │ ├── ref_4.cpp
│ │ ├── ref_5.cpp
│ │ ├── selfadjointview_nonconst_ctor_on_const_xpr.cpp
│ │ ├── selfadjointview_on_const_type_actually_const.cpp
│ │ ├── sparse_ref_1.cpp
│ │ ├── sparse_ref_2.cpp
│ │ ├── sparse_ref_3.cpp
│ │ ├── sparse_ref_4.cpp
│ │ ├── sparse_ref_5.cpp
│ │ ├── sparse_storage_mismatch.cpp
│ │ ├── swap_1.cpp
│ │ ├── swap_2.cpp
│ │ ├── ternary_1.cpp
│ │ ├── ternary_2.cpp
│ │ ├── transpose_nonconst_ctor_on_const_xpr.cpp
│ │ ├── transpose_on_const_type_actually_const.cpp
│ │ ├── triangularview_nonconst_ctor_on_const_xpr.cpp
│ │ └── triangularview_on_const_type_actually_const.cpp
│ ├── lapack/
│ │ ├── CMakeLists.txt
│ │ ├── cholesky.cpp
│ │ ├── clacgv.f
│ │ ├── cladiv.f
│ │ ├── clarf.f
│ │ ├── clarfb.f
│ │ ├── clarfg.f
│ │ ├── clarft.f
│ │ ├── complex_double.cpp
│ │ ├── complex_single.cpp
│ │ ├── dladiv.f
│ │ ├── dlamch.f
│ │ ├── dlapy2.f
│ │ ├── dlapy3.f
│ │ ├── dlarf.f
│ │ ├── dlarfb.f
│ │ ├── dlarfg.f
│ │ ├── dlarft.f
│ │ ├── double.cpp
│ │ ├── dsecnd_NONE.f
│ │ ├── eigenvalues.cpp
│ │ ├── ilaclc.f
│ │ ├── ilaclr.f
│ │ ├── iladlc.f
│ │ ├── iladlr.f
│ │ ├── ilaslc.f
│ │ ├── ilaslr.f
│ │ ├── ilazlc.f
│ │ ├── ilazlr.f
│ │ ├── lapack_common.h
│ │ ├── lu.cpp
│ │ ├── second_NONE.f
│ │ ├── single.cpp
│ │ ├── sladiv.f
│ │ ├── slamch.f
│ │ ├── slapy2.f
│ │ ├── slapy3.f
│ │ ├── slarf.f
│ │ ├── slarfb.f
│ │ ├── slarfg.f
│ │ ├── slarft.f
│ │ ├── svd.cpp
│ │ ├── zlacgv.f
│ │ ├── zladiv.f
│ │ ├── zlarf.f
│ │ ├── zlarfb.f
│ │ ├── zlarfg.f
│ │ └── zlarft.f
│ ├── scripts/
│ │ ├── CMakeLists.txt
│ │ ├── buildtests.in
│ │ ├── cdashtesting.cmake.in
│ │ ├── check.in
│ │ ├── debug.in
│ │ ├── eigen_gen_credits.cpp
│ │ ├── eigen_gen_docs
│ │ ├── release.in
│ │ └── relicense.py
│ ├── signature_of_eigen3_matrix_library
│ ├── test/
│ │ ├── CMakeLists.txt
│ │ ├── adjoint.cpp
│ │ ├── array.cpp
│ │ ├── array_for_matrix.cpp
│ │ ├── array_of_string.cpp
│ │ ├── array_replicate.cpp
│ │ ├── array_reverse.cpp
│ │ ├── bandmatrix.cpp
│ │ ├── basicstuff.cpp
│ │ ├── bdcsvd.cpp
│ │ ├── bicgstab.cpp
│ │ ├── block.cpp
│ │ ├── boostmultiprec.cpp
│ │ ├── bug1213.cpp
│ │ ├── bug1213.h
│ │ ├── bug1213_main.cpp
│ │ ├── cholesky.cpp
│ │ ├── cholmod_support.cpp
│ │ ├── commainitializer.cpp
│ │ ├── conjugate_gradient.cpp
│ │ ├── conservative_resize.cpp
│ │ ├── constructor.cpp
│ │ ├── corners.cpp
│ │ ├── ctorleak.cpp
│ │ ├── cuda_basic.cu
│ │ ├── cuda_common.h
│ │ ├── denseLM.cpp
│ │ ├── dense_storage.cpp
│ │ ├── determinant.cpp
│ │ ├── diagonal.cpp
│ │ ├── diagonalmatrices.cpp
│ │ ├── dontalign.cpp
│ │ ├── dynalloc.cpp
│ │ ├── eigen2support.cpp
│ │ ├── eigensolver_complex.cpp
│ │ ├── eigensolver_generalized_real.cpp
│ │ ├── eigensolver_generic.cpp
│ │ ├── eigensolver_selfadjoint.cpp
│ │ ├── evaluator_common.h
│ │ ├── evaluators.cpp
│ │ ├── exceptions.cpp
│ │ ├── fastmath.cpp
│ │ ├── first_aligned.cpp
│ │ ├── geo_alignedbox.cpp
│ │ ├── geo_eulerangles.cpp
│ │ ├── geo_homogeneous.cpp
│ │ ├── geo_hyperplane.cpp
│ │ ├── geo_orthomethods.cpp
│ │ ├── geo_parametrizedline.cpp
│ │ ├── geo_quaternion.cpp
│ │ ├── geo_transformations.cpp
│ │ ├── half_float.cpp
│ │ ├── hessenberg.cpp
│ │ ├── householder.cpp
│ │ ├── incomplete_cholesky.cpp
│ │ ├── inplace_decomposition.cpp
│ │ ├── integer_types.cpp
│ │ ├── inverse.cpp
│ │ ├── is_same_dense.cpp
│ │ ├── jacobi.cpp
│ │ ├── jacobisvd.cpp
│ │ ├── linearstructure.cpp
│ │ ├── lscg.cpp
│ │ ├── lu.cpp
│ │ ├── main.h
│ │ ├── mapped_matrix.cpp
│ │ ├── mapstaticmethods.cpp
│ │ ├── mapstride.cpp
│ │ ├── meta.cpp
│ │ ├── metis_support.cpp
│ │ ├── miscmatrices.cpp
│ │ ├── mixingtypes.cpp
│ │ ├── mpl2only.cpp
│ │ ├── nesting_ops.cpp
│ │ ├── nomalloc.cpp
│ │ ├── nullary.cpp
│ │ ├── numext.cpp
│ │ ├── packetmath.cpp
│ │ ├── pardiso_support.cpp
│ │ ├── pastix_support.cpp
│ │ ├── permutationmatrices.cpp
│ │ ├── prec_inverse_4x4.cpp
│ │ ├── product.h
│ │ ├── product_extra.cpp
│ │ ├── product_large.cpp
│ │ ├── product_mmtr.cpp
│ │ ├── product_notemporary.cpp
│ │ ├── product_selfadjoint.cpp
│ │ ├── product_small.cpp
│ │ ├── product_symm.cpp
│ │ ├── product_syrk.cpp
│ │ ├── product_trmm.cpp
│ │ ├── product_trmv.cpp
│ │ ├── product_trsolve.cpp
│ │ ├── qr.cpp
│ │ ├── qr_colpivoting.cpp
│ │ ├── qr_fullpivoting.cpp
│ │ ├── qtvector.cpp
│ │ ├── rand.cpp
│ │ ├── real_qz.cpp
│ │ ├── redux.cpp
│ │ ├── ref.cpp
│ │ ├── resize.cpp
│ │ ├── rvalue_types.cpp
│ │ ├── schur_complex.cpp
│ │ ├── schur_real.cpp
│ │ ├── selfadjoint.cpp
│ │ ├── simplicial_cholesky.cpp
│ │ ├── sizeof.cpp
│ │ ├── sizeoverflow.cpp
│ │ ├── smallvectors.cpp
│ │ ├── sparse.h
│ │ ├── sparseLM.cpp
│ │ ├── sparse_basic.cpp
│ │ ├── sparse_block.cpp
│ │ ├── sparse_permutations.cpp
│ │ ├── sparse_product.cpp
│ │ ├── sparse_ref.cpp
│ │ ├── sparse_solver.h
│ │ ├── sparse_solvers.cpp
│ │ ├── sparse_vector.cpp
│ │ ├── sparselu.cpp
│ │ ├── sparseqr.cpp
│ │ ├── special_numbers.cpp
│ │ ├── spqr_support.cpp
│ │ ├── stable_norm.cpp
│ │ ├── stddeque.cpp
│ │ ├── stddeque_overload.cpp
│ │ ├── stdlist.cpp
│ │ ├── stdlist_overload.cpp
│ │ ├── stdvector.cpp
│ │ ├── stdvector_overload.cpp
│ │ ├── superlu_support.cpp
│ │ ├── svd_common.h
│ │ ├── svd_fill.h
│ │ ├── swap.cpp
│ │ ├── triangular.cpp
│ │ ├── umeyama.cpp
│ │ ├── umfpack_support.cpp
│ │ ├── unalignedassert.cpp
│ │ ├── unalignedcount.cpp
│ │ ├── upperbidiagonalization.cpp
│ │ ├── vectorization_logic.cpp
│ │ ├── vectorwiseop.cpp
│ │ ├── visitor.cpp
│ │ └── zerosized.cpp
│ └── unsupported/
│ ├── CMakeLists.txt
│ ├── Eigen/
│ │ ├── AdolcForward
│ │ ├── AlignedVector3
│ │ ├── ArpackSupport
│ │ ├── AutoDiff
│ │ ├── BVH
│ │ ├── CMakeLists.txt
│ │ ├── CXX11/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── Tensor
│ │ │ ├── TensorSymmetry
│ │ │ ├── ThreadPool
│ │ │ └── src/
│ │ │ ├── Tensor/
│ │ │ │ ├── README.md
│ │ │ │ ├── Tensor.h
│ │ │ │ ├── TensorArgMax.h
│ │ │ │ ├── TensorAssign.h
│ │ │ │ ├── TensorBase.h
│ │ │ │ ├── TensorBroadcasting.h
│ │ │ │ ├── TensorChipping.h
│ │ │ │ ├── TensorConcatenation.h
│ │ │ │ ├── TensorContraction.h
│ │ │ │ ├── TensorContractionBlocking.h
│ │ │ │ ├── TensorContractionCuda.h
│ │ │ │ ├── TensorContractionMapper.h
│ │ │ │ ├── TensorContractionThreadPool.h
│ │ │ │ ├── TensorConversion.h
│ │ │ │ ├── TensorConvolution.h
│ │ │ │ ├── TensorCostModel.h
│ │ │ │ ├── TensorCustomOp.h
│ │ │ │ ├── TensorDevice.h
│ │ │ │ ├── TensorDeviceCuda.h
│ │ │ │ ├── TensorDeviceDefault.h
│ │ │ │ ├── TensorDeviceSycl.h
│ │ │ │ ├── TensorDeviceThreadPool.h
│ │ │ │ ├── TensorDimensionList.h
│ │ │ │ ├── TensorDimensions.h
│ │ │ │ ├── TensorEvalTo.h
│ │ │ │ ├── TensorEvaluator.h
│ │ │ │ ├── TensorExecutor.h
│ │ │ │ ├── TensorExpr.h
│ │ │ │ ├── TensorFFT.h
│ │ │ │ ├── TensorFixedSize.h
│ │ │ │ ├── TensorForcedEval.h
│ │ │ │ ├── TensorForwardDeclarations.h
│ │ │ │ ├── TensorFunctors.h
│ │ │ │ ├── TensorGenerator.h
│ │ │ │ ├── TensorGlobalFunctions.h
│ │ │ │ ├── TensorIO.h
│ │ │ │ ├── TensorImagePatch.h
│ │ │ │ ├── TensorIndexList.h
│ │ │ │ ├── TensorInflation.h
│ │ │ │ ├── TensorInitializer.h
│ │ │ │ ├── TensorIntDiv.h
│ │ │ │ ├── TensorLayoutSwap.h
│ │ │ │ ├── TensorMacros.h
│ │ │ │ ├── TensorMap.h
│ │ │ │ ├── TensorMeta.h
│ │ │ │ ├── TensorMorphing.h
│ │ │ │ ├── TensorPadding.h
│ │ │ │ ├── TensorPatch.h
│ │ │ │ ├── TensorRandom.h
│ │ │ │ ├── TensorReduction.h
│ │ │ │ ├── TensorReductionCuda.h
│ │ │ │ ├── TensorReductionSycl.h
│ │ │ │ ├── TensorRef.h
│ │ │ │ ├── TensorReverse.h
│ │ │ │ ├── TensorScan.h
│ │ │ │ ├── TensorShuffling.h
│ │ │ │ ├── TensorStorage.h
│ │ │ │ ├── TensorStriding.h
│ │ │ │ ├── TensorSycl.h
│ │ │ │ ├── TensorSyclConvertToDeviceExpression.h
│ │ │ │ ├── TensorSyclExprConstructor.h
│ │ │ │ ├── TensorSyclExtractAccessor.h
│ │ │ │ ├── TensorSyclExtractFunctors.h
│ │ │ │ ├── TensorSyclLeafCount.h
│ │ │ │ ├── TensorSyclPlaceHolderExpr.h
│ │ │ │ ├── TensorSyclRun.h
│ │ │ │ ├── TensorSyclTuple.h
│ │ │ │ ├── TensorTraits.h
│ │ │ │ ├── TensorUInt128.h
│ │ │ │ └── TensorVolumePatch.h
│ │ │ ├── TensorSymmetry/
│ │ │ │ ├── DynamicSymmetry.h
│ │ │ │ ├── StaticSymmetry.h
│ │ │ │ ├── Symmetry.h
│ │ │ │ └── util/
│ │ │ │ └── TemplateGroupTheory.h
│ │ │ ├── ThreadPool/
│ │ │ │ ├── EventCount.h
│ │ │ │ ├── NonBlockingThreadPool.h
│ │ │ │ ├── RunQueue.h
│ │ │ │ ├── SimpleThreadPool.h
│ │ │ │ ├── ThreadEnvironment.h
│ │ │ │ ├── ThreadLocal.h
│ │ │ │ ├── ThreadPoolInterface.h
│ │ │ │ └── ThreadYield.h
│ │ │ └── util/
│ │ │ ├── CXX11Meta.h
│ │ │ ├── CXX11Workarounds.h
│ │ │ ├── EmulateArray.h
│ │ │ ├── EmulateCXX11Meta.h
│ │ │ └── MaxSizeVector.h
│ │ ├── EulerAngles
│ │ ├── FFT
│ │ ├── IterativeSolvers
│ │ ├── KroneckerProduct
│ │ ├── LevenbergMarquardt
│ │ ├── MPRealSupport
│ │ ├── MatrixFunctions
│ │ ├── MoreVectorization
│ │ ├── NonLinearOptimization
│ │ ├── NumericalDiff
│ │ ├── OpenGLSupport
│ │ ├── Polynomials
│ │ ├── Skyline
│ │ ├── SparseExtra
│ │ ├── SpecialFunctions
│ │ ├── Splines
│ │ └── src/
│ │ ├── AutoDiff/
│ │ │ ├── AutoDiffJacobian.h
│ │ │ ├── AutoDiffScalar.h
│ │ │ └── AutoDiffVector.h
│ │ ├── BVH/
│ │ │ ├── BVAlgorithms.h
│ │ │ └── KdBVH.h
│ │ ├── Eigenvalues/
│ │ │ └── ArpackSelfAdjointEigenSolver.h
│ │ ├── EulerAngles/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── EulerAngles.h
│ │ │ └── EulerSystem.h
│ │ ├── FFT/
│ │ │ ├── ei_fftw_impl.h
│ │ │ └── ei_kissfft_impl.h
│ │ ├── IterativeSolvers/
│ │ │ ├── ConstrainedConjGrad.h
│ │ │ ├── DGMRES.h
│ │ │ ├── GMRES.h
│ │ │ ├── IncompleteLU.h
│ │ │ ├── IterationController.h
│ │ │ ├── MINRES.h
│ │ │ └── Scaling.h
│ │ ├── KroneckerProduct/
│ │ │ └── KroneckerTensorProduct.h
│ │ ├── LevenbergMarquardt/
│ │ │ ├── CopyrightMINPACK.txt
│ │ │ ├── LMcovar.h
│ │ │ ├── LMonestep.h
│ │ │ ├── LMpar.h
│ │ │ ├── LMqrsolv.h
│ │ │ └── LevenbergMarquardt.h
│ │ ├── MatrixFunctions/
│ │ │ ├── MatrixExponential.h
│ │ │ ├── MatrixFunction.h
│ │ │ ├── MatrixLogarithm.h
│ │ │ ├── MatrixPower.h
│ │ │ ├── MatrixSquareRoot.h
│ │ │ └── StemFunction.h
│ │ ├── MoreVectorization/
│ │ │ └── MathFunctions.h
│ │ ├── NonLinearOptimization/
│ │ │ ├── HybridNonLinearSolver.h
│ │ │ ├── LevenbergMarquardt.h
│ │ │ ├── chkder.h
│ │ │ ├── covar.h
│ │ │ ├── dogleg.h
│ │ │ ├── fdjac1.h
│ │ │ ├── lmpar.h
│ │ │ ├── qrsolv.h
│ │ │ ├── r1mpyq.h
│ │ │ ├── r1updt.h
│ │ │ └── rwupdt.h
│ │ ├── NumericalDiff/
│ │ │ └── NumericalDiff.h
│ │ ├── Polynomials/
│ │ │ ├── Companion.h
│ │ │ ├── PolynomialSolver.h
│ │ │ └── PolynomialUtils.h
│ │ ├── Skyline/
│ │ │ ├── SkylineInplaceLU.h
│ │ │ ├── SkylineMatrix.h
│ │ │ ├── SkylineMatrixBase.h
│ │ │ ├── SkylineProduct.h
│ │ │ ├── SkylineStorage.h
│ │ │ └── SkylineUtil.h
│ │ ├── SparseExtra/
│ │ │ ├── BlockOfDynamicSparseMatrix.h
│ │ │ ├── BlockSparseMatrix.h
│ │ │ ├── DynamicSparseMatrix.h
│ │ │ ├── MarketIO.h
│ │ │ ├── MatrixMarketIterator.h
│ │ │ └── RandomSetter.h
│ │ ├── SpecialFunctions/
│ │ │ ├── SpecialFunctionsArrayAPI.h
│ │ │ ├── SpecialFunctionsFunctors.h
│ │ │ ├── SpecialFunctionsHalf.h
│ │ │ ├── SpecialFunctionsImpl.h
│ │ │ ├── SpecialFunctionsPacketMath.h
│ │ │ └── arch/
│ │ │ └── CUDA/
│ │ │ └── CudaSpecialFunctions.h
│ │ └── Splines/
│ │ ├── Spline.h
│ │ ├── SplineFitting.h
│ │ └── SplineFwd.h
│ ├── README.txt
│ ├── bench/
│ │ └── bench_svd.cpp
│ ├── doc/
│ │ ├── CMakeLists.txt
│ │ ├── Overview.dox
│ │ ├── eigendoxy_layout.xml.in
│ │ ├── examples/
│ │ │ ├── BVH_Example.cpp
│ │ │ ├── CMakeLists.txt
│ │ │ ├── EulerAngles.cpp
│ │ │ ├── FFT.cpp
│ │ │ ├── MatrixExponential.cpp
│ │ │ ├── MatrixFunction.cpp
│ │ │ ├── MatrixLogarithm.cpp
│ │ │ ├── MatrixPower.cpp
│ │ │ ├── MatrixPower_optimal.cpp
│ │ │ ├── MatrixSine.cpp
│ │ │ ├── MatrixSinh.cpp
│ │ │ ├── MatrixSquareRoot.cpp
│ │ │ ├── PolynomialSolver1.cpp
│ │ │ └── PolynomialUtils1.cpp
│ │ └── snippets/
│ │ └── CMakeLists.txt
│ └── test/
│ ├── BVH.cpp
│ ├── CMakeLists.txt
│ ├── EulerAngles.cpp
│ ├── FFT.cpp
│ ├── FFTW.cpp
│ ├── NonLinearOptimization.cpp
│ ├── NumericalDiff.cpp
│ ├── alignedvector3.cpp
│ ├── autodiff.cpp
│ ├── autodiff_scalar.cpp
│ ├── cxx11_eventcount.cpp
│ ├── cxx11_meta.cpp
│ ├── cxx11_non_blocking_thread_pool.cpp
│ ├── cxx11_runqueue.cpp
│ ├── cxx11_tensor_argmax.cpp
│ ├── cxx11_tensor_argmax_cuda.cu
│ ├── cxx11_tensor_assign.cpp
│ ├── cxx11_tensor_broadcast_sycl.cpp
│ ├── cxx11_tensor_broadcasting.cpp
│ ├── cxx11_tensor_cast_float16_cuda.cu
│ ├── cxx11_tensor_casts.cpp
│ ├── cxx11_tensor_chipping.cpp
│ ├── cxx11_tensor_comparisons.cpp
│ ├── cxx11_tensor_complex_cuda.cu
│ ├── cxx11_tensor_complex_cwise_ops_cuda.cu
│ ├── cxx11_tensor_concatenation.cpp
│ ├── cxx11_tensor_const.cpp
│ ├── cxx11_tensor_contract_cuda.cu
│ ├── cxx11_tensor_contraction.cpp
│ ├── cxx11_tensor_convolution.cpp
│ ├── cxx11_tensor_cuda.cu
│ ├── cxx11_tensor_custom_index.cpp
│ ├── cxx11_tensor_custom_op.cpp
│ ├── cxx11_tensor_device.cu
│ ├── cxx11_tensor_device_sycl.cpp
│ ├── cxx11_tensor_dimension.cpp
│ ├── cxx11_tensor_empty.cpp
│ ├── cxx11_tensor_expr.cpp
│ ├── cxx11_tensor_fft.cpp
│ ├── cxx11_tensor_fixed_size.cpp
│ ├── cxx11_tensor_forced_eval.cpp
│ ├── cxx11_tensor_forced_eval_sycl.cpp
│ ├── cxx11_tensor_generator.cpp
│ ├── cxx11_tensor_ifft.cpp
│ ├── cxx11_tensor_image_patch.cpp
│ ├── cxx11_tensor_index_list.cpp
│ ├── cxx11_tensor_inflation.cpp
│ ├── cxx11_tensor_intdiv.cpp
│ ├── cxx11_tensor_io.cpp
│ ├── cxx11_tensor_layout_swap.cpp
│ ├── cxx11_tensor_lvalue.cpp
│ ├── cxx11_tensor_map.cpp
│ ├── cxx11_tensor_math.cpp
│ ├── cxx11_tensor_mixed_indices.cpp
│ ├── cxx11_tensor_morphing.cpp
│ ├── cxx11_tensor_notification.cpp
│ ├── cxx11_tensor_of_complex.cpp
│ ├── cxx11_tensor_of_const_values.cpp
│ ├── cxx11_tensor_of_float16_cuda.cu
│ ├── cxx11_tensor_of_strings.cpp
│ ├── cxx11_tensor_padding.cpp
│ ├── cxx11_tensor_patch.cpp
│ ├── cxx11_tensor_random.cpp
│ ├── cxx11_tensor_random_cuda.cu
│ ├── cxx11_tensor_reduction.cpp
│ ├── cxx11_tensor_reduction_cuda.cu
│ ├── cxx11_tensor_reduction_sycl.cpp
│ ├── cxx11_tensor_ref.cpp
│ ├── cxx11_tensor_reverse.cpp
│ ├── cxx11_tensor_roundings.cpp
│ ├── cxx11_tensor_scan.cpp
│ ├── cxx11_tensor_scan_cuda.cu
│ ├── cxx11_tensor_shuffling.cpp
│ ├── cxx11_tensor_simple.cpp
│ ├── cxx11_tensor_striding.cpp
│ ├── cxx11_tensor_sugar.cpp
│ ├── cxx11_tensor_sycl.cpp
│ ├── cxx11_tensor_symmetry.cpp
│ ├── cxx11_tensor_thread_pool.cpp
│ ├── cxx11_tensor_uint128.cpp
│ ├── cxx11_tensor_volume_patch.cpp
│ ├── dgmres.cpp
│ ├── forward_adolc.cpp
│ ├── gmres.cpp
│ ├── kronecker_product.cpp
│ ├── levenberg_marquardt.cpp
│ ├── matrix_exponential.cpp
│ ├── matrix_function.cpp
│ ├── matrix_functions.h
│ ├── matrix_power.cpp
│ ├── matrix_square_root.cpp
│ ├── minres.cpp
│ ├── mpreal/
│ │ └── mpreal.h
│ ├── mpreal_support.cpp
│ ├── openglsupport.cpp
│ ├── polynomialsolver.cpp
│ ├── polynomialutils.cpp
│ ├── sparse_extra.cpp
│ ├── special_functions.cpp
│ └── splines.cpp
├── location/
│ ├── CMakeLists.txt
│ ├── Location.cpp
│ └── Location.h
├── main.cpp
├── math/
│ ├── CMakeLists.txt
│ ├── Coordinate.cpp
│ ├── Coordinate.h
│ ├── KalmanFilter.cpp
│ ├── KalmanFilter.h
│ ├── LPF.cpp
│ ├── LPF.h
│ ├── Optimizer.cpp
│ ├── Optimizer.h
│ ├── Quaternions.cpp
│ └── Quaternions.h
├── models/
│ ├── AHRS.cpp
│ ├── AHRS.h
│ ├── CMakeLists.txt
│ ├── StopDetection.cpp
│ ├── StopDetection.h
│ ├── StrapdownAHRS.cpp
│ ├── StrapdownAHRS.h
│ ├── XgboostDetector.cpp
│ └── XgboostDetector.h
├── sensor/
│ ├── Accelerometer.cpp
│ ├── Accelerometer.h
│ ├── CMakeLists.txt
│ ├── Compass.cpp
│ ├── Compass.h
│ ├── GPS.cpp
│ ├── GPS.h
│ ├── Gravity.cpp
│ ├── Gravity.h
│ ├── Gyroscope.cpp
│ ├── Gyroscope.h
│ ├── Magnetometer.cpp
│ ├── Magnetometer.h
│ ├── Sensor.cpp
│ └── Sensor.h
├── system/
│ ├── CMakeLists.txt
│ ├── Status.cpp
│ └── Status.h
├── test/
│ ├── CMakeLists.txt
│ ├── TestCalibration.cpp
│ ├── TestCalibration.h
│ ├── TestLocation.cpp
│ ├── TestLocation.h
│ ├── TestXgboostDetector.cpp
│ ├── TestXgboostDetector.h
│ ├── data/
│ │ ├── EEWalk2.csv
│ │ ├── McLaneWalk.csv
│ │ ├── Sensor_record_20151030_105902_AndroSensor.csv
│ │ ├── Sensor_record_20151030_110329_AndroSensor.csv
│ │ ├── Sensor_record_20151030_110417_AndroSensor.csv
│ │ ├── Sensor_record_20151030_110448_AndroSensor.csv
│ │ ├── Sensor_record_20151030_110521_AndroSensor.csv
│ │ └── Sensor_record_20151030_110553_AndroSensor.csv
│ └── utils/
│ ├── DataFormat.cpp
│ ├── DataFormat.h
│ └── ReadSensor.log.py
├── utils/
│ ├── CMakeLists.txt
│ ├── Tools.cpp
│ └── Tools.h
└── 更新日志.md
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
# Created by .ignore support plugin (hsz.mobi)
### JetBrains template
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# User-specific stuff
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**/shelf
# Sensitive or high-churn files
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml
# Gradle
.idea/**/gradle.xml
.idea/**/libraries
# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn. Uncomment if using
# auto-import.
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# CMake
cmake-build-*/
# Mongo Explorer plugin
.idea/**/mongoSettings.xml
# File-based project format
*.iws
# IntelliJ
out/
# mpeltonen/sbt-idea plugin
.idea_modules/
# JIRA plugin
atlassian-ide-plugin.xml
# Cursive Clojure plugin
.idea/replstate.xml
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties
# Editor-based Rest Client
.idea/httpRequests
.idea
================================================
FILE: .travis.yml
================================================
language: cpp
compiler:
- gcc
script:
- mkdir build
- cd build
- cmake .. && make
- ./Location
================================================
FILE: CMakeLists.txt
================================================
cmake_minimum_required(VERSION 3.9)
project(Location)
set(CMAKE_CXX_STANDARD 11)
set(INC_DIR ./include/eigen3/)
include_directories(${INC_DIR})
include_directories(${PROJECT_SOURCE_DIR}/math)
add_subdirectory(math)
include_directories(${PROJECT_SOURCE_DIR}/models)
add_subdirectory(models)
include_directories(${PROJECT_SOURCE_DIR}/location)
add_subdirectory(location)
include_directories(${PROJECT_SOURCE_DIR}/sensor)
add_subdirectory(sensor)
include_directories(${PROJECT_SOURCE_DIR}/system)
add_subdirectory(system)
include_directories(${PROJECT_SOURCE_DIR}/utils)
add_subdirectory(utils)
include_directories(${PROJECT_SOURCE_DIR}/test)
add_subdirectory(test)
#add_library(lib ./math/KalmanFilter.h ./math/KalmanFilter.cpp ./models/AHRS.cpp ./sensor/Accelerometer.cpp ./sensor/Gyroscope.cpp ./sensor/GPS.cpp ./sensor/Magnetometer.cpp ./math/Quaternions.cpp math/Optimizer.cpp sensor/Sensor.cpp sensor/Sensor.h location/Location.cpp system/Status.cpp ./include/googletest/ test/utils/DataFormat.cpp test/utils/DataFormat.h test/TestLocation.cpp test/TestCalibration.cpp test/TestCalibration.h math/LPF.cpp math/LPF.h models/StrapdownAHRS.cpp config/Config.cpp config/Config.h sensor/Gravity.cpp sensor/Gravity.h sensor/Compass.cpp sensor/Compass.h)
#link_libraries(lib)
#add_executable(Location main.cpp ${lib})
add_executable(Location main.cpp)
target_link_libraries(Location Location_math)
target_link_libraries(Location Location_models)
target_link_libraries(Location Location_location)
target_link_libraries(Location Location_sensor)
target_link_libraries(Location Location_system)
target_link_libraries(Location Location_utils)
target_link_libraries(Location Location_test)
================================================
FILE: README.md
================================================
# LOCATION
[](https://travis-ci.org/yyccR/Location)
> Positioning is the most basic and crucial step in the driving navigation. An accurate positioning can effectively improve the accuracy of the road-binding, and can also sense the change of the driving pattern more accurately. Since the project is mainly based on mobile phones for navigation and positioning, Currently used is the built-in sensor data (gyroscope, accelerometer, geomagnetic meter, direction sensor, gravity sensor) and GPS data fusion positioning.
## Sensor data required.
- [X] gyroscope(x, y, z).
- [X] accelerometer(x, y, z).
- [X] geomagnetic meter(x, y, z).
- [X] gravity sensor(x, y, z).
- [X] direction sensor(roll, pitch, yaw).
- [X] compass(degree).
- [X] road info(distance to next cross, bearing, road type).
- [X] GPS(lng, lat, alt, accuracy, speed, bearing, t).
## Some implement details
- sensor data filter.
- GPS fusion INS under uncoupling system.
## Quick start
First make sure gcc and cmake was installed, and include this library into your project.
```
git clone https://github.com/yyccR/Location.git
```
Second open your `CMakeLists.txt` and add these:
```
include_directories(${PROJECT_SOURCE_DIR}/Location/include/eigen3)
include_directories(${PROJECT_SOURCE_DIR}/Location/math)
add_subdirectory(Location/math)
include_directories(${PROJECT_SOURCE_DIR}/Location/models)
add_subdirectory(Location/models)
include_directories(${PROJECT_SOURCE_DIR}/Location/location)
add_subdirectory(Location/location)
include_directories(${PROJECT_SOURCE_DIR}/Location/sensor)
add_subdirectory(Location/sensor)
include_directories(${PROJECT_SOURCE_DIR}/Location/system)
add_subdirectory(Location/system)
target_link_libraries(${PROJECT_NAME} Location_math)
target_link_libraries(${PROJECT_NAME} Location_models)
target_link_libraries(${PROJECT_NAME} Location_location)
target_link_libraries(${PROJECT_NAME} Location_sensor)
target_link_libraries(${PROJECT_NAME} Location_system)
target_link_libraries(${PROJECT_NAME} Location_test)
```
final open your main file, and add the test code.
```
#include
#include
#include "sensor/GPS.h"
#include "location/Location.h"
using namespace Eigen;
using namespace std;
int main() {
Location location;
Vector3d gyro_data_v(0.004263,0.019169,-0.001014);
Vector3d mag_data_v(-2.313675,-82.446960,-366.183838);
Vector3d acc_data_v(0.105081,0.108075,9.774973);
VectorXd gps_data_v(7);
gps_data_v << 114.174118,22.283789,0.0,0.0,24.0,0.0,1554348968704.665039;
Vector3d g_data_v(0.094139, 0.107857,9.808955);
Vector3d ornt_data_v(-0.549866,0.629957,-0.069398);
Vector3d road_data(1000.0, 0.0, 0);
location.PredictCurrentPosition(gyro_data_v,acc_data_v,mag_data_v,gps_data_v,g_data_v,ornt_data_v, road_data);
cout << location.GetGNSSINS().lng << " " << location.GetGNSSINS().lat << endl;
return 0;
}
```
if you see the output `114.174 22.2838` that means this library was embedded to your project successfully.
## Input data format.
- gyroscope(x, y, z), origin gyroscope data, unit rad/s
- accelerometer(x, y, z), origin accelerometer data, unit m/s²
- geomagnetic meter(x, y, z), origin geomagnetic data, unit μt
- gravity sensor(x, y, z), origin gravity data, unit m/s²
- direction sensor(roll, pitch, yaw), origin sensor data, unit degree
Note that direction sensor doesn't exit actually , the 'sensor data' is computation result from system underlying algorithm.
- compass(degree), origin sensor data, unit degree
- road info(distance to next cross, bearing, road type)
This data is from map data, and if you couldn't search map server data, just fill in all zero `(0.0, 0.0, 0.0)`
- GPS(lng, lat, alt, accuracy, speed, bearing, t)
- lng, longitude, double
- lat, latitude, double
- alt, altitude, double
- accuracy, double
- speed, double
- bearing, double, unit degree
- t, timestampe, unit millisecond
## More detail tutorial.
- [Api calls details](docs/apiCallDetails.md)
- [Sensor data checking](docs/SensorDataChecking.md)
- [Impelement details](docs/implementDetails.md)
- [Sensor calibration](docs/SensorCalibration.md)
- [Training Stop detection model](docs/trainingStopDetectModel.md)
## TODO
- [X] improve CMake.
- [X] Clean the garbage code.
- [ ] Template processing.
- [X] Using smart pointer instead.
- [X] Complete all kinds of documents.
- [X] Add quick start.
- [ ] Add more test case.
- [ ] Design a suitable pattern.
## reference:
1. 《惯性导航》秦永元
2. 《捷联惯性导航技术(第2版 译本)》译者:张天光/王秀萍/王丽霞 作者:DavidH.Titte
3. [An efficient orientation filter for inertial and
inertial/magnetic sensor arrays](http://x-io.co.uk/res/doc/madgwick_internal_report.pdf)
4. [Estimation of IMU and MARG orientation using a gradient descent algorithm](http://vigir.missouri.edu/~gdesouza/Research/Conference_CDs/RehabWeekZ%C3%BCrich/icorr/papers/Madgwick_Estimation%20of%20IMU%20and%20MARG%20orientation%20using%20a%20gradient%20descent%20algorithm_ICORR2011.pdf)
5. [Direction Cosine Matrix IMU Theory](https://www.researchgate.net/publication/265755808_Direction_Cosine_Matrix_IMU_Theory)
6. [METHODS FOR NON-LINEAR LEAST SQUARES PROBLEMS](http://www2.imm.dtu.dk/pubdb/views/edoc_download.php/3215/pdf/imm3215.pdf)
7. [A Calibration Algorithm for Microelectromechanical Systems Accelerometers in Inertial Navigation Sensors](https://arxiv.org/pdf/1309.5075.pdf)
8. [A Calibration Method of Three-axis Magnetic Sensor Based on Ellipsoid Fitting](https://www.researchgate.net/publication/273845104_A_Calibration_Method_of_Three-axis_Magnetic_Sensor_Based_on_Ellipsoid_Fitting)
9. [Accuracy Improvement of Low Cost INS/GPS for Land Applications](https://prism.ucalgary.ca/bitstream/handle/1880/41142/2001_Shin.pdf?sequence=1)
10. [Trajectory preprocessing: Computing with Spatial Trajectories](https://books.google.com.hk/books?hl=zh-CN&lr=&id=JShQJF23xBgC&oi=fnd&pg=PR3&dq=Trajectory+preprocessing.+Computing+with+Spatial+Trajectories&ots=6NUeew5i9_&sig=o7XM_QcuUnmOv5KNeezTN4H8PMw&redir_esc=y&hl=zh-CN&sourceid=cndr#v=onepage&q=Trajectory%20preprocessing.%20Computing%20with%20Spatial%20Trajectories&f=false)
================================================
FILE: README_CN.md
================================================
# Location
> 定位是驾驶导航过程中是最基础的一步,也是十分关键的一步,一个准确的定位可以有效提高绑路的精度,也能更加精准感知驾驶形态的变化,由于本项目主要基于手机做导航定位,目前采用的是手机内置的传感器数据(陀螺仪,加速计,地磁计)以及GPS数据融合定位。
## 项目所需的传感器.
- [X] 陀螺仪(x, y, z).
- [X] 加速计(x, y, z).
- [X] 地磁计(x, y, z).
- [X] 重力感应器(x, y, z).
- [X] 方向传感器(roll, pitch, yaw).
- [X] 指南针(degree).
- [X] 道路信息(距下个路口的距离, 道路方向, 道路类型).
- [X] GPS(经度, 纬度, 海拔, 精度, 速度, 方向, 时间戳).
## 一些实现细节
- 传感器噪声过滤与修正.
- 基于非耦合的GPS融合INS.
## 快速开始
确保安装了gcc和cmake, 下载本项目到你的项目下
```
git clone https://github.com/yyccR/Location.git
```
在项目根目录下新建`CMakeLists.txt`, 同时添加如下:
```
include_directories(${PROJECT_SOURCE_DIR}/Location/include/eigen3)
include_directories(${PROJECT_SOURCE_DIR}/Location/math)
add_subdirectory(Location/math)
include_directories(${PROJECT_SOURCE_DIR}/Location/models)
add_subdirectory(Location/models)
include_directories(${PROJECT_SOURCE_DIR}/Location/location)
add_subdirectory(Location/location)
include_directories(${PROJECT_SOURCE_DIR}/Location/sensor)
add_subdirectory(Location/sensor)
include_directories(${PROJECT_SOURCE_DIR}/Location/system)
add_subdirectory(Location/system)
target_link_libraries(${PROJECT_NAME} Location_math)
target_link_libraries(${PROJECT_NAME} Location_models)
target_link_libraries(${PROJECT_NAME} Location_location)
target_link_libraries(${PROJECT_NAME} Location_sensor)
target_link_libraries(${PROJECT_NAME} Location_system)
target_link_libraries(${PROJECT_NAME} Location_test)
```
在main文件里添加如下测试代码.
```
#include
#include
#include "sensor/GPS.h"
#include "location/Location.h"
using namespace Eigen;
using namespace std;
int main() {
Location location;
Vector3d gyro_data_v(0.004263,0.019169,-0.001014);
Vector3d mag_data_v(-2.313675,-82.446960,-366.183838);
Vector3d acc_data_v(0.105081,0.108075,9.774973);
VectorXd gps_data_v(7);
gps_data_v << 114.174118,22.283789,0.0,0.0,24.0,0.0,1554348968704.665039;
Vector3d g_data_v(0.094139, 0.107857,9.808955);
Vector3d ornt_data_v(-0.549866,0.629957,-0.069398);
Vector3d road_data(1000.0, 0.0, 0);
location.PredictCurrentPosition(gyro_data_v,acc_data_v,mag_data_v,gps_data_v,g_data_v,ornt_data_v, road_data);
cout << location.GetGNSSINS().lng << " " << location.GetGNSSINS().lat << endl;
return 0;
}
```
如果输出 `114.174 22.2838` 表示已经成功内嵌了本项目.
## 数据格式.
- 陀螺仪(x, y, z), 单位 rad/s
- 加速计(x, y, z), 单位 m/s²
- 地磁计(x, y, z), 单位 μt
- 重力感应器(x, y, z), 单位 m/s²
- 方向传感器(roll, pitch, yaw), 单位 角度(degree)
手机并没有方向传感器, 这个所谓的传感器数据是手机底层算法计算得到的。
- 指南针(degree), 单位 角度(degree)
- 道路信息(距离下个路口距离, 当前位置道路方向, 道路类型编码)
如果拿不到道路数据, 则全部填0即可, `(0.0, 0.0, 0.0)`
- GPS(lng, lat, alt, accuracy, speed, bearing, t)
- lng, 经度, double
- lat, 纬度, double
- alt, 海拔, double
- accuracy, 精度, double
- speed, 速度, double
- bearing, 方向, double, 单位 角度(degree)
- t, 时间戳, 单位 毫秒(millisecond)
## 更加详细的调用细节
详见 docs/apiCallDetails.md
## TODO
- [X] CMakeLists 优化.
- [ ] 清理垃圾代码.
- [ ] 模板化.
- [ ] 替换普通指针为智能指针.
- [ ] 完善文档.
- [x] 添加快速开始.
- [ ] 增加更多测试案例.
- [ ] 使用合适的设计模式.
## 参考:
1. 《惯性导航》秦永元
2. 《捷联惯性导航技术(第2版 译本)》译者:张天光/王秀萍/王丽霞 作者:DavidH.Titte
3. [An efficient orientation filter for inertial and
inertial/magnetic sensor arrays](http://x-io.co.uk/res/doc/madgwick_internal_report.pdf)
4. [Estimation of IMU and MARG orientation using a gradient descent algorithm](http://vigir.missouri.edu/~gdesouza/Research/Conference_CDs/RehabWeekZ%C3%BCrich/icorr/papers/Madgwick_Estimation%20of%20IMU%20and%20MARG%20orientation%20using%20a%20gradient%20descent%20algorithm_ICORR2011.pdf)
5. [Direction Cosine Matrix IMU Theory](https://www.researchgate.net/publication/265755808_Direction_Cosine_Matrix_IMU_Theory)
6. [METHODS FOR NON-LINEAR LEAST SQUARES PROBLEMS](http://www2.imm.dtu.dk/pubdb/views/edoc_download.php/3215/pdf/imm3215.pdf)
7. [A Calibration Algorithm for Microelectromechanical Systems Accelerometers in Inertial Navigation Sensors](https://arxiv.org/pdf/1309.5075.pdf)
8. [A Calibration Method of Three-axis Magnetic Sensor Based on Ellipsoid Fitting](https://www.researchgate.net/publication/273845104_A_Calibration_Method_of_Three-axis_Magnetic_Sensor_Based_on_Ellipsoid_Fitting)
9. [Accuracy Improvement of Low Cost INS/GPS for Land Applications](https://prism.ucalgary.ca/bitstream/handle/1880/41142/2001_Shin.pdf?sequence=1)
10. [Trajectory preprocessing: Computing with Spatial Trajectories](https://books.google.com.hk/books?hl=zh-CN&lr=&id=JShQJF23xBgC&oi=fnd&pg=PR3&dq=Trajectory+preprocessing.+Computing+with+Spatial+Trajectories&ots=6NUeew5i9_&sig=o7XM_QcuUnmOv5KNeezTN4H8PMw&redir_esc=y&hl=zh-CN&sourceid=cndr#v=onepage&q=Trajectory%20preprocessing.%20Computing%20with%20Spatial%20Trajectories&f=false)
================================================
FILE: config/CMakeLists.txt
================================================
aux_source_directory(. config_src_lists)
add_library(Location_config ${config_src_lists})
================================================
FILE: config/Config.cpp
================================================
//
// Created by yangcheng on 2019/3/22.
//
#include
#include "Config.h"
#include
#include "iostream"
#include
using namespace std;
class FileNotFoundException : public exception {
virtual const char* what() const throw()
{
return "file not found!";
}
};
Config::Config(string file_name, string delimiter, string comment) : delimiter(delimiter), comment(comment) {
std::ifstream in_file(file_name);
cout << file_name << endl;
if (!in_file) throw FileNotFoundException();
in_file >> (*this);
in_file.close();
}
istream &operator>>(istream &is, Config &cfg) {
string line;
while (getline(is, line)) {
// 忽略开头注释和空行
string::size_type pos = line.find(cfg.comment);
if (line.length() == 0 || pos == 0) continue;
// 忽略末尾注释
string param = line;
if (pos < string::npos) param = line.substr(0, pos + cfg.comment.length());
// key value截取
string::size_type pos2 = param.find(cfg.delimiter);
if (pos2 < string::npos) {
string key = param.substr(0, pos2);
string value = param.replace(0, pos2 + 1, "");
// 删除前后空白和一些特殊字符
cfg.Trim(key);
cfg.Trim(value);
cfg.cfg_settings[key] = value;
}
}
return is;
}
ostream &operator<<(std::ostream &os, const Config &cfg) {
map::const_iterator key_value;
for (key_value = cfg.cfg_settings.begin(); key_value != cfg.cfg_settings.end(); ++key_value) {
os << key_value->first << " : " << key_value->second << endl;
}
return os;
}
void Config::Trim(std::string &s) {
// 删掉头尾的特殊符号
const char whitespace[] = " \n\t\v\r\f";
s.erase(0, s.find_first_not_of(whitespace));
s.erase(s.find_last_not_of(whitespace) + 1);
}
void Config::SetDelimiter(std::string &d) {
this->delimiter = d;
}
void Config::SetComment(std::string &c) {
this->comment = c;
}
std::string Config::Read(const std::string &key) const {
auto value = this->cfg_settings.find(key);
if (value != this->cfg_settings.end()) {
return value->second;
} else {
return "";
}
}
bool Config::FileExist(const std::string file_name) {
bool exist = false;
ifstream in(file_name);
if (in) {
exist = true;
}
in.close();
return exist;
}
void Config::ReadFile(const std::string file_name, const std::string delimiter, const std::string comment) {
this->delimiter = delimiter;
this->comment = comment;
ifstream in(file_name);
if (!in) {
throw "file not found";
} else {
in >> (*this);
}
}
================================================
FILE: config/Config.h
================================================
//
// Created by yangcheng on 2019/3/22.
//
#ifndef LOCATION_CONFIG_H
#define LOCATION_CONFIG_H
#include
#include