@smake/eigen 1.1.0 → 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 -20
- package/eigen/Eigen/CholmodSupport +28 -28
- package/eigen/Eigen/Core +187 -120
- package/eigen/Eigen/Eigenvalues +16 -13
- package/eigen/Eigen/Geometry +18 -18
- package/eigen/Eigen/Householder +9 -7
- package/eigen/Eigen/IterativeLinearSolvers +8 -4
- package/eigen/Eigen/Jacobi +14 -13
- package/eigen/Eigen/KLUSupport +23 -21
- package/eigen/Eigen/LU +15 -16
- package/eigen/Eigen/MetisSupport +12 -12
- package/eigen/Eigen/OrderingMethods +54 -51
- package/eigen/Eigen/PaStiXSupport +23 -21
- package/eigen/Eigen/PardisoSupport +17 -14
- package/eigen/Eigen/QR +18 -20
- package/eigen/Eigen/QtAlignedMalloc +5 -12
- package/eigen/Eigen/SPQRSupport +21 -14
- package/eigen/Eigen/SVD +23 -17
- package/eigen/Eigen/Sparse +1 -2
- package/eigen/Eigen/SparseCholesky +18 -15
- package/eigen/Eigen/SparseCore +18 -17
- package/eigen/Eigen/SparseLU +9 -9
- 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 +366 -405
- package/eigen/Eigen/src/Cholesky/LLT.h +323 -367
- package/eigen/Eigen/src/Cholesky/LLT_LAPACKE.h +81 -56
- package/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +585 -529
- package/eigen/Eigen/src/CholmodSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Core/ArithmeticSequence.h +143 -317
- package/eigen/Eigen/src/Core/Array.h +329 -370
- package/eigen/Eigen/src/Core/ArrayBase.h +190 -203
- package/eigen/Eigen/src/Core/ArrayWrapper.h +126 -170
- package/eigen/Eigen/src/Core/Assign.h +30 -40
- package/eigen/Eigen/src/Core/AssignEvaluator.h +651 -604
- package/eigen/Eigen/src/Core/Assign_MKL.h +125 -120
- package/eigen/Eigen/src/Core/BandMatrix.h +267 -282
- package/eigen/Eigen/src/Core/Block.h +371 -390
- package/eigen/Eigen/src/Core/CommaInitializer.h +85 -100
- package/eigen/Eigen/src/Core/ConditionEstimator.h +51 -53
- package/eigen/Eigen/src/Core/CoreEvaluators.h +1214 -937
- package/eigen/Eigen/src/Core/CoreIterators.h +72 -63
- package/eigen/Eigen/src/Core/CwiseBinaryOp.h +112 -129
- package/eigen/Eigen/src/Core/CwiseNullaryOp.h +676 -702
- package/eigen/Eigen/src/Core/CwiseTernaryOp.h +77 -103
- package/eigen/Eigen/src/Core/CwiseUnaryOp.h +55 -67
- package/eigen/Eigen/src/Core/CwiseUnaryView.h +127 -92
- package/eigen/Eigen/src/Core/DenseBase.h +630 -658
- package/eigen/Eigen/src/Core/DenseCoeffsBase.h +511 -628
- package/eigen/Eigen/src/Core/DenseStorage.h +511 -590
- package/eigen/Eigen/src/Core/DeviceWrapper.h +153 -0
- package/eigen/Eigen/src/Core/Diagonal.h +168 -207
- package/eigen/Eigen/src/Core/DiagonalMatrix.h +346 -317
- package/eigen/Eigen/src/Core/DiagonalProduct.h +12 -10
- package/eigen/Eigen/src/Core/Dot.h +167 -217
- package/eigen/Eigen/src/Core/EigenBase.h +74 -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 -113
- package/eigen/Eigen/src/Core/Fuzzy.h +82 -105
- package/eigen/Eigen/src/Core/GeneralProduct.h +315 -261
- package/eigen/Eigen/src/Core/GenericPacketMath.h +1182 -520
- package/eigen/Eigen/src/Core/GlobalFunctions.h +193 -157
- package/eigen/Eigen/src/Core/IO.h +131 -156
- package/eigen/Eigen/src/Core/IndexedView.h +209 -125
- 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 +50 -59
- package/eigen/Eigen/src/Core/Map.h +123 -141
- package/eigen/Eigen/src/Core/MapBase.h +255 -282
- package/eigen/Eigen/src/Core/MathFunctions.h +1247 -1201
- package/eigen/Eigen/src/Core/MathFunctionsImpl.h +162 -99
- package/eigen/Eigen/src/Core/Matrix.h +463 -494
- package/eigen/Eigen/src/Core/MatrixBase.h +468 -470
- package/eigen/Eigen/src/Core/NestByValue.h +58 -52
- package/eigen/Eigen/src/Core/NoAlias.h +79 -86
- package/eigen/Eigen/src/Core/NumTraits.h +206 -206
- package/eigen/Eigen/src/Core/PartialReduxEvaluator.h +163 -142
- package/eigen/Eigen/src/Core/PermutationMatrix.h +461 -511
- package/eigen/Eigen/src/Core/PlainObjectBase.h +858 -972
- package/eigen/Eigen/src/Core/Product.h +246 -130
- package/eigen/Eigen/src/Core/ProductEvaluators.h +779 -671
- package/eigen/Eigen/src/Core/Random.h +153 -164
- 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 +334 -314
- package/eigen/Eigen/src/Core/Ref.h +259 -257
- package/eigen/Eigen/src/Core/Replicate.h +92 -104
- package/eigen/Eigen/src/Core/Reshaped.h +215 -271
- package/eigen/Eigen/src/Core/ReturnByValue.h +47 -55
- package/eigen/Eigen/src/Core/Reverse.h +133 -148
- package/eigen/Eigen/src/Core/Select.h +68 -140
- package/eigen/Eigen/src/Core/SelfAdjointView.h +254 -290
- 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 +88 -102
- package/eigen/Eigen/src/Core/SolveTriangular.h +126 -124
- package/eigen/Eigen/src/Core/SolverBase.h +132 -133
- package/eigen/Eigen/src/Core/StableNorm.h +113 -147
- package/eigen/Eigen/src/Core/StlIterators.h +404 -248
- package/eigen/Eigen/src/Core/Stride.h +90 -92
- package/eigen/Eigen/src/Core/Swap.h +70 -39
- package/eigen/Eigen/src/Core/Transpose.h +258 -295
- package/eigen/Eigen/src/Core/Transpositions.h +270 -333
- package/eigen/Eigen/src/Core/TriangularMatrix.h +642 -743
- package/eigen/Eigen/src/Core/VectorBlock.h +59 -72
- package/eigen/Eigen/src/Core/VectorwiseOp.h +653 -704
- package/eigen/Eigen/src/Core/Visitor.h +464 -308
- package/eigen/Eigen/src/Core/arch/AVX/Complex.h +380 -187
- package/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +65 -163
- package/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +2145 -638
- package/eigen/Eigen/src/Core/arch/AVX/Reductions.h +353 -0
- package/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +253 -60
- package/eigen/Eigen/src/Core/arch/AVX512/Complex.h +278 -228
- package/eigen/Eigen/src/Core/arch/AVX512/GemmKernel.h +1245 -0
- package/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +48 -269
- package/eigen/Eigen/src/Core/arch/AVX512/MathFunctionsFP16.h +75 -0
- package/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +1597 -754
- 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 +229 -41
- package/eigen/Eigen/src/Core/arch/AVX512/TypeCastingFP16.h +130 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +420 -184
- package/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +40 -49
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +2962 -2213
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +196 -212
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +713 -441
- 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 +2380 -1362
- package/eigen/Eigen/src/Core/arch/AltiVec/TypeCasting.h +153 -0
- package/eigen/Eigen/src/Core/arch/Default/BFloat16.h +390 -224
- package/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +78 -67
- package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +1784 -799
- package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +167 -50
- package/eigen/Eigen/src/Core/arch/Default/Half.h +528 -379
- package/eigen/Eigen/src/Core/arch/Default/Settings.h +10 -12
- package/eigen/Eigen/src/Core/arch/GPU/Complex.h +244 -0
- package/eigen/Eigen/src/Core/arch/GPU/MathFunctions.h +41 -40
- package/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +550 -523
- package/eigen/Eigen/src/Core/arch/GPU/Tuple.h +268 -0
- package/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +27 -30
- package/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +8 -8
- 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 +54 -82
- package/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +84 -92
- package/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +51 -47
- package/eigen/Eigen/src/Core/arch/NEON/Complex.h +454 -306
- package/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +175 -115
- package/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +23 -30
- package/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +4366 -2857
- package/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +616 -393
- package/eigen/Eigen/src/Core/arch/NEON/UnaryFunctors.h +57 -0
- package/eigen/Eigen/src/Core/arch/SSE/Complex.h +350 -198
- package/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +38 -149
- package/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +1791 -912
- package/eigen/Eigen/src/Core/arch/SSE/Reductions.h +324 -0
- package/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +128 -40
- package/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +10 -6
- package/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +156 -234
- package/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +6 -3
- package/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +27 -32
- package/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +119 -117
- package/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +325 -419
- package/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +15 -17
- package/eigen/Eigen/src/Core/arch/ZVector/Complex.h +325 -181
- package/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +94 -83
- package/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +811 -458
- package/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +121 -124
- package/eigen/Eigen/src/Core/functors/BinaryFunctors.h +576 -370
- package/eigen/Eigen/src/Core/functors/NullaryFunctors.h +194 -109
- package/eigen/Eigen/src/Core/functors/StlFunctors.h +95 -112
- package/eigen/Eigen/src/Core/functors/TernaryFunctors.h +34 -7
- package/eigen/Eigen/src/Core/functors/UnaryFunctors.h +1038 -749
- package/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +1883 -1375
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +312 -370
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +189 -176
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +84 -81
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +154 -73
- package/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +292 -337
- package/eigen/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +80 -77
- package/eigen/Eigen/src/Core/products/Parallelizer.h +207 -105
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +327 -388
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +206 -224
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +138 -147
- 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 -47
- 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 -277
- package/eigen/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +108 -109
- package/eigen/Eigen/src/Core/products/TriangularSolverVector.h +68 -94
- package/eigen/Eigen/src/Core/util/Assert.h +158 -0
- package/eigen/Eigen/src/Core/util/BlasUtil.h +342 -303
- package/eigen/Eigen/src/Core/util/ConfigureVectorization.h +348 -317
- package/eigen/Eigen/src/Core/util/Constants.h +297 -262
- package/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +130 -90
- package/eigen/Eigen/src/Core/util/EmulateArray.h +270 -0
- package/eigen/Eigen/src/Core/util/ForwardDeclarations.h +449 -247
- 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 +417 -116
- package/eigen/Eigen/src/Core/util/IntegralConstant.h +211 -204
- package/eigen/Eigen/src/Core/util/MKL_support.h +39 -37
- package/eigen/Eigen/src/Core/util/Macros.h +655 -773
- package/eigen/Eigen/src/Core/util/MaxSizeVector.h +139 -0
- package/eigen/Eigen/src/Core/util/Memory.h +970 -748
- package/eigen/Eigen/src/Core/util/Meta.h +581 -633
- 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 +17 -17
- package/eigen/Eigen/src/Core/util/Serializer.h +209 -0
- package/eigen/Eigen/src/Core/util/StaticAssert.h +50 -166
- package/eigen/Eigen/src/Core/util/SymbolicIndex.h +377 -225
- package/eigen/Eigen/src/Core/util/XprHelper.h +784 -547
- 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 +89 -105
- package/eigen/Eigen/src/Eigenvalues/RealQZ.h +537 -607
- package/eigen/Eigen/src/Eigenvalues/RealSchur.h +342 -381
- package/eigen/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +41 -35
- package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +541 -595
- package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +47 -44
- package/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +430 -462
- package/eigen/Eigen/src/Geometry/AlignedBox.h +226 -227
- package/eigen/Eigen/src/Geometry/AngleAxis.h +131 -133
- package/eigen/Eigen/src/Geometry/EulerAngles.h +163 -74
- package/eigen/Eigen/src/Geometry/Homogeneous.h +285 -333
- package/eigen/Eigen/src/Geometry/Hyperplane.h +151 -160
- package/eigen/Eigen/src/Geometry/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Geometry/OrthoMethods.h +168 -146
- package/eigen/Eigen/src/Geometry/ParametrizedLine.h +127 -127
- package/eigen/Eigen/src/Geometry/Quaternion.h +566 -506
- package/eigen/Eigen/src/Geometry/Rotation2D.h +107 -105
- package/eigen/Eigen/src/Geometry/RotationBase.h +148 -145
- package/eigen/Eigen/src/Geometry/Scaling.h +113 -106
- package/eigen/Eigen/src/Geometry/Transform.h +858 -936
- package/eigen/Eigen/src/Geometry/Translation.h +94 -92
- package/eigen/Eigen/src/Geometry/Umeyama.h +79 -84
- package/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +90 -104
- package/eigen/Eigen/src/Householder/BlockHouseholder.h +51 -46
- package/eigen/Eigen/src/Householder/Householder.h +102 -124
- package/eigen/Eigen/src/Householder/HouseholderSequence.h +412 -453
- package/eigen/Eigen/src/Householder/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +149 -162
- package/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +124 -119
- package/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +92 -104
- package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +251 -243
- package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +224 -228
- package/eigen/Eigen/src/IterativeLinearSolvers/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +178 -227
- package/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +79 -84
- package/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +54 -60
- package/eigen/Eigen/src/Jacobi/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Jacobi/Jacobi.h +252 -308
- package/eigen/Eigen/src/KLUSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/KLUSupport/KLUSupport.h +208 -227
- package/eigen/Eigen/src/LU/Determinant.h +50 -69
- package/eigen/Eigen/src/LU/FullPivLU.h +545 -596
- package/eigen/Eigen/src/LU/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/LU/InverseImpl.h +206 -285
- package/eigen/Eigen/src/LU/PartialPivLU.h +390 -428
- package/eigen/Eigen/src/LU/PartialPivLU_LAPACKE.h +54 -40
- package/eigen/Eigen/src/LU/arch/InverseSize4.h +72 -70
- 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 +243 -265
- package/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +831 -1004
- package/eigen/Eigen/src/OrderingMethods/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/OrderingMethods/Ordering.h +112 -119
- 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 -430
- package/eigen/Eigen/src/QR/ColPivHouseholderQR.h +479 -479
- package/eigen/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +120 -56
- package/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +166 -153
- package/eigen/Eigen/src/QR/FullPivHouseholderQR.h +495 -475
- package/eigen/Eigen/src/QR/HouseholderQR.h +394 -285
- 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 +244 -264
- package/eigen/Eigen/src/SVD/BDCSVD.h +817 -713
- 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 +577 -543
- package/eigen/Eigen/src/SVD/JacobiSVD_LAPACKE.h +85 -49
- package/eigen/Eigen/src/SVD/SVDBase.h +242 -182
- package/eigen/Eigen/src/SVD/UpperBidiagonalization.h +200 -235
- package/eigen/Eigen/src/SparseCholesky/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +765 -594
- package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +308 -94
- package/eigen/Eigen/src/SparseCore/AmbiVector.h +202 -251
- package/eigen/Eigen/src/SparseCore/CompressedStorage.h +184 -252
- package/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +134 -178
- package/eigen/Eigen/src/SparseCore/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseCore/SparseAssign.h +149 -140
- package/eigen/Eigen/src/SparseCore/SparseBlock.h +403 -440
- package/eigen/Eigen/src/SparseCore/SparseColEtree.h +100 -112
- package/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +525 -303
- package/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +555 -339
- package/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +100 -108
- package/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +169 -197
- 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 +1603 -1245
- package/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +403 -350
- package/eigen/Eigen/src/SparseCore/SparsePermutation.h +186 -115
- package/eigen/Eigen/src/SparseCore/SparseProduct.h +94 -97
- 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 +370 -416
- 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 +138 -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 +756 -710
- 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 +245 -301
- 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 +89 -100
- 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 +124 -132
- 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 +450 -502
- package/eigen/Eigen/src/StlSupport/StdDeque.h +28 -93
- 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 -730
- 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 +428 -464
- 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 +9972 -16179
- 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.h → BlockMethods.inc} +434 -506
- package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.inc +116 -0
- package/eigen/Eigen/src/plugins/{CommonCwiseUnaryOps.h → CommonCwiseUnaryOps.inc} +58 -68
- 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/package.json +1 -1
- package/eigen/COPYING.APACHE +0 -203
- package/eigen/COPYING.BSD +0 -26
- package/eigen/COPYING.GPL +0 -674
- package/eigen/COPYING.LGPL +0 -502
- package/eigen/COPYING.MINPACK +0 -51
- package/eigen/COPYING.MPL2 +0 -373
- package/eigen/COPYING.README +0 -18
- package/eigen/Eigen/src/Core/BooleanRedux.h +0 -162
- package/eigen/Eigen/src/Core/arch/CUDA/Complex.h +0 -258
- package/eigen/Eigen/src/Core/arch/Default/TypeCasting.h +0 -120
- package/eigen/Eigen/src/Core/arch/SYCL/SyclMemoryModel.h +0 -694
- package/eigen/Eigen/src/Core/util/NonMPL2.h +0 -3
- 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 -358
- package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +0 -696
- package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.h +0 -115
- package/eigen/Eigen/src/plugins/IndexedViewMethods.h +0 -262
- package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +0 -152
- package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +0 -95
- package/eigen/Eigen/src/plugins/ReshapedMethods.h +0 -149
- package/eigen/README.md +0 -5
|
@@ -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,54 +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
|
-
inline Index rows() const EIGEN_NOEXCEPT { return static_cast<const Derived*>(this)->rows(); }
|
|
65
|
-
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
|
|
66
|
-
inline Index cols() const EIGEN_NOEXCEPT { 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(); }
|
|
67
63
|
|
|
68
64
|
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
|
69
|
-
#define Unusable
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
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); }
|
|
78
75
|
#undef Unusable
|
|
79
76
|
#endif
|
|
80
77
|
};
|
|
81
78
|
|
|
82
|
-
template<typename Derived>
|
|
83
|
-
template<typename OtherDerived>
|
|
84
|
-
EIGEN_DEVICE_FUNC Derived& DenseBase<Derived>::operator=(const ReturnByValue<OtherDerived>& other)
|
|
85
|
-
{
|
|
79
|
+
template <typename Derived>
|
|
80
|
+
template <typename OtherDerived>
|
|
81
|
+
EIGEN_DEVICE_FUNC Derived& DenseBase<Derived>::operator=(const ReturnByValue<OtherDerived>& other) {
|
|
86
82
|
other.evalTo(derived());
|
|
87
83
|
return derived();
|
|
88
84
|
}
|
|
@@ -93,27 +89,23 @@ namespace internal {
|
|
|
93
89
|
// when a ReturnByValue expression is assigned, the evaluator is not constructed.
|
|
94
90
|
// TODO: Finalize port to new regime; ReturnByValue should not exist in the expression world
|
|
95
91
|
|
|
96
|
-
template<typename Derived>
|
|
97
|
-
struct evaluator<ReturnByValue<Derived> >
|
|
98
|
-
: public evaluator<typename internal::traits<Derived>::ReturnType>
|
|
99
|
-
{
|
|
92
|
+
template <typename Derived>
|
|
93
|
+
struct evaluator<ReturnByValue<Derived> > : public evaluator<typename internal::traits<Derived>::ReturnType> {
|
|
100
94
|
typedef ReturnByValue<Derived> XprType;
|
|
101
95
|
typedef typename internal::traits<Derived>::ReturnType PlainObject;
|
|
102
96
|
typedef evaluator<PlainObject> Base;
|
|
103
97
|
|
|
104
|
-
EIGEN_DEVICE_FUNC explicit evaluator(const XprType& xpr)
|
|
105
|
-
|
|
106
|
-
{
|
|
107
|
-
::new (static_cast<Base*>(this)) Base(m_result);
|
|
98
|
+
EIGEN_DEVICE_FUNC explicit evaluator(const XprType& xpr) : m_result(xpr.rows(), xpr.cols()) {
|
|
99
|
+
internal::construct_at<Base>(this, m_result);
|
|
108
100
|
xpr.evalTo(m_result);
|
|
109
101
|
}
|
|
110
102
|
|
|
111
|
-
protected:
|
|
103
|
+
protected:
|
|
112
104
|
PlainObject m_result;
|
|
113
105
|
};
|
|
114
106
|
|
|
115
|
-
}
|
|
107
|
+
} // end namespace internal
|
|
116
108
|
|
|
117
|
-
}
|
|
109
|
+
} // end namespace Eigen
|
|
118
110
|
|
|
119
|
-
#endif
|
|
111
|
+
#endif // EIGEN_RETURNBYVALUE_H
|
|
@@ -12,206 +12,191 @@
|
|
|
12
12
|
#ifndef EIGEN_REVERSE_H
|
|
13
13
|
#define EIGEN_REVERSE_H
|
|
14
14
|
|
|
15
|
+
// IWYU pragma: private
|
|
16
|
+
#include "./InternalHeaderCheck.h"
|
|
17
|
+
|
|
15
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 EIGEN_CONSTEXPR
|
|
93
|
-
inline Index rows() const EIGEN_NOEXCEPT { return m_matrix.rows(); }
|
|
94
|
-
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
|
|
95
|
-
inline Index cols() const EIGEN_NOEXCEPT { return m_matrix.cols(); }
|
|
96
|
-
|
|
97
|
-
EIGEN_DEVICE_FUNC inline Index innerStride() const
|
|
98
|
-
{
|
|
99
|
-
return -m_matrix.innerStride();
|
|
100
|
-
}
|
|
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;
|
|
101
84
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
}
|
|
85
|
+
public:
|
|
86
|
+
EIGEN_DEVICE_FUNC explicit inline Reverse(const MatrixType& matrix) : m_matrix(matrix) {}
|
|
87
|
+
|
|
88
|
+
EIGEN_INHERIT_ASSIGNMENT_OPERATORS(Reverse)
|
|
107
89
|
|
|
108
|
-
|
|
109
|
-
|
|
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(); }
|
|
92
|
+
|
|
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;
|
|
110
101
|
};
|
|
111
102
|
|
|
112
103
|
/** \returns an expression of the reverse of *this.
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
template<typename Derived>
|
|
119
|
-
EIGEN_DEVICE_FUNC inline typename DenseBase<Derived>::ReverseReturnType
|
|
120
|
-
DenseBase<Derived>::reverse()
|
|
121
|
-
{
|
|
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() {
|
|
122
111
|
return ReverseReturnType(derived());
|
|
123
112
|
}
|
|
124
113
|
|
|
125
|
-
|
|
126
|
-
//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
|
|
127
115
|
|
|
128
116
|
/** This is the "in place" version of reverse: it reverses \c *this.
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
template<typename Derived>
|
|
141
|
-
EIGEN_DEVICE_FUNC inline void DenseBase<Derived>::reverseInPlace()
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
{
|
|
145
|
-
Index half = cols()/2;
|
|
146
|
-
leftCols(half).swap(
|
|
147
|
-
|
|
148
|
-
{
|
|
149
|
-
Index half2 = rows()/2;
|
|
150
|
-
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());
|
|
151
140
|
}
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
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());
|
|
161
149
|
}
|
|
162
150
|
}
|
|
163
151
|
}
|
|
164
152
|
|
|
165
153
|
namespace internal {
|
|
166
154
|
|
|
167
|
-
template<int Direction>
|
|
155
|
+
template <int Direction>
|
|
168
156
|
struct vectorwise_reverse_inplace_impl;
|
|
169
157
|
|
|
170
|
-
template<>
|
|
171
|
-
struct vectorwise_reverse_inplace_impl<Vertical>
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
.swap(xpr.bottomRows(fix<HalfAtCompileTime>(half)).colwise().reverse());
|
|
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());
|
|
180
167
|
}
|
|
181
168
|
};
|
|
182
169
|
|
|
183
|
-
template<>
|
|
184
|
-
struct vectorwise_reverse_inplace_impl<Horizontal>
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
.swap(xpr.rightCols(fix<HalfAtCompileTime>(half)).rowwise().reverse());
|
|
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());
|
|
193
179
|
}
|
|
194
180
|
};
|
|
195
181
|
|
|
196
|
-
}
|
|
182
|
+
} // end namespace internal
|
|
197
183
|
|
|
198
184
|
/** This is the "in place" version of VectorwiseOp::reverse: it reverses each column or row of \c *this.
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
template<typename ExpressionType, int Direction>
|
|
210
|
-
EIGEN_DEVICE_FUNC void VectorwiseOp<ExpressionType,Direction>::reverseInPlace()
|
|
211
|
-
{
|
|
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() {
|
|
212
197
|
internal::vectorwise_reverse_inplace_impl<Direction>::run(m_matrix);
|
|
213
198
|
}
|
|
214
199
|
|
|
215
|
-
}
|
|
200
|
+
} // end namespace Eigen
|
|
216
201
|
|
|
217
|
-
#endif
|
|
202
|
+
#endif // EIGEN_REVERSE_H
|