@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
|
@@ -10,377 +10,314 @@
|
|
|
10
10
|
#ifndef EIGEN_TRANSPOSITIONS_H
|
|
11
11
|
#define EIGEN_TRANSPOSITIONS_H
|
|
12
12
|
|
|
13
|
+
// IWYU pragma: private
|
|
14
|
+
#include "./InternalHeaderCheck.h"
|
|
15
|
+
|
|
13
16
|
namespace Eigen {
|
|
14
17
|
|
|
15
|
-
template<typename Derived>
|
|
16
|
-
class TranspositionsBase
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
template<typename MatrixType>
|
|
96
|
-
void applyBackwardToRows(MatrixType& mat) const
|
|
97
|
-
{
|
|
98
|
-
for(Index k=size()-1 ; k>=0 ; --k)
|
|
99
|
-
if(m_indices(k)!=k)
|
|
100
|
-
mat.row(k).swap(mat.row(m_indices(k)));
|
|
101
|
-
}
|
|
102
|
-
*/
|
|
103
|
-
|
|
104
|
-
/** \returns the inverse transformation */
|
|
105
|
-
inline Transpose<TranspositionsBase> inverse() const
|
|
106
|
-
{ return Transpose<TranspositionsBase>(derived()); }
|
|
107
|
-
|
|
108
|
-
/** \returns the tranpose transformation */
|
|
109
|
-
inline Transpose<TranspositionsBase> transpose() const
|
|
110
|
-
{ return Transpose<TranspositionsBase>(derived()); }
|
|
111
|
-
|
|
112
|
-
protected:
|
|
18
|
+
template <typename Derived>
|
|
19
|
+
class TranspositionsBase {
|
|
20
|
+
typedef internal::traits<Derived> Traits;
|
|
21
|
+
|
|
22
|
+
public:
|
|
23
|
+
typedef typename Traits::IndicesType IndicesType;
|
|
24
|
+
typedef typename IndicesType::Scalar StorageIndex;
|
|
25
|
+
typedef Eigen::Index Index; ///< \deprecated since Eigen 3.3
|
|
26
|
+
|
|
27
|
+
EIGEN_DEVICE_FUNC Derived& derived() { return *static_cast<Derived*>(this); }
|
|
28
|
+
EIGEN_DEVICE_FUNC const Derived& derived() const { return *static_cast<const Derived*>(this); }
|
|
29
|
+
|
|
30
|
+
/** Copies the \a other transpositions into \c *this */
|
|
31
|
+
template <typename OtherDerived>
|
|
32
|
+
Derived& operator=(const TranspositionsBase<OtherDerived>& other) {
|
|
33
|
+
indices() = other.indices();
|
|
34
|
+
return derived();
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/** \returns the number of transpositions */
|
|
38
|
+
EIGEN_DEVICE_FUNC Index size() const { return indices().size(); }
|
|
39
|
+
/** \returns the number of rows of the equivalent permutation matrix */
|
|
40
|
+
EIGEN_DEVICE_FUNC Index rows() const { return indices().size(); }
|
|
41
|
+
/** \returns the number of columns of the equivalent permutation matrix */
|
|
42
|
+
EIGEN_DEVICE_FUNC Index cols() const { return indices().size(); }
|
|
43
|
+
|
|
44
|
+
/** Direct access to the underlying index vector */
|
|
45
|
+
EIGEN_DEVICE_FUNC inline const StorageIndex& coeff(Index i) const { return indices().coeff(i); }
|
|
46
|
+
/** Direct access to the underlying index vector */
|
|
47
|
+
inline StorageIndex& coeffRef(Index i) { return indices().coeffRef(i); }
|
|
48
|
+
/** Direct access to the underlying index vector */
|
|
49
|
+
inline const StorageIndex& operator()(Index i) const { return indices()(i); }
|
|
50
|
+
/** Direct access to the underlying index vector */
|
|
51
|
+
inline StorageIndex& operator()(Index i) { return indices()(i); }
|
|
52
|
+
/** Direct access to the underlying index vector */
|
|
53
|
+
inline const StorageIndex& operator[](Index i) const { return indices()(i); }
|
|
54
|
+
/** Direct access to the underlying index vector */
|
|
55
|
+
inline StorageIndex& operator[](Index i) { return indices()(i); }
|
|
56
|
+
|
|
57
|
+
/** const version of indices(). */
|
|
58
|
+
EIGEN_DEVICE_FUNC const IndicesType& indices() const { return derived().indices(); }
|
|
59
|
+
/** \returns a reference to the stored array representing the transpositions. */
|
|
60
|
+
EIGEN_DEVICE_FUNC IndicesType& indices() { return derived().indices(); }
|
|
61
|
+
|
|
62
|
+
/** Resizes to given size. */
|
|
63
|
+
inline void resize(Index newSize) { indices().resize(newSize); }
|
|
64
|
+
|
|
65
|
+
/** Sets \c *this to represents an identity transformation */
|
|
66
|
+
void setIdentity() {
|
|
67
|
+
for (StorageIndex i = 0; i < indices().size(); ++i) coeffRef(i) = i;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// FIXME: do we want such methods ?
|
|
71
|
+
// might be useful when the target matrix expression is complex, e.g.:
|
|
72
|
+
// object.matrix().block(..,..,..,..) = trans * object.matrix().block(..,..,..,..);
|
|
73
|
+
/*
|
|
74
|
+
template<typename MatrixType>
|
|
75
|
+
void applyForwardToRows(MatrixType& mat) const
|
|
76
|
+
{
|
|
77
|
+
for(Index k=0 ; k<size() ; ++k)
|
|
78
|
+
if(m_indices(k)!=k)
|
|
79
|
+
mat.row(k).swap(mat.row(m_indices(k)));
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
template<typename MatrixType>
|
|
83
|
+
void applyBackwardToRows(MatrixType& mat) const
|
|
84
|
+
{
|
|
85
|
+
for(Index k=size()-1 ; k>=0 ; --k)
|
|
86
|
+
if(m_indices(k)!=k)
|
|
87
|
+
mat.row(k).swap(mat.row(m_indices(k)));
|
|
88
|
+
}
|
|
89
|
+
*/
|
|
90
|
+
|
|
91
|
+
/** \returns the inverse transformation */
|
|
92
|
+
inline Transpose<TranspositionsBase> inverse() const { return Transpose<TranspositionsBase>(derived()); }
|
|
93
|
+
|
|
94
|
+
/** \returns the transpose transformation */
|
|
95
|
+
inline Transpose<TranspositionsBase> transpose() const { return Transpose<TranspositionsBase>(derived()); }
|
|
96
|
+
|
|
97
|
+
protected:
|
|
113
98
|
};
|
|
114
99
|
|
|
115
100
|
namespace internal {
|
|
116
|
-
template<int SizeAtCompileTime, int MaxSizeAtCompileTime, typename
|
|
117
|
-
struct traits<Transpositions<SizeAtCompileTime,MaxSizeAtCompileTime,
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
typedef Matrix<_StorageIndex, SizeAtCompileTime, 1, 0, MaxSizeAtCompileTime, 1> IndicesType;
|
|
101
|
+
template <int SizeAtCompileTime, int MaxSizeAtCompileTime, typename StorageIndex_>
|
|
102
|
+
struct traits<Transpositions<SizeAtCompileTime, MaxSizeAtCompileTime, StorageIndex_> >
|
|
103
|
+
: traits<PermutationMatrix<SizeAtCompileTime, MaxSizeAtCompileTime, StorageIndex_> > {
|
|
104
|
+
typedef Matrix<StorageIndex_, SizeAtCompileTime, 1, 0, MaxSizeAtCompileTime, 1> IndicesType;
|
|
121
105
|
typedef TranspositionsStorage StorageKind;
|
|
122
106
|
};
|
|
123
|
-
}
|
|
107
|
+
} // namespace internal
|
|
124
108
|
|
|
125
109
|
/** \class Transpositions
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
EIGEN_DEVICE_FUNC
|
|
193
|
-
IndicesType& indices() { return m_indices; }
|
|
194
|
-
|
|
195
|
-
protected:
|
|
196
|
-
|
|
197
|
-
IndicesType m_indices;
|
|
110
|
+
* \ingroup Core_Module
|
|
111
|
+
*
|
|
112
|
+
* \brief Represents a sequence of transpositions (row/column interchange)
|
|
113
|
+
*
|
|
114
|
+
* \tparam SizeAtCompileTime the number of transpositions, or Dynamic
|
|
115
|
+
* \tparam MaxSizeAtCompileTime the maximum number of transpositions, or Dynamic. This optional parameter defaults to
|
|
116
|
+
* SizeAtCompileTime. Most of the time, you should not have to specify it.
|
|
117
|
+
*
|
|
118
|
+
* This class represents a permutation transformation as a sequence of \em n transpositions
|
|
119
|
+
* \f$[T_{n-1} \ldots T_{i} \ldots T_{0}]\f$. It is internally stored as a vector of integers \c indices.
|
|
120
|
+
* Each transposition \f$ T_{i} \f$ applied on the left of a matrix (\f$ T_{i} M\f$) interchanges
|
|
121
|
+
* the rows \c i and \c indices[i] of the matrix \c M.
|
|
122
|
+
* A transposition applied on the right (e.g., \f$ M T_{i}\f$) yields a column interchange.
|
|
123
|
+
*
|
|
124
|
+
* Compared to the class PermutationMatrix, such a sequence of transpositions is what is
|
|
125
|
+
* computed during a decomposition with pivoting, and it is faster when applying the permutation in-place.
|
|
126
|
+
*
|
|
127
|
+
* To apply a sequence of transpositions to a matrix, simply use the operator * as in the following example:
|
|
128
|
+
* \code
|
|
129
|
+
* Transpositions tr;
|
|
130
|
+
* MatrixXf mat;
|
|
131
|
+
* mat = tr * mat;
|
|
132
|
+
* \endcode
|
|
133
|
+
* In this example, we detect that the matrix appears on both side, and so the transpositions
|
|
134
|
+
* are applied in-place without any temporary or extra copy.
|
|
135
|
+
*
|
|
136
|
+
* \sa class PermutationMatrix
|
|
137
|
+
*/
|
|
138
|
+
|
|
139
|
+
template <int SizeAtCompileTime, int MaxSizeAtCompileTime, typename StorageIndex_>
|
|
140
|
+
class Transpositions
|
|
141
|
+
: public TranspositionsBase<Transpositions<SizeAtCompileTime, MaxSizeAtCompileTime, StorageIndex_> > {
|
|
142
|
+
typedef internal::traits<Transpositions> Traits;
|
|
143
|
+
|
|
144
|
+
public:
|
|
145
|
+
typedef TranspositionsBase<Transpositions> Base;
|
|
146
|
+
typedef typename Traits::IndicesType IndicesType;
|
|
147
|
+
typedef typename IndicesType::Scalar StorageIndex;
|
|
148
|
+
|
|
149
|
+
inline Transpositions() {}
|
|
150
|
+
|
|
151
|
+
/** Copy constructor. */
|
|
152
|
+
template <typename OtherDerived>
|
|
153
|
+
inline Transpositions(const TranspositionsBase<OtherDerived>& other) : m_indices(other.indices()) {}
|
|
154
|
+
|
|
155
|
+
/** Generic constructor from expression of the transposition indices. */
|
|
156
|
+
template <typename Other>
|
|
157
|
+
explicit inline Transpositions(const MatrixBase<Other>& indices) : m_indices(indices) {}
|
|
158
|
+
|
|
159
|
+
/** Copies the \a other transpositions into \c *this */
|
|
160
|
+
template <typename OtherDerived>
|
|
161
|
+
Transpositions& operator=(const TranspositionsBase<OtherDerived>& other) {
|
|
162
|
+
return Base::operator=(other);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/** Constructs an uninitialized permutation matrix of given size.
|
|
166
|
+
*/
|
|
167
|
+
inline Transpositions(Index size) : m_indices(size) {}
|
|
168
|
+
|
|
169
|
+
/** const version of indices(). */
|
|
170
|
+
EIGEN_DEVICE_FUNC const IndicesType& indices() const { return m_indices; }
|
|
171
|
+
/** \returns a reference to the stored array representing the transpositions. */
|
|
172
|
+
EIGEN_DEVICE_FUNC IndicesType& indices() { return m_indices; }
|
|
173
|
+
|
|
174
|
+
protected:
|
|
175
|
+
IndicesType m_indices;
|
|
198
176
|
};
|
|
199
177
|
|
|
200
|
-
|
|
201
178
|
namespace internal {
|
|
202
|
-
template<int SizeAtCompileTime, int MaxSizeAtCompileTime, typename
|
|
203
|
-
struct traits<Map<Transpositions<SizeAtCompileTime,MaxSizeAtCompileTime,
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
typedef
|
|
207
|
-
typedef _StorageIndex StorageIndex;
|
|
179
|
+
template <int SizeAtCompileTime, int MaxSizeAtCompileTime, typename StorageIndex_, int PacketAccess_>
|
|
180
|
+
struct traits<Map<Transpositions<SizeAtCompileTime, MaxSizeAtCompileTime, StorageIndex_>, PacketAccess_> >
|
|
181
|
+
: traits<PermutationMatrix<SizeAtCompileTime, MaxSizeAtCompileTime, StorageIndex_> > {
|
|
182
|
+
typedef Map<const Matrix<StorageIndex_, SizeAtCompileTime, 1, 0, MaxSizeAtCompileTime, 1>, PacketAccess_> IndicesType;
|
|
183
|
+
typedef StorageIndex_ StorageIndex;
|
|
208
184
|
typedef TranspositionsStorage StorageKind;
|
|
209
185
|
};
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
template<int SizeAtCompileTime, int MaxSizeAtCompileTime, typename
|
|
213
|
-
class Map<Transpositions<SizeAtCompileTime,MaxSizeAtCompileTime,
|
|
214
|
-
|
|
215
|
-
{
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
const IndicesType& indices() const { return m_indices; }
|
|
252
|
-
|
|
253
|
-
/** \returns a reference to the stored array representing the transpositions. */
|
|
254
|
-
EIGEN_DEVICE_FUNC
|
|
255
|
-
IndicesType& indices() { return m_indices; }
|
|
256
|
-
|
|
257
|
-
protected:
|
|
258
|
-
|
|
259
|
-
IndicesType m_indices;
|
|
186
|
+
} // namespace internal
|
|
187
|
+
|
|
188
|
+
template <int SizeAtCompileTime, int MaxSizeAtCompileTime, typename StorageIndex_, int PacketAccess>
|
|
189
|
+
class Map<Transpositions<SizeAtCompileTime, MaxSizeAtCompileTime, StorageIndex_>, PacketAccess>
|
|
190
|
+
: public TranspositionsBase<
|
|
191
|
+
Map<Transpositions<SizeAtCompileTime, MaxSizeAtCompileTime, StorageIndex_>, PacketAccess> > {
|
|
192
|
+
typedef internal::traits<Map> Traits;
|
|
193
|
+
|
|
194
|
+
public:
|
|
195
|
+
typedef TranspositionsBase<Map> Base;
|
|
196
|
+
typedef typename Traits::IndicesType IndicesType;
|
|
197
|
+
typedef typename IndicesType::Scalar StorageIndex;
|
|
198
|
+
|
|
199
|
+
explicit inline Map(const StorageIndex* indicesPtr) : m_indices(indicesPtr) {}
|
|
200
|
+
|
|
201
|
+
inline Map(const StorageIndex* indicesPtr, Index size) : m_indices(indicesPtr, size) {}
|
|
202
|
+
|
|
203
|
+
/** Copies the \a other transpositions into \c *this */
|
|
204
|
+
template <typename OtherDerived>
|
|
205
|
+
Map& operator=(const TranspositionsBase<OtherDerived>& other) {
|
|
206
|
+
return Base::operator=(other);
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
|
210
|
+
/** This is a special case of the templated operator=. Its purpose is to
|
|
211
|
+
* prevent a default operator= from hiding the templated operator=.
|
|
212
|
+
*/
|
|
213
|
+
Map& operator=(const Map& other) {
|
|
214
|
+
m_indices = other.m_indices;
|
|
215
|
+
return *this;
|
|
216
|
+
}
|
|
217
|
+
#endif
|
|
218
|
+
|
|
219
|
+
/** const version of indices(). */
|
|
220
|
+
EIGEN_DEVICE_FUNC const IndicesType& indices() const { return m_indices; }
|
|
221
|
+
|
|
222
|
+
/** \returns a reference to the stored array representing the transpositions. */
|
|
223
|
+
EIGEN_DEVICE_FUNC IndicesType& indices() { return m_indices; }
|
|
224
|
+
|
|
225
|
+
protected:
|
|
226
|
+
IndicesType m_indices;
|
|
260
227
|
};
|
|
261
228
|
|
|
262
229
|
namespace internal {
|
|
263
|
-
template<typename
|
|
264
|
-
struct traits<TranspositionsWrapper<
|
|
265
|
-
: traits<PermutationWrapper<_IndicesType> >
|
|
266
|
-
{
|
|
230
|
+
template <typename IndicesType_>
|
|
231
|
+
struct traits<TranspositionsWrapper<IndicesType_> > : traits<PermutationWrapper<IndicesType_> > {
|
|
267
232
|
typedef TranspositionsStorage StorageKind;
|
|
268
233
|
};
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
template<typename _IndicesType>
|
|
272
|
-
class TranspositionsWrapper
|
|
273
|
-
: public TranspositionsBase<TranspositionsWrapper<_IndicesType> >
|
|
274
|
-
{
|
|
275
|
-
typedef internal::traits<TranspositionsWrapper> Traits;
|
|
276
|
-
public:
|
|
234
|
+
} // namespace internal
|
|
277
235
|
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
236
|
+
template <typename IndicesType_>
|
|
237
|
+
class TranspositionsWrapper : public TranspositionsBase<TranspositionsWrapper<IndicesType_> > {
|
|
238
|
+
typedef internal::traits<TranspositionsWrapper> Traits;
|
|
281
239
|
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
240
|
+
public:
|
|
241
|
+
typedef TranspositionsBase<TranspositionsWrapper> Base;
|
|
242
|
+
typedef typename Traits::IndicesType IndicesType;
|
|
243
|
+
typedef typename IndicesType::Scalar StorageIndex;
|
|
285
244
|
|
|
286
|
-
|
|
287
|
-
template<typename OtherDerived>
|
|
288
|
-
TranspositionsWrapper& operator=(const TranspositionsBase<OtherDerived>& other)
|
|
289
|
-
{
|
|
290
|
-
return Base::operator=(other);
|
|
291
|
-
}
|
|
245
|
+
explicit inline TranspositionsWrapper(IndicesType& indices) : m_indices(indices) {}
|
|
292
246
|
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
247
|
+
/** Copies the \a other transpositions into \c *this */
|
|
248
|
+
template <typename OtherDerived>
|
|
249
|
+
TranspositionsWrapper& operator=(const TranspositionsBase<OtherDerived>& other) {
|
|
250
|
+
return Base::operator=(other);
|
|
251
|
+
}
|
|
296
252
|
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
IndicesType& indices() { return m_indices; }
|
|
253
|
+
/** const version of indices(). */
|
|
254
|
+
EIGEN_DEVICE_FUNC const IndicesType& indices() const { return m_indices; }
|
|
300
255
|
|
|
301
|
-
|
|
256
|
+
/** \returns a reference to the stored array representing the transpositions. */
|
|
257
|
+
EIGEN_DEVICE_FUNC IndicesType& indices() { return m_indices; }
|
|
302
258
|
|
|
303
|
-
|
|
259
|
+
protected:
|
|
260
|
+
typename IndicesType::Nested m_indices;
|
|
304
261
|
};
|
|
305
262
|
|
|
306
|
-
|
|
307
|
-
|
|
308
263
|
/** \returns the \a matrix with the \a transpositions applied to the columns.
|
|
309
|
-
|
|
310
|
-
template<typename MatrixDerived, typename TranspositionsDerived>
|
|
311
|
-
EIGEN_DEVICE_FUNC
|
|
312
|
-
const
|
|
313
|
-
|
|
314
|
-
const TranspositionsBase<TranspositionsDerived>& transpositions)
|
|
315
|
-
{
|
|
316
|
-
return Product<MatrixDerived, TranspositionsDerived, AliasFreeProduct>
|
|
317
|
-
(matrix.derived(), transpositions.derived());
|
|
264
|
+
*/
|
|
265
|
+
template <typename MatrixDerived, typename TranspositionsDerived>
|
|
266
|
+
EIGEN_DEVICE_FUNC const Product<MatrixDerived, TranspositionsDerived, AliasFreeProduct> operator*(
|
|
267
|
+
const MatrixBase<MatrixDerived>& matrix, const TranspositionsBase<TranspositionsDerived>& transpositions) {
|
|
268
|
+
return Product<MatrixDerived, TranspositionsDerived, AliasFreeProduct>(matrix.derived(), transpositions.derived());
|
|
318
269
|
}
|
|
319
270
|
|
|
320
271
|
/** \returns the \a matrix with the \a transpositions applied to the rows.
|
|
321
|
-
|
|
322
|
-
template<typename TranspositionsDerived, typename MatrixDerived>
|
|
323
|
-
EIGEN_DEVICE_FUNC
|
|
324
|
-
const
|
|
325
|
-
|
|
326
|
-
const MatrixBase<MatrixDerived>& matrix)
|
|
327
|
-
{
|
|
328
|
-
return Product<TranspositionsDerived, MatrixDerived, AliasFreeProduct>
|
|
329
|
-
(transpositions.derived(), matrix.derived());
|
|
272
|
+
*/
|
|
273
|
+
template <typename TranspositionsDerived, typename MatrixDerived>
|
|
274
|
+
EIGEN_DEVICE_FUNC const Product<TranspositionsDerived, MatrixDerived, AliasFreeProduct> operator*(
|
|
275
|
+
const TranspositionsBase<TranspositionsDerived>& transpositions, const MatrixBase<MatrixDerived>& matrix) {
|
|
276
|
+
return Product<TranspositionsDerived, MatrixDerived, AliasFreeProduct>(transpositions.derived(), matrix.derived());
|
|
330
277
|
}
|
|
331
278
|
|
|
332
279
|
// Template partial specialization for transposed/inverse transpositions
|
|
333
280
|
|
|
334
281
|
namespace internal {
|
|
335
282
|
|
|
336
|
-
template<typename Derived>
|
|
337
|
-
struct traits<Transpose<TranspositionsBase<Derived> > >
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
operator*(const MatrixBase<OtherDerived>& matrix) const
|
|
373
|
-
{
|
|
374
|
-
return Product<Transpose, OtherDerived, AliasFreeProduct>(*this, matrix.derived());
|
|
375
|
-
}
|
|
376
|
-
|
|
377
|
-
EIGEN_DEVICE_FUNC
|
|
378
|
-
const TranspositionType& nestedExpression() const { return m_transpositions; }
|
|
379
|
-
|
|
380
|
-
protected:
|
|
381
|
-
const TranspositionType& m_transpositions;
|
|
283
|
+
template <typename Derived>
|
|
284
|
+
struct traits<Transpose<TranspositionsBase<Derived> > > : traits<Derived> {};
|
|
285
|
+
|
|
286
|
+
} // end namespace internal
|
|
287
|
+
|
|
288
|
+
template <typename TranspositionsDerived>
|
|
289
|
+
class Transpose<TranspositionsBase<TranspositionsDerived> > {
|
|
290
|
+
typedef TranspositionsDerived TranspositionType;
|
|
291
|
+
typedef typename TranspositionType::IndicesType IndicesType;
|
|
292
|
+
|
|
293
|
+
public:
|
|
294
|
+
explicit Transpose(const TranspositionType& t) : m_transpositions(t) {}
|
|
295
|
+
|
|
296
|
+
EIGEN_DEVICE_FUNC constexpr Index size() const noexcept { return m_transpositions.size(); }
|
|
297
|
+
EIGEN_DEVICE_FUNC constexpr Index rows() const noexcept { return m_transpositions.size(); }
|
|
298
|
+
EIGEN_DEVICE_FUNC constexpr Index cols() const noexcept { return m_transpositions.size(); }
|
|
299
|
+
|
|
300
|
+
/** \returns the \a matrix with the inverse transpositions applied to the columns.
|
|
301
|
+
*/
|
|
302
|
+
template <typename OtherDerived>
|
|
303
|
+
friend const Product<OtherDerived, Transpose, AliasFreeProduct> operator*(const MatrixBase<OtherDerived>& matrix,
|
|
304
|
+
const Transpose& trt) {
|
|
305
|
+
return Product<OtherDerived, Transpose, AliasFreeProduct>(matrix.derived(), trt);
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
/** \returns the \a matrix with the inverse transpositions applied to the rows.
|
|
309
|
+
*/
|
|
310
|
+
template <typename OtherDerived>
|
|
311
|
+
const Product<Transpose, OtherDerived, AliasFreeProduct> operator*(const MatrixBase<OtherDerived>& matrix) const {
|
|
312
|
+
return Product<Transpose, OtherDerived, AliasFreeProduct>(*this, matrix.derived());
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
EIGEN_DEVICE_FUNC const TranspositionType& nestedExpression() const { return m_transpositions; }
|
|
316
|
+
|
|
317
|
+
protected:
|
|
318
|
+
const TranspositionType& m_transpositions;
|
|
382
319
|
};
|
|
383
320
|
|
|
384
|
-
}
|
|
321
|
+
} // end namespace Eigen
|
|
385
322
|
|
|
386
|
-
#endif
|
|
323
|
+
#endif // EIGEN_TRANSPOSITIONS_H
|