@smake/eigen 1.0.2 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/eigen/Eigen/AccelerateSupport +52 -0
- package/eigen/Eigen/Cholesky +18 -21
- package/eigen/Eigen/CholmodSupport +28 -28
- package/eigen/Eigen/Core +235 -326
- package/eigen/Eigen/Eigenvalues +16 -14
- package/eigen/Eigen/Geometry +21 -24
- package/eigen/Eigen/Householder +9 -8
- package/eigen/Eigen/IterativeLinearSolvers +8 -4
- package/eigen/Eigen/Jacobi +14 -14
- package/eigen/Eigen/KLUSupport +43 -0
- package/eigen/Eigen/LU +16 -20
- package/eigen/Eigen/MetisSupport +12 -12
- package/eigen/Eigen/OrderingMethods +54 -54
- package/eigen/Eigen/PaStiXSupport +23 -20
- package/eigen/Eigen/PardisoSupport +17 -14
- package/eigen/Eigen/QR +18 -21
- package/eigen/Eigen/QtAlignedMalloc +5 -13
- package/eigen/Eigen/SPQRSupport +21 -14
- package/eigen/Eigen/SVD +23 -18
- package/eigen/Eigen/Sparse +1 -4
- package/eigen/Eigen/SparseCholesky +18 -23
- package/eigen/Eigen/SparseCore +18 -17
- package/eigen/Eigen/SparseLU +12 -8
- package/eigen/Eigen/SparseQR +16 -14
- package/eigen/Eigen/StdDeque +5 -2
- package/eigen/Eigen/StdList +5 -2
- package/eigen/Eigen/StdVector +5 -2
- package/eigen/Eigen/SuperLUSupport +30 -24
- package/eigen/Eigen/ThreadPool +80 -0
- package/eigen/Eigen/UmfPackSupport +19 -17
- package/eigen/Eigen/Version +14 -0
- package/eigen/Eigen/src/AccelerateSupport/AccelerateSupport.h +423 -0
- package/eigen/Eigen/src/AccelerateSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Cholesky/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Cholesky/LDLT.h +377 -401
- package/eigen/Eigen/src/Cholesky/LLT.h +332 -360
- package/eigen/Eigen/src/Cholesky/LLT_LAPACKE.h +81 -56
- package/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +620 -521
- package/eigen/Eigen/src/CholmodSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Core/ArithmeticSequence.h +239 -0
- package/eigen/Eigen/src/Core/Array.h +341 -294
- package/eigen/Eigen/src/Core/ArrayBase.h +190 -203
- package/eigen/Eigen/src/Core/ArrayWrapper.h +127 -171
- package/eigen/Eigen/src/Core/Assign.h +30 -40
- package/eigen/Eigen/src/Core/AssignEvaluator.h +711 -589
- package/eigen/Eigen/src/Core/Assign_MKL.h +130 -125
- package/eigen/Eigen/src/Core/BandMatrix.h +268 -283
- package/eigen/Eigen/src/Core/Block.h +375 -398
- package/eigen/Eigen/src/Core/CommaInitializer.h +86 -97
- package/eigen/Eigen/src/Core/ConditionEstimator.h +51 -53
- package/eigen/Eigen/src/Core/CoreEvaluators.h +1356 -1026
- package/eigen/Eigen/src/Core/CoreIterators.h +73 -59
- package/eigen/Eigen/src/Core/CwiseBinaryOp.h +114 -132
- package/eigen/Eigen/src/Core/CwiseNullaryOp.h +726 -617
- package/eigen/Eigen/src/Core/CwiseTernaryOp.h +77 -103
- package/eigen/Eigen/src/Core/CwiseUnaryOp.h +56 -68
- package/eigen/Eigen/src/Core/CwiseUnaryView.h +132 -95
- package/eigen/Eigen/src/Core/DenseBase.h +632 -571
- package/eigen/Eigen/src/Core/DenseCoeffsBase.h +511 -624
- package/eigen/Eigen/src/Core/DenseStorage.h +512 -509
- package/eigen/Eigen/src/Core/DeviceWrapper.h +153 -0
- package/eigen/Eigen/src/Core/Diagonal.h +169 -210
- package/eigen/Eigen/src/Core/DiagonalMatrix.h +351 -274
- package/eigen/Eigen/src/Core/DiagonalProduct.h +12 -10
- package/eigen/Eigen/src/Core/Dot.h +172 -222
- package/eigen/Eigen/src/Core/EigenBase.h +75 -85
- package/eigen/Eigen/src/Core/Fill.h +138 -0
- package/eigen/Eigen/src/Core/FindCoeff.h +464 -0
- package/eigen/Eigen/src/Core/ForceAlignedAccess.h +90 -109
- package/eigen/Eigen/src/Core/Fuzzy.h +82 -105
- package/eigen/Eigen/src/Core/GeneralProduct.h +327 -263
- package/eigen/Eigen/src/Core/GenericPacketMath.h +1472 -360
- package/eigen/Eigen/src/Core/GlobalFunctions.h +194 -151
- package/eigen/Eigen/src/Core/IO.h +147 -139
- package/eigen/Eigen/src/Core/IndexedView.h +321 -0
- package/eigen/Eigen/src/Core/InnerProduct.h +260 -0
- package/eigen/Eigen/src/Core/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Core/Inverse.h +56 -66
- package/eigen/Eigen/src/Core/Map.h +124 -142
- package/eigen/Eigen/src/Core/MapBase.h +256 -281
- package/eigen/Eigen/src/Core/MathFunctions.h +1620 -938
- package/eigen/Eigen/src/Core/MathFunctionsImpl.h +233 -71
- package/eigen/Eigen/src/Core/Matrix.h +491 -416
- package/eigen/Eigen/src/Core/MatrixBase.h +468 -453
- package/eigen/Eigen/src/Core/NestByValue.h +66 -85
- package/eigen/Eigen/src/Core/NoAlias.h +79 -85
- package/eigen/Eigen/src/Core/NumTraits.h +235 -148
- package/eigen/Eigen/src/Core/PartialReduxEvaluator.h +253 -0
- package/eigen/Eigen/src/Core/PermutationMatrix.h +461 -511
- package/eigen/Eigen/src/Core/PlainObjectBase.h +871 -894
- package/eigen/Eigen/src/Core/Product.h +260 -139
- package/eigen/Eigen/src/Core/ProductEvaluators.h +863 -714
- package/eigen/Eigen/src/Core/Random.h +161 -136
- package/eigen/Eigen/src/Core/RandomImpl.h +262 -0
- package/eigen/Eigen/src/Core/RealView.h +250 -0
- package/eigen/Eigen/src/Core/Redux.h +366 -336
- package/eigen/Eigen/src/Core/Ref.h +308 -209
- package/eigen/Eigen/src/Core/Replicate.h +94 -106
- package/eigen/Eigen/src/Core/Reshaped.h +398 -0
- package/eigen/Eigen/src/Core/ReturnByValue.h +49 -55
- package/eigen/Eigen/src/Core/Reverse.h +136 -145
- package/eigen/Eigen/src/Core/Select.h +70 -140
- package/eigen/Eigen/src/Core/SelfAdjointView.h +262 -285
- package/eigen/Eigen/src/Core/SelfCwiseBinaryOp.h +23 -20
- package/eigen/Eigen/src/Core/SkewSymmetricMatrix3.h +382 -0
- package/eigen/Eigen/src/Core/Solve.h +97 -111
- package/eigen/Eigen/src/Core/SolveTriangular.h +131 -129
- package/eigen/Eigen/src/Core/SolverBase.h +138 -101
- package/eigen/Eigen/src/Core/StableNorm.h +156 -160
- package/eigen/Eigen/src/Core/StlIterators.h +619 -0
- package/eigen/Eigen/src/Core/Stride.h +91 -88
- package/eigen/Eigen/src/Core/Swap.h +70 -38
- package/eigen/Eigen/src/Core/Transpose.h +295 -273
- package/eigen/Eigen/src/Core/Transpositions.h +272 -317
- package/eigen/Eigen/src/Core/TriangularMatrix.h +670 -755
- package/eigen/Eigen/src/Core/VectorBlock.h +59 -72
- package/eigen/Eigen/src/Core/VectorwiseOp.h +668 -630
- package/eigen/Eigen/src/Core/Visitor.h +480 -216
- package/eigen/Eigen/src/Core/arch/AVX/Complex.h +407 -293
- package/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +79 -388
- package/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +2935 -491
- package/eigen/Eigen/src/Core/arch/AVX/Reductions.h +353 -0
- package/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +279 -22
- package/eigen/Eigen/src/Core/arch/AVX512/Complex.h +472 -0
- package/eigen/Eigen/src/Core/arch/AVX512/GemmKernel.h +1245 -0
- package/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +85 -333
- package/eigen/Eigen/src/Core/arch/AVX512/MathFunctionsFP16.h +75 -0
- package/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +2490 -649
- package/eigen/Eigen/src/Core/arch/AVX512/PacketMathFP16.h +1413 -0
- package/eigen/Eigen/src/Core/arch/AVX512/Reductions.h +297 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TrsmKernel.h +1167 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TrsmUnrolls.inc +1219 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TypeCasting.h +277 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TypeCastingFP16.h +130 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +521 -298
- package/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +39 -280
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +3686 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +205 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +901 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMAbfloat16.h +742 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixVectorProduct.inc +2818 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h +3391 -723
- package/eigen/Eigen/src/Core/arch/AltiVec/TypeCasting.h +153 -0
- package/eigen/Eigen/src/Core/arch/Default/BFloat16.h +866 -0
- package/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +113 -14
- package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +2634 -0
- package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +227 -0
- package/eigen/Eigen/src/Core/arch/Default/Half.h +1091 -0
- package/eigen/Eigen/src/Core/arch/Default/Settings.h +11 -13
- package/eigen/Eigen/src/Core/arch/GPU/Complex.h +244 -0
- package/eigen/Eigen/src/Core/arch/GPU/MathFunctions.h +104 -0
- package/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +1712 -0
- package/eigen/Eigen/src/Core/arch/GPU/Tuple.h +268 -0
- package/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +77 -0
- package/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
- package/eigen/Eigen/src/Core/arch/HVX/PacketMath.h +1088 -0
- package/eigen/Eigen/src/Core/arch/LSX/Complex.h +520 -0
- package/eigen/Eigen/src/Core/arch/LSX/GeneralBlockPanelKernel.h +23 -0
- package/eigen/Eigen/src/Core/arch/LSX/MathFunctions.h +43 -0
- package/eigen/Eigen/src/Core/arch/LSX/PacketMath.h +2866 -0
- package/eigen/Eigen/src/Core/arch/LSX/TypeCasting.h +526 -0
- package/eigen/Eigen/src/Core/arch/MSA/Complex.h +620 -0
- package/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +379 -0
- package/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +1237 -0
- package/eigen/Eigen/src/Core/arch/NEON/Complex.h +531 -289
- package/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +243 -0
- package/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +50 -73
- package/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +5915 -579
- package/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +1642 -0
- package/eigen/Eigen/src/Core/arch/NEON/UnaryFunctors.h +57 -0
- package/eigen/Eigen/src/Core/arch/SSE/Complex.h +366 -334
- package/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +40 -514
- package/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +2164 -675
- package/eigen/Eigen/src/Core/arch/SSE/Reductions.h +324 -0
- package/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +188 -35
- package/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +48 -0
- package/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +674 -0
- package/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +52 -0
- package/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +227 -0
- package/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +303 -0
- package/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +576 -0
- package/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +83 -0
- package/eigen/Eigen/src/Core/arch/ZVector/Complex.h +434 -261
- package/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +160 -53
- package/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +1073 -605
- package/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +123 -117
- package/eigen/Eigen/src/Core/functors/BinaryFunctors.h +594 -322
- package/eigen/Eigen/src/Core/functors/NullaryFunctors.h +204 -118
- package/eigen/Eigen/src/Core/functors/StlFunctors.h +110 -97
- package/eigen/Eigen/src/Core/functors/TernaryFunctors.h +34 -7
- package/eigen/Eigen/src/Core/functors/UnaryFunctors.h +1158 -530
- package/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +2329 -1333
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +328 -364
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +191 -178
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +85 -82
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +154 -73
- package/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +396 -542
- package/eigen/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +80 -77
- package/eigen/Eigen/src/Core/products/Parallelizer.h +208 -92
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +331 -375
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +206 -224
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +139 -146
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +58 -61
- package/eigen/Eigen/src/Core/products/SelfadjointProduct.h +71 -71
- package/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h +48 -46
- package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h +294 -369
- package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +246 -238
- package/eigen/Eigen/src/Core/products/TriangularMatrixVector.h +244 -247
- package/eigen/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +212 -192
- package/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h +328 -275
- package/eigen/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +108 -109
- package/eigen/Eigen/src/Core/products/TriangularSolverVector.h +70 -93
- package/eigen/Eigen/src/Core/util/Assert.h +158 -0
- package/eigen/Eigen/src/Core/util/BlasUtil.h +413 -290
- package/eigen/Eigen/src/Core/util/ConfigureVectorization.h +543 -0
- package/eigen/Eigen/src/Core/util/Constants.h +314 -263
- package/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +130 -78
- package/eigen/Eigen/src/Core/util/EmulateArray.h +270 -0
- package/eigen/Eigen/src/Core/util/ForwardDeclarations.h +450 -224
- package/eigen/Eigen/src/Core/util/GpuHipCudaDefines.inc +101 -0
- package/eigen/Eigen/src/Core/util/GpuHipCudaUndefines.inc +45 -0
- package/eigen/Eigen/src/Core/util/IndexedViewHelper.h +487 -0
- package/eigen/Eigen/src/Core/util/IntegralConstant.h +279 -0
- package/eigen/Eigen/src/Core/util/MKL_support.h +39 -30
- package/eigen/Eigen/src/Core/util/Macros.h +939 -646
- package/eigen/Eigen/src/Core/util/MaxSizeVector.h +139 -0
- package/eigen/Eigen/src/Core/util/Memory.h +1042 -650
- package/eigen/Eigen/src/Core/util/Meta.h +618 -426
- package/eigen/Eigen/src/Core/util/MoreMeta.h +638 -0
- package/eigen/Eigen/src/Core/util/ReenableStupidWarnings.h +32 -19
- package/eigen/Eigen/src/Core/util/ReshapedHelper.h +51 -0
- package/eigen/Eigen/src/Core/util/Serializer.h +209 -0
- package/eigen/Eigen/src/Core/util/StaticAssert.h +51 -164
- package/eigen/Eigen/src/Core/util/SymbolicIndex.h +445 -0
- package/eigen/Eigen/src/Core/util/XprHelper.h +793 -538
- package/eigen/Eigen/src/Eigenvalues/ComplexEigenSolver.h +246 -277
- package/eigen/Eigen/src/Eigenvalues/ComplexSchur.h +299 -319
- package/eigen/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +52 -48
- package/eigen/Eigen/src/Eigenvalues/EigenSolver.h +413 -456
- package/eigen/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +309 -325
- package/eigen/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +157 -171
- package/eigen/Eigen/src/Eigenvalues/HessenbergDecomposition.h +292 -310
- package/eigen/Eigen/src/Eigenvalues/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +91 -107
- package/eigen/Eigen/src/Eigenvalues/RealQZ.h +539 -606
- package/eigen/Eigen/src/Eigenvalues/RealSchur.h +348 -382
- package/eigen/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +41 -35
- package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +579 -600
- package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +47 -44
- package/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +434 -461
- package/eigen/Eigen/src/Geometry/AlignedBox.h +307 -214
- package/eigen/Eigen/src/Geometry/AngleAxis.h +135 -137
- package/eigen/Eigen/src/Geometry/EulerAngles.h +163 -74
- package/eigen/Eigen/src/Geometry/Homogeneous.h +289 -333
- package/eigen/Eigen/src/Geometry/Hyperplane.h +152 -161
- package/eigen/Eigen/src/Geometry/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Geometry/OrthoMethods.h +168 -145
- package/eigen/Eigen/src/Geometry/ParametrizedLine.h +141 -104
- package/eigen/Eigen/src/Geometry/Quaternion.h +595 -497
- package/eigen/Eigen/src/Geometry/Rotation2D.h +110 -108
- package/eigen/Eigen/src/Geometry/RotationBase.h +148 -145
- package/eigen/Eigen/src/Geometry/Scaling.h +115 -90
- package/eigen/Eigen/src/Geometry/Transform.h +896 -953
- package/eigen/Eigen/src/Geometry/Translation.h +100 -98
- package/eigen/Eigen/src/Geometry/Umeyama.h +79 -84
- package/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +154 -0
- package/eigen/Eigen/src/Householder/BlockHouseholder.h +54 -42
- package/eigen/Eigen/src/Householder/Householder.h +104 -122
- package/eigen/Eigen/src/Householder/HouseholderSequence.h +416 -382
- package/eigen/Eigen/src/Householder/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +153 -166
- package/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +127 -138
- package/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +95 -124
- package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +269 -267
- package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +246 -259
- package/eigen/Eigen/src/IterativeLinearSolvers/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +218 -217
- package/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +80 -103
- package/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +59 -63
- package/eigen/Eigen/src/Jacobi/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Jacobi/Jacobi.h +256 -291
- package/eigen/Eigen/src/KLUSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/KLUSupport/KLUSupport.h +339 -0
- package/eigen/Eigen/src/LU/Determinant.h +60 -63
- package/eigen/Eigen/src/LU/FullPivLU.h +561 -626
- package/eigen/Eigen/src/LU/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/LU/InverseImpl.h +213 -275
- package/eigen/Eigen/src/LU/PartialPivLU.h +407 -435
- package/eigen/Eigen/src/LU/PartialPivLU_LAPACKE.h +54 -40
- package/eigen/Eigen/src/LU/arch/InverseSize4.h +353 -0
- package/eigen/Eigen/src/MetisSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/MetisSupport/MetisSupport.h +81 -93
- package/eigen/Eigen/src/OrderingMethods/Amd.h +250 -282
- package/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +950 -1103
- package/eigen/Eigen/src/OrderingMethods/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/OrderingMethods/Ordering.h +111 -122
- package/eigen/Eigen/src/PaStiXSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/PaStiXSupport/PaStiXSupport.h +524 -570
- package/eigen/Eigen/src/PardisoSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/PardisoSupport/PardisoSupport.h +385 -429
- package/eigen/Eigen/src/QR/ColPivHouseholderQR.h +494 -473
- package/eigen/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +120 -56
- package/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +223 -137
- package/eigen/Eigen/src/QR/FullPivHouseholderQR.h +517 -460
- package/eigen/Eigen/src/QR/HouseholderQR.h +412 -278
- package/eigen/Eigen/src/QR/HouseholderQR_LAPACKE.h +32 -23
- package/eigen/Eigen/src/QR/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SPQRSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +263 -261
- package/eigen/Eigen/src/SVD/BDCSVD.h +872 -679
- package/eigen/Eigen/src/SVD/BDCSVD_LAPACKE.h +174 -0
- package/eigen/Eigen/src/SVD/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SVD/JacobiSVD.h +585 -543
- package/eigen/Eigen/src/SVD/JacobiSVD_LAPACKE.h +85 -49
- package/eigen/Eigen/src/SVD/SVDBase.h +281 -160
- package/eigen/Eigen/src/SVD/UpperBidiagonalization.h +202 -237
- package/eigen/Eigen/src/SparseCholesky/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +769 -590
- package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +318 -129
- package/eigen/Eigen/src/SparseCore/AmbiVector.h +202 -251
- package/eigen/Eigen/src/SparseCore/CompressedStorage.h +184 -236
- package/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +140 -184
- package/eigen/Eigen/src/SparseCore/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseCore/SparseAssign.h +174 -111
- package/eigen/Eigen/src/SparseCore/SparseBlock.h +408 -477
- package/eigen/Eigen/src/SparseCore/SparseColEtree.h +100 -112
- package/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +531 -280
- package/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +559 -347
- package/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +100 -108
- package/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +185 -191
- package/eigen/Eigen/src/SparseCore/SparseDiagonalProduct.h +71 -71
- package/eigen/Eigen/src/SparseCore/SparseDot.h +49 -47
- package/eigen/Eigen/src/SparseCore/SparseFuzzy.h +13 -11
- package/eigen/Eigen/src/SparseCore/SparseMap.h +243 -253
- package/eigen/Eigen/src/SparseCore/SparseMatrix.h +1614 -1142
- package/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +403 -357
- package/eigen/Eigen/src/SparseCore/SparsePermutation.h +186 -115
- package/eigen/Eigen/src/SparseCore/SparseProduct.h +100 -91
- package/eigen/Eigen/src/SparseCore/SparseRedux.h +22 -24
- package/eigen/Eigen/src/SparseCore/SparseRef.h +268 -295
- package/eigen/Eigen/src/SparseCore/SparseSelfAdjointView.h +371 -414
- package/eigen/Eigen/src/SparseCore/SparseSolverBase.h +78 -87
- package/eigen/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +81 -95
- package/eigen/Eigen/src/SparseCore/SparseTranspose.h +62 -71
- package/eigen/Eigen/src/SparseCore/SparseTriangularView.h +132 -144
- package/eigen/Eigen/src/SparseCore/SparseUtil.h +146 -115
- package/eigen/Eigen/src/SparseCore/SparseVector.h +426 -372
- package/eigen/Eigen/src/SparseCore/SparseView.h +164 -193
- package/eigen/Eigen/src/SparseCore/TriangularSolver.h +129 -170
- package/eigen/Eigen/src/SparseLU/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseLU/SparseLU.h +814 -618
- package/eigen/Eigen/src/SparseLU/SparseLUImpl.h +61 -48
- package/eigen/Eigen/src/SparseLU/SparseLU_Memory.h +102 -118
- package/eigen/Eigen/src/SparseLU/SparseLU_Structs.h +38 -35
- package/eigen/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +273 -255
- package/eigen/Eigen/src/SparseLU/SparseLU_Utils.h +44 -49
- package/eigen/Eigen/src/SparseLU/SparseLU_column_bmod.h +104 -108
- package/eigen/Eigen/src/SparseLU/SparseLU_column_dfs.h +90 -101
- package/eigen/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +57 -58
- package/eigen/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +43 -55
- package/eigen/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +74 -71
- package/eigen/Eigen/src/SparseLU/SparseLU_panel_bmod.h +125 -133
- package/eigen/Eigen/src/SparseLU/SparseLU_panel_dfs.h +136 -159
- package/eigen/Eigen/src/SparseLU/SparseLU_pivotL.h +51 -52
- package/eigen/Eigen/src/SparseLU/SparseLU_pruneL.h +67 -73
- package/eigen/Eigen/src/SparseLU/SparseLU_relax_snode.h +24 -26
- package/eigen/Eigen/src/SparseQR/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseQR/SparseQR.h +451 -490
- package/eigen/Eigen/src/StlSupport/StdDeque.h +28 -105
- package/eigen/Eigen/src/StlSupport/StdList.h +28 -84
- package/eigen/Eigen/src/StlSupport/StdVector.h +28 -108
- package/eigen/Eigen/src/StlSupport/details.h +48 -50
- package/eigen/Eigen/src/SuperLUSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SuperLUSupport/SuperLUSupport.h +634 -732
- package/eigen/Eigen/src/ThreadPool/Barrier.h +70 -0
- package/eigen/Eigen/src/ThreadPool/CoreThreadPoolDevice.h +336 -0
- package/eigen/Eigen/src/ThreadPool/EventCount.h +241 -0
- package/eigen/Eigen/src/ThreadPool/ForkJoin.h +140 -0
- package/eigen/Eigen/src/ThreadPool/InternalHeaderCheck.h +4 -0
- package/eigen/Eigen/src/ThreadPool/NonBlockingThreadPool.h +587 -0
- package/eigen/Eigen/src/ThreadPool/RunQueue.h +230 -0
- package/eigen/Eigen/src/ThreadPool/ThreadCancel.h +21 -0
- package/eigen/Eigen/src/ThreadPool/ThreadEnvironment.h +43 -0
- package/eigen/Eigen/src/ThreadPool/ThreadLocal.h +289 -0
- package/eigen/Eigen/src/ThreadPool/ThreadPoolInterface.h +50 -0
- package/eigen/Eigen/src/ThreadPool/ThreadYield.h +16 -0
- package/eigen/Eigen/src/UmfPackSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/UmfPackSupport/UmfPackSupport.h +480 -380
- package/eigen/Eigen/src/misc/Image.h +41 -43
- package/eigen/Eigen/src/misc/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/misc/Kernel.h +39 -41
- package/eigen/Eigen/src/misc/RealSvd2x2.h +19 -21
- package/eigen/Eigen/src/misc/blas.h +83 -426
- package/eigen/Eigen/src/misc/lapacke.h +9976 -16182
- package/eigen/Eigen/src/misc/lapacke_helpers.h +163 -0
- package/eigen/Eigen/src/misc/lapacke_mangling.h +4 -5
- package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.inc +344 -0
- package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.inc +544 -0
- package/eigen/Eigen/src/plugins/BlockMethods.inc +1370 -0
- package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.inc +116 -0
- package/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.inc +167 -0
- package/eigen/Eigen/src/plugins/IndexedViewMethods.inc +192 -0
- package/eigen/Eigen/src/plugins/InternalHeaderCheck.inc +3 -0
- package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.inc +331 -0
- package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.inc +118 -0
- package/eigen/Eigen/src/plugins/ReshapedMethods.inc +133 -0
- package/lib/LibEigen.d.ts +4 -0
- package/lib/LibEigen.js +14 -0
- package/lib/index.d.ts +1 -1
- package/lib/index.js +7 -3
- package/package.json +2 -10
- package/eigen/Eigen/CMakeLists.txt +0 -19
- package/eigen/Eigen/src/Core/BooleanRedux.h +0 -164
- package/eigen/Eigen/src/Core/arch/CUDA/Complex.h +0 -103
- package/eigen/Eigen/src/Core/arch/CUDA/Half.h +0 -675
- package/eigen/Eigen/src/Core/arch/CUDA/MathFunctions.h +0 -91
- package/eigen/Eigen/src/Core/arch/CUDA/PacketMath.h +0 -333
- package/eigen/Eigen/src/Core/arch/CUDA/PacketMathHalf.h +0 -1124
- package/eigen/Eigen/src/Core/arch/CUDA/TypeCasting.h +0 -212
- package/eigen/Eigen/src/Core/util/NonMPL2.h +0 -3
- package/eigen/Eigen/src/Geometry/arch/Geometry_SSE.h +0 -161
- package/eigen/Eigen/src/LU/arch/Inverse_SSE.h +0 -338
- package/eigen/Eigen/src/SparseCore/MappedSparseMatrix.h +0 -67
- package/eigen/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +0 -280
- package/eigen/Eigen/src/misc/lapack.h +0 -152
- package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h +0 -332
- package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +0 -552
- package/eigen/Eigen/src/plugins/BlockMethods.h +0 -1058
- package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.h +0 -115
- package/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.h +0 -163
- package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +0 -152
- package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +0 -85
- package/lib/eigen.d.ts +0 -2
- package/lib/eigen.js +0 -15
|
@@ -11,20 +11,20 @@
|
|
|
11
11
|
#ifndef EIGEN_RETURNBYVALUE_H
|
|
12
12
|
#define EIGEN_RETURNBYVALUE_H
|
|
13
13
|
|
|
14
|
+
// IWYU pragma: private
|
|
15
|
+
#include "./InternalHeaderCheck.h"
|
|
16
|
+
|
|
14
17
|
namespace Eigen {
|
|
15
18
|
|
|
16
19
|
namespace internal {
|
|
17
20
|
|
|
18
|
-
template<typename Derived>
|
|
19
|
-
struct traits<ReturnByValue<Derived> >
|
|
20
|
-
: public traits<typename traits<Derived>::ReturnType>
|
|
21
|
-
{
|
|
21
|
+
template <typename Derived>
|
|
22
|
+
struct traits<ReturnByValue<Derived> > : public traits<typename traits<Derived>::ReturnType> {
|
|
22
23
|
enum {
|
|
23
24
|
// We're disabling the DirectAccess because e.g. the constructor of
|
|
24
25
|
// the Block-with-DirectAccess expression requires to have a coeffRef method.
|
|
25
26
|
// Also, we don't want to have to implement the stride stuff.
|
|
26
|
-
Flags = (traits<typename traits<Derived>::ReturnType>::Flags
|
|
27
|
-
| EvalBeforeNestingBit) & ~DirectAccessBit
|
|
27
|
+
Flags = (traits<typename traits<Derived>::ReturnType>::Flags | EvalBeforeNestingBit) & ~DirectAccessBit
|
|
28
28
|
};
|
|
29
29
|
};
|
|
30
30
|
|
|
@@ -35,52 +35,50 @@ struct traits<ReturnByValue<Derived> >
|
|
|
35
35
|
* FIXME: I don't understand why we need this specialization: isn't this taken care of by the EvalBeforeNestingBit ??
|
|
36
36
|
* Answer: EvalBeforeNestingBit should be deprecated since we have the evaluators
|
|
37
37
|
*/
|
|
38
|
-
template<typename Derived,int n,typename PlainObject>
|
|
39
|
-
struct nested_eval<ReturnByValue<Derived>, n, PlainObject>
|
|
40
|
-
{
|
|
38
|
+
template <typename Derived, int n, typename PlainObject>
|
|
39
|
+
struct nested_eval<ReturnByValue<Derived>, n, PlainObject> {
|
|
41
40
|
typedef typename traits<Derived>::ReturnType type;
|
|
42
41
|
};
|
|
43
42
|
|
|
44
|
-
}
|
|
43
|
+
} // end namespace internal
|
|
45
44
|
|
|
46
45
|
/** \class ReturnByValue
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
template<typename Derived>
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
EIGEN_DEVICE_FUNC inline Index cols() const { return static_cast<const Derived*>(this)->cols(); }
|
|
46
|
+
* \ingroup Core_Module
|
|
47
|
+
*
|
|
48
|
+
*/
|
|
49
|
+
template <typename Derived>
|
|
50
|
+
class ReturnByValue : public internal::dense_xpr_base<ReturnByValue<Derived> >::type, internal::no_assignment_operator {
|
|
51
|
+
public:
|
|
52
|
+
typedef typename internal::traits<Derived>::ReturnType ReturnType;
|
|
53
|
+
|
|
54
|
+
typedef typename internal::dense_xpr_base<ReturnByValue>::type Base;
|
|
55
|
+
EIGEN_DENSE_PUBLIC_INTERFACE(ReturnByValue)
|
|
56
|
+
|
|
57
|
+
template <typename Dest>
|
|
58
|
+
EIGEN_DEVICE_FUNC inline void evalTo(Dest& dst) const {
|
|
59
|
+
static_cast<const Derived*>(this)->evalTo(dst);
|
|
60
|
+
}
|
|
61
|
+
EIGEN_DEVICE_FUNC constexpr Index rows() const noexcept { return static_cast<const Derived*>(this)->rows(); }
|
|
62
|
+
EIGEN_DEVICE_FUNC constexpr Index cols() const noexcept { return static_cast<const Derived*>(this)->cols(); }
|
|
65
63
|
|
|
66
64
|
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
|
67
|
-
#define Unusable
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
65
|
+
#define Unusable \
|
|
66
|
+
YOU_ARE_TRYING_TO_ACCESS_A_SINGLE_COEFFICIENT_IN_A_SPECIAL_EXPRESSION_WHERE_THAT_IS_NOT_ALLOWED_BECAUSE_THAT_WOULD_BE_INEFFICIENT
|
|
67
|
+
class Unusable {
|
|
68
|
+
Unusable(const Unusable&) {}
|
|
69
|
+
Unusable& operator=(const Unusable&) { return *this; }
|
|
70
|
+
};
|
|
71
|
+
const Unusable& coeff(Index) const { return *reinterpret_cast<const Unusable*>(this); }
|
|
72
|
+
const Unusable& coeff(Index, Index) const { return *reinterpret_cast<const Unusable*>(this); }
|
|
73
|
+
Unusable& coeffRef(Index) { return *reinterpret_cast<Unusable*>(this); }
|
|
74
|
+
Unusable& coeffRef(Index, Index) { return *reinterpret_cast<Unusable*>(this); }
|
|
76
75
|
#undef Unusable
|
|
77
76
|
#endif
|
|
78
77
|
};
|
|
79
78
|
|
|
80
|
-
template<typename Derived>
|
|
81
|
-
template<typename OtherDerived>
|
|
82
|
-
Derived& DenseBase<Derived>::operator=(const ReturnByValue<OtherDerived>& other)
|
|
83
|
-
{
|
|
79
|
+
template <typename Derived>
|
|
80
|
+
template <typename OtherDerived>
|
|
81
|
+
EIGEN_DEVICE_FUNC Derived& DenseBase<Derived>::operator=(const ReturnByValue<OtherDerived>& other) {
|
|
84
82
|
other.evalTo(derived());
|
|
85
83
|
return derived();
|
|
86
84
|
}
|
|
@@ -90,28 +88,24 @@ namespace internal {
|
|
|
90
88
|
// Expression is evaluated in a temporary; default implementation of Assignment is bypassed so that
|
|
91
89
|
// when a ReturnByValue expression is assigned, the evaluator is not constructed.
|
|
92
90
|
// TODO: Finalize port to new regime; ReturnByValue should not exist in the expression world
|
|
93
|
-
|
|
94
|
-
template<typename Derived>
|
|
95
|
-
struct evaluator<ReturnByValue<Derived> >
|
|
96
|
-
: public evaluator<typename internal::traits<Derived>::ReturnType>
|
|
97
|
-
{
|
|
91
|
+
|
|
92
|
+
template <typename Derived>
|
|
93
|
+
struct evaluator<ReturnByValue<Derived> > : public evaluator<typename internal::traits<Derived>::ReturnType> {
|
|
98
94
|
typedef ReturnByValue<Derived> XprType;
|
|
99
95
|
typedef typename internal::traits<Derived>::ReturnType PlainObject;
|
|
100
96
|
typedef evaluator<PlainObject> Base;
|
|
101
|
-
|
|
102
|
-
EIGEN_DEVICE_FUNC explicit evaluator(const XprType& xpr)
|
|
103
|
-
|
|
104
|
-
{
|
|
105
|
-
::new (static_cast<Base*>(this)) Base(m_result);
|
|
97
|
+
|
|
98
|
+
EIGEN_DEVICE_FUNC explicit evaluator(const XprType& xpr) : m_result(xpr.rows(), xpr.cols()) {
|
|
99
|
+
internal::construct_at<Base>(this, m_result);
|
|
106
100
|
xpr.evalTo(m_result);
|
|
107
101
|
}
|
|
108
102
|
|
|
109
|
-
protected:
|
|
103
|
+
protected:
|
|
110
104
|
PlainObject m_result;
|
|
111
105
|
};
|
|
112
106
|
|
|
113
|
-
}
|
|
107
|
+
} // end namespace internal
|
|
114
108
|
|
|
115
|
-
}
|
|
109
|
+
} // end namespace Eigen
|
|
116
110
|
|
|
117
|
-
#endif
|
|
111
|
+
#endif // EIGEN_RETURNBYVALUE_H
|
|
@@ -12,200 +12,191 @@
|
|
|
12
12
|
#ifndef EIGEN_REVERSE_H
|
|
13
13
|
#define EIGEN_REVERSE_H
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
// IWYU pragma: private
|
|
16
|
+
#include "./InternalHeaderCheck.h"
|
|
17
|
+
|
|
18
|
+
namespace Eigen {
|
|
16
19
|
|
|
17
20
|
namespace internal {
|
|
18
21
|
|
|
19
|
-
template<typename MatrixType, int Direction>
|
|
20
|
-
struct traits<Reverse<MatrixType, Direction> >
|
|
21
|
-
: traits<MatrixType>
|
|
22
|
-
{
|
|
22
|
+
template <typename MatrixType, int Direction>
|
|
23
|
+
struct traits<Reverse<MatrixType, Direction> > : traits<MatrixType> {
|
|
23
24
|
typedef typename MatrixType::Scalar Scalar;
|
|
24
25
|
typedef typename traits<MatrixType>::StorageKind StorageKind;
|
|
25
26
|
typedef typename traits<MatrixType>::XprKind XprKind;
|
|
26
27
|
typedef typename ref_selector<MatrixType>::type MatrixTypeNested;
|
|
27
|
-
typedef
|
|
28
|
+
typedef std::remove_reference_t<MatrixTypeNested> MatrixTypeNested_;
|
|
28
29
|
enum {
|
|
29
30
|
RowsAtCompileTime = MatrixType::RowsAtCompileTime,
|
|
30
31
|
ColsAtCompileTime = MatrixType::ColsAtCompileTime,
|
|
31
32
|
MaxRowsAtCompileTime = MatrixType::MaxRowsAtCompileTime,
|
|
32
33
|
MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime,
|
|
33
|
-
Flags =
|
|
34
|
+
Flags = MatrixTypeNested_::Flags & (RowMajorBit | LvalueBit)
|
|
34
35
|
};
|
|
35
36
|
};
|
|
36
37
|
|
|
37
|
-
template<typename PacketType, bool ReversePacket>
|
|
38
|
-
{
|
|
38
|
+
template <typename PacketType, bool ReversePacket>
|
|
39
|
+
struct reverse_packet_cond {
|
|
39
40
|
static inline PacketType run(const PacketType& x) { return preverse(x); }
|
|
40
41
|
};
|
|
41
42
|
|
|
42
|
-
template<typename PacketType>
|
|
43
|
-
{
|
|
43
|
+
template <typename PacketType>
|
|
44
|
+
struct reverse_packet_cond<PacketType, false> {
|
|
44
45
|
static inline PacketType run(const PacketType& x) { return x; }
|
|
45
46
|
};
|
|
46
47
|
|
|
47
|
-
}
|
|
48
|
+
} // end namespace internal
|
|
48
49
|
|
|
49
50
|
/** \class Reverse
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
template<typename MatrixType, int Direction>
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|| ((Direction == Horizontal) && IsRowMajor)
|
|
84
|
-
};
|
|
85
|
-
typedef internal::reverse_packet_cond<PacketScalar,ReversePacket> reverse_packet;
|
|
86
|
-
public:
|
|
87
|
-
|
|
88
|
-
EIGEN_DEVICE_FUNC explicit inline Reverse(const MatrixType& matrix) : m_matrix(matrix) { }
|
|
89
|
-
|
|
90
|
-
EIGEN_INHERIT_ASSIGNMENT_OPERATORS(Reverse)
|
|
91
|
-
|
|
92
|
-
EIGEN_DEVICE_FUNC inline Index rows() const { return m_matrix.rows(); }
|
|
93
|
-
EIGEN_DEVICE_FUNC inline Index cols() const { return m_matrix.cols(); }
|
|
94
|
-
|
|
95
|
-
EIGEN_DEVICE_FUNC inline Index innerStride() const
|
|
96
|
-
{
|
|
97
|
-
return -m_matrix.innerStride();
|
|
98
|
-
}
|
|
51
|
+
* \ingroup Core_Module
|
|
52
|
+
*
|
|
53
|
+
* \brief Expression of the reverse of a vector or matrix
|
|
54
|
+
*
|
|
55
|
+
* \tparam MatrixType the type of the object of which we are taking the reverse
|
|
56
|
+
* \tparam Direction defines the direction of the reverse operation, can be Vertical, Horizontal, or BothDirections
|
|
57
|
+
*
|
|
58
|
+
* This class represents an expression of the reverse of a vector.
|
|
59
|
+
* It is the return type of MatrixBase::reverse() and VectorwiseOp::reverse()
|
|
60
|
+
* and most of the time this is the only way it is used.
|
|
61
|
+
*
|
|
62
|
+
* \sa MatrixBase::reverse(), VectorwiseOp::reverse()
|
|
63
|
+
*/
|
|
64
|
+
template <typename MatrixType, int Direction>
|
|
65
|
+
class Reverse : public internal::dense_xpr_base<Reverse<MatrixType, Direction> >::type {
|
|
66
|
+
public:
|
|
67
|
+
typedef typename internal::dense_xpr_base<Reverse>::type Base;
|
|
68
|
+
EIGEN_DENSE_PUBLIC_INTERFACE(Reverse)
|
|
69
|
+
typedef internal::remove_all_t<MatrixType> NestedExpression;
|
|
70
|
+
using Base::IsRowMajor;
|
|
71
|
+
|
|
72
|
+
protected:
|
|
73
|
+
enum {
|
|
74
|
+
PacketSize = internal::packet_traits<Scalar>::size,
|
|
75
|
+
IsColMajor = !IsRowMajor,
|
|
76
|
+
ReverseRow = (Direction == Vertical) || (Direction == BothDirections),
|
|
77
|
+
ReverseCol = (Direction == Horizontal) || (Direction == BothDirections),
|
|
78
|
+
OffsetRow = ReverseRow && IsColMajor ? PacketSize : 1,
|
|
79
|
+
OffsetCol = ReverseCol && IsRowMajor ? PacketSize : 1,
|
|
80
|
+
ReversePacket = (Direction == BothDirections) || ((Direction == Vertical) && IsColMajor) ||
|
|
81
|
+
((Direction == Horizontal) && IsRowMajor)
|
|
82
|
+
};
|
|
83
|
+
typedef internal::reverse_packet_cond<PacketScalar, ReversePacket> reverse_packet;
|
|
99
84
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
85
|
+
public:
|
|
86
|
+
EIGEN_DEVICE_FUNC explicit inline Reverse(const MatrixType& matrix) : m_matrix(matrix) {}
|
|
87
|
+
|
|
88
|
+
EIGEN_INHERIT_ASSIGNMENT_OPERATORS(Reverse)
|
|
89
|
+
|
|
90
|
+
EIGEN_DEVICE_FUNC constexpr Index rows() const noexcept { return m_matrix.rows(); }
|
|
91
|
+
EIGEN_DEVICE_FUNC constexpr Index cols() const noexcept { return m_matrix.cols(); }
|
|
105
92
|
|
|
106
|
-
|
|
107
|
-
|
|
93
|
+
EIGEN_DEVICE_FUNC inline Index innerStride() const { return -m_matrix.innerStride(); }
|
|
94
|
+
|
|
95
|
+
EIGEN_DEVICE_FUNC const internal::remove_all_t<typename MatrixType::Nested>& nestedExpression() const {
|
|
96
|
+
return m_matrix;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
protected:
|
|
100
|
+
typename MatrixType::Nested m_matrix;
|
|
108
101
|
};
|
|
109
102
|
|
|
110
103
|
/** \returns an expression of the reverse of *this.
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
template<typename Derived>
|
|
117
|
-
inline typename DenseBase<Derived>::ReverseReturnType
|
|
118
|
-
DenseBase<Derived>::reverse()
|
|
119
|
-
{
|
|
104
|
+
*
|
|
105
|
+
* Example: \include MatrixBase_reverse.cpp
|
|
106
|
+
* Output: \verbinclude MatrixBase_reverse.out
|
|
107
|
+
*
|
|
108
|
+
*/
|
|
109
|
+
template <typename Derived>
|
|
110
|
+
EIGEN_DEVICE_FUNC inline typename DenseBase<Derived>::ReverseReturnType DenseBase<Derived>::reverse() {
|
|
120
111
|
return ReverseReturnType(derived());
|
|
121
112
|
}
|
|
122
113
|
|
|
123
|
-
|
|
124
|
-
//reverse const overload moved DenseBase.h due to a CUDA compiler bug
|
|
114
|
+
// reverse const overload moved DenseBase.h due to a CUDA compiler bug
|
|
125
115
|
|
|
126
116
|
/** This is the "in place" version of reverse: it reverses \c *this.
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
template<typename Derived>
|
|
139
|
-
inline void DenseBase<Derived>::reverseInPlace()
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
{
|
|
143
|
-
Index half = cols()/2;
|
|
144
|
-
leftCols(half).swap(
|
|
145
|
-
|
|
146
|
-
{
|
|
147
|
-
Index half2 = rows()/2;
|
|
148
|
-
col(half).head(half2).swap(
|
|
117
|
+
*
|
|
118
|
+
* In most cases it is probably better to simply use the reversed expression
|
|
119
|
+
* of a matrix. However, when reversing the matrix data itself is really needed,
|
|
120
|
+
* then this "in-place" version is probably the right choice because it provides
|
|
121
|
+
* the following additional benefits:
|
|
122
|
+
* - less error prone: doing the same operation with .reverse() requires special care:
|
|
123
|
+
* \code m = m.reverse().eval(); \endcode
|
|
124
|
+
* - this API enables reverse operations without the need for a temporary
|
|
125
|
+
* - it allows future optimizations (cache friendliness, etc.)
|
|
126
|
+
*
|
|
127
|
+
* \sa VectorwiseOp::reverseInPlace(), reverse() */
|
|
128
|
+
template <typename Derived>
|
|
129
|
+
EIGEN_DEVICE_FUNC inline void DenseBase<Derived>::reverseInPlace() {
|
|
130
|
+
constexpr int HalfRowsAtCompileTime = RowsAtCompileTime == Dynamic ? Dynamic : RowsAtCompileTime / 2;
|
|
131
|
+
constexpr int HalfColsAtCompileTime = ColsAtCompileTime == Dynamic ? Dynamic : ColsAtCompileTime / 2;
|
|
132
|
+
if (cols() > rows()) {
|
|
133
|
+
Index half = cols() / 2;
|
|
134
|
+
this->template leftCols<HalfColsAtCompileTime>(half).swap(
|
|
135
|
+
this->template rightCols<HalfColsAtCompileTime>(half).reverse());
|
|
136
|
+
if ((cols() % 2) == 1) {
|
|
137
|
+
Index half2 = rows() / 2;
|
|
138
|
+
col(half).template head<HalfRowsAtCompileTime>(half2).swap(
|
|
139
|
+
col(half).template tail<HalfRowsAtCompileTime>(half2).reverse());
|
|
149
140
|
}
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
row(half).head(half2).swap(row(half).tail(half2).reverse());
|
|
141
|
+
} else {
|
|
142
|
+
Index half = rows() / 2;
|
|
143
|
+
this->template topRows<HalfRowsAtCompileTime>(half).swap(
|
|
144
|
+
this->template bottomRows<HalfRowsAtCompileTime>(half).reverse());
|
|
145
|
+
if ((rows() % 2) == 1) {
|
|
146
|
+
Index half2 = cols() / 2;
|
|
147
|
+
row(half).template head<HalfColsAtCompileTime>(half2).swap(
|
|
148
|
+
row(half).template tail<HalfColsAtCompileTime>(half2).reverse());
|
|
159
149
|
}
|
|
160
150
|
}
|
|
161
151
|
}
|
|
162
152
|
|
|
163
153
|
namespace internal {
|
|
164
|
-
|
|
165
|
-
template<int Direction>
|
|
154
|
+
|
|
155
|
+
template <int Direction>
|
|
166
156
|
struct vectorwise_reverse_inplace_impl;
|
|
167
157
|
|
|
168
|
-
template<>
|
|
169
|
-
struct vectorwise_reverse_inplace_impl<Vertical>
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
Index half = xpr.rows()/2;
|
|
175
|
-
xpr.topRows(half).swap(
|
|
158
|
+
template <>
|
|
159
|
+
struct vectorwise_reverse_inplace_impl<Vertical> {
|
|
160
|
+
template <typename ExpressionType>
|
|
161
|
+
static void run(ExpressionType& xpr) {
|
|
162
|
+
constexpr Index HalfAtCompileTime =
|
|
163
|
+
ExpressionType::RowsAtCompileTime == Dynamic ? Dynamic : ExpressionType::RowsAtCompileTime / 2;
|
|
164
|
+
Index half = xpr.rows() / 2;
|
|
165
|
+
xpr.template topRows<HalfAtCompileTime>(half).swap(
|
|
166
|
+
xpr.template bottomRows<HalfAtCompileTime>(half).colwise().reverse());
|
|
176
167
|
}
|
|
177
168
|
};
|
|
178
169
|
|
|
179
|
-
template<>
|
|
180
|
-
struct vectorwise_reverse_inplace_impl<Horizontal>
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
Index half = xpr.cols()/2;
|
|
186
|
-
xpr.leftCols(half).swap(
|
|
170
|
+
template <>
|
|
171
|
+
struct vectorwise_reverse_inplace_impl<Horizontal> {
|
|
172
|
+
template <typename ExpressionType>
|
|
173
|
+
static void run(ExpressionType& xpr) {
|
|
174
|
+
constexpr Index HalfAtCompileTime =
|
|
175
|
+
ExpressionType::ColsAtCompileTime == Dynamic ? Dynamic : ExpressionType::ColsAtCompileTime / 2;
|
|
176
|
+
Index half = xpr.cols() / 2;
|
|
177
|
+
xpr.template leftCols<HalfAtCompileTime>(half).swap(
|
|
178
|
+
xpr.template rightCols<HalfAtCompileTime>(half).rowwise().reverse());
|
|
187
179
|
}
|
|
188
180
|
};
|
|
189
181
|
|
|
190
|
-
}
|
|
182
|
+
} // end namespace internal
|
|
191
183
|
|
|
192
184
|
/** This is the "in place" version of VectorwiseOp::reverse: it reverses each column or row of \c *this.
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
template<typename ExpressionType, int Direction>
|
|
204
|
-
void VectorwiseOp<ExpressionType,Direction>::reverseInPlace()
|
|
205
|
-
|
|
206
|
-
internal::vectorwise_reverse_inplace_impl<Direction>::run(_expression().const_cast_derived());
|
|
185
|
+
*
|
|
186
|
+
* In most cases it is probably better to simply use the reversed expression
|
|
187
|
+
* of a matrix. However, when reversing the matrix data itself is really needed,
|
|
188
|
+
* then this "in-place" version is probably the right choice because it provides
|
|
189
|
+
* the following additional benefits:
|
|
190
|
+
* - less error prone: doing the same operation with .reverse() requires special care:
|
|
191
|
+
* \code m = m.reverse().eval(); \endcode
|
|
192
|
+
* - this API enables reverse operations without the need for a temporary
|
|
193
|
+
*
|
|
194
|
+
* \sa DenseBase::reverseInPlace(), reverse() */
|
|
195
|
+
template <typename ExpressionType, int Direction>
|
|
196
|
+
EIGEN_DEVICE_FUNC void VectorwiseOp<ExpressionType, Direction>::reverseInPlace() {
|
|
197
|
+
internal::vectorwise_reverse_inplace_impl<Direction>::run(m_matrix);
|
|
207
198
|
}
|
|
208
199
|
|
|
209
|
-
}
|
|
200
|
+
} // end namespace Eigen
|
|
210
201
|
|
|
211
|
-
#endif
|
|
202
|
+
#endif // EIGEN_REVERSE_H
|