@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,75 +10,69 @@
|
|
|
10
10
|
#ifndef EIGEN_COMPLETEORTHOGONALDECOMPOSITION_H
|
|
11
11
|
#define EIGEN_COMPLETEORTHOGONALDECOMPOSITION_H
|
|
12
12
|
|
|
13
|
+
// IWYU pragma: private
|
|
14
|
+
#include "./InternalHeaderCheck.h"
|
|
15
|
+
|
|
13
16
|
namespace Eigen {
|
|
14
17
|
|
|
15
18
|
namespace internal {
|
|
16
|
-
template <typename
|
|
17
|
-
struct traits<CompleteOrthogonalDecomposition<
|
|
18
|
-
: traits<_MatrixType> {
|
|
19
|
+
template <typename MatrixType_, typename PermutationIndex_>
|
|
20
|
+
struct traits<CompleteOrthogonalDecomposition<MatrixType_, PermutationIndex_>> : traits<MatrixType_> {
|
|
19
21
|
typedef MatrixXpr XprKind;
|
|
20
22
|
typedef SolverStorage StorageKind;
|
|
21
|
-
typedef
|
|
23
|
+
typedef PermutationIndex_ PermutationIndex;
|
|
22
24
|
enum { Flags = 0 };
|
|
23
25
|
};
|
|
24
26
|
|
|
25
27
|
} // end namespace internal
|
|
26
28
|
|
|
27
29
|
/** \ingroup QR_Module
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
template <typename
|
|
51
|
-
|
|
52
|
-
{
|
|
30
|
+
*
|
|
31
|
+
* \class CompleteOrthogonalDecomposition
|
|
32
|
+
*
|
|
33
|
+
* \brief Complete orthogonal decomposition (COD) of a matrix.
|
|
34
|
+
*
|
|
35
|
+
* \tparam MatrixType_ the type of the matrix of which we are computing the COD.
|
|
36
|
+
*
|
|
37
|
+
* This class performs a rank-revealing complete orthogonal decomposition of a
|
|
38
|
+
* matrix \b A into matrices \b P, \b Q, \b T, and \b Z such that
|
|
39
|
+
* \f[
|
|
40
|
+
* \mathbf{A} \, \mathbf{P} = \mathbf{Q} \,
|
|
41
|
+
* \begin{bmatrix} \mathbf{T} & \mathbf{0} \\
|
|
42
|
+
* \mathbf{0} & \mathbf{0} \end{bmatrix} \, \mathbf{Z}
|
|
43
|
+
* \f]
|
|
44
|
+
* by using Householder transformations. Here, \b P is a permutation matrix,
|
|
45
|
+
* \b Q and \b Z are unitary matrices and \b T an upper triangular matrix of
|
|
46
|
+
* size rank-by-rank. \b A may be rank deficient.
|
|
47
|
+
*
|
|
48
|
+
* This class supports the \link InplaceDecomposition inplace decomposition \endlink mechanism.
|
|
49
|
+
*
|
|
50
|
+
* \sa MatrixBase::completeOrthogonalDecomposition()
|
|
51
|
+
*/
|
|
52
|
+
template <typename MatrixType_, typename PermutationIndex_>
|
|
53
|
+
class CompleteOrthogonalDecomposition
|
|
54
|
+
: public SolverBase<CompleteOrthogonalDecomposition<MatrixType_, PermutationIndex_>> {
|
|
53
55
|
public:
|
|
54
|
-
typedef
|
|
56
|
+
typedef MatrixType_ MatrixType;
|
|
55
57
|
typedef SolverBase<CompleteOrthogonalDecomposition> Base;
|
|
56
58
|
|
|
57
|
-
template<typename Derived>
|
|
59
|
+
template <typename Derived>
|
|
58
60
|
friend struct internal::solve_assertion;
|
|
59
|
-
|
|
61
|
+
typedef PermutationIndex_ PermutationIndex;
|
|
60
62
|
EIGEN_GENERIC_PUBLIC_INTERFACE(CompleteOrthogonalDecomposition)
|
|
61
63
|
enum {
|
|
62
64
|
MaxRowsAtCompileTime = MatrixType::MaxRowsAtCompileTime,
|
|
63
65
|
MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime
|
|
64
66
|
};
|
|
65
67
|
typedef typename internal::plain_diag_type<MatrixType>::type HCoeffsType;
|
|
66
|
-
typedef PermutationMatrix<ColsAtCompileTime, MaxColsAtCompileTime>
|
|
67
|
-
|
|
68
|
-
typedef typename internal::plain_row_type<MatrixType, Index>::type
|
|
69
|
-
IntRowVectorType;
|
|
68
|
+
typedef PermutationMatrix<ColsAtCompileTime, MaxColsAtCompileTime, PermutationIndex> PermutationType;
|
|
69
|
+
typedef typename internal::plain_row_type<MatrixType, Index>::type IntRowVectorType;
|
|
70
70
|
typedef typename internal::plain_row_type<MatrixType>::type RowVectorType;
|
|
71
|
-
typedef typename internal::plain_row_type<MatrixType, RealScalar>::type
|
|
72
|
-
|
|
73
|
-
typedef HouseholderSequence<
|
|
74
|
-
MatrixType, typename internal::remove_all<
|
|
75
|
-
typename HCoeffsType::ConjugateReturnType>::type>
|
|
71
|
+
typedef typename internal::plain_row_type<MatrixType, RealScalar>::type RealRowVectorType;
|
|
72
|
+
typedef HouseholderSequence<MatrixType, internal::remove_all_t<typename HCoeffsType::ConjugateReturnType>>
|
|
76
73
|
HouseholderSequenceType;
|
|
77
74
|
typedef typename MatrixType::PlainObject PlainObject;
|
|
78
75
|
|
|
79
|
-
private:
|
|
80
|
-
typedef typename PermutationType::Index PermIndexType;
|
|
81
|
-
|
|
82
76
|
public:
|
|
83
77
|
/**
|
|
84
78
|
* \brief Default Constructor.
|
|
@@ -118,27 +112,24 @@ template <typename _MatrixType> class CompleteOrthogonalDecomposition
|
|
|
118
112
|
explicit CompleteOrthogonalDecomposition(const EigenBase<InputType>& matrix)
|
|
119
113
|
: m_cpqr(matrix.rows(), matrix.cols()),
|
|
120
114
|
m_zCoeffs((std::min)(matrix.rows(), matrix.cols())),
|
|
121
|
-
m_temp(matrix.cols())
|
|
122
|
-
{
|
|
115
|
+
m_temp(matrix.cols()) {
|
|
123
116
|
compute(matrix.derived());
|
|
124
117
|
}
|
|
125
118
|
|
|
126
119
|
/** \brief Constructs a complete orthogonal decomposition from a given matrix
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
120
|
+
*
|
|
121
|
+
* This overloaded constructor is provided for \link InplaceDecomposition inplace decomposition \endlink when \c
|
|
122
|
+
* MatrixType is a Eigen::Ref.
|
|
123
|
+
*
|
|
124
|
+
* \sa CompleteOrthogonalDecomposition(const EigenBase&)
|
|
125
|
+
*/
|
|
126
|
+
template <typename InputType>
|
|
133
127
|
explicit CompleteOrthogonalDecomposition(EigenBase<InputType>& matrix)
|
|
134
|
-
|
|
135
|
-
m_zCoeffs((std::min)(matrix.rows(), matrix.cols())),
|
|
136
|
-
m_temp(matrix.cols())
|
|
137
|
-
{
|
|
128
|
+
: m_cpqr(matrix.derived()), m_zCoeffs((std::min)(matrix.rows(), matrix.cols())), m_temp(matrix.cols()) {
|
|
138
129
|
computeInPlace();
|
|
139
|
-
}
|
|
130
|
+
}
|
|
140
131
|
|
|
141
|
-
|
|
132
|
+
#ifdef EIGEN_PARSED_BY_DOXYGEN
|
|
142
133
|
/** This method computes the minimum-norm solution X to a least squares
|
|
143
134
|
* problem \f[\mathrm{minimize} \|A X - B\|, \f] where \b A is the matrix of
|
|
144
135
|
* which \c *this is the complete orthogonal decomposition.
|
|
@@ -149,9 +140,8 @@ template <typename _MatrixType> class CompleteOrthogonalDecomposition
|
|
|
149
140
|
*
|
|
150
141
|
*/
|
|
151
142
|
template <typename Rhs>
|
|
152
|
-
inline const Solve<CompleteOrthogonalDecomposition, Rhs> solve(
|
|
153
|
-
|
|
154
|
-
#endif
|
|
143
|
+
inline const Solve<CompleteOrthogonalDecomposition, Rhs> solve(const MatrixBase<Rhs>& b) const;
|
|
144
|
+
#endif
|
|
155
145
|
|
|
156
146
|
HouseholderSequenceType householderQ(void) const;
|
|
157
147
|
HouseholderSequenceType matrixQ(void) const { return m_cpqr.householderQ(); }
|
|
@@ -177,7 +167,7 @@ template <typename _MatrixType> class CompleteOrthogonalDecomposition
|
|
|
177
167
|
* \code matrixT().template triangularView<Upper>() \endcode
|
|
178
168
|
* For rank-deficient matrices, use
|
|
179
169
|
* \code
|
|
180
|
-
*
|
|
170
|
+
* matrixT().topLeftCorner(rank(), rank()).template triangularView<Upper>()
|
|
181
171
|
* \endcode
|
|
182
172
|
*/
|
|
183
173
|
const MatrixType& matrixT() const { return m_cpqr.matrixQR(); }
|
|
@@ -191,9 +181,22 @@ template <typename _MatrixType> class CompleteOrthogonalDecomposition
|
|
|
191
181
|
}
|
|
192
182
|
|
|
193
183
|
/** \returns a const reference to the column permutation matrix */
|
|
194
|
-
const PermutationType& colsPermutation() const {
|
|
195
|
-
|
|
196
|
-
|
|
184
|
+
const PermutationType& colsPermutation() const { return m_cpqr.colsPermutation(); }
|
|
185
|
+
|
|
186
|
+
/** \returns the determinant of the matrix of which
|
|
187
|
+
* *this is the complete orthogonal decomposition. It has only linear
|
|
188
|
+
* complexity (that is, O(n) where n is the dimension of the square matrix)
|
|
189
|
+
* as the complete orthogonal decomposition has already been computed.
|
|
190
|
+
*
|
|
191
|
+
* \note This is only for square matrices.
|
|
192
|
+
*
|
|
193
|
+
* \warning a determinant can be very big or small, so for matrices
|
|
194
|
+
* of large enough dimension, there is a risk of overflow/underflow.
|
|
195
|
+
* One way to work around that is to use logAbsDeterminant() instead.
|
|
196
|
+
*
|
|
197
|
+
* \sa absDeterminant(), logAbsDeterminant(), MatrixBase::determinant()
|
|
198
|
+
*/
|
|
199
|
+
typename MatrixType::Scalar determinant() const;
|
|
197
200
|
|
|
198
201
|
/** \returns the absolute value of the determinant of the matrix of which
|
|
199
202
|
* *this is the complete orthogonal decomposition. It has only linear
|
|
@@ -206,7 +209,7 @@ template <typename _MatrixType> class CompleteOrthogonalDecomposition
|
|
|
206
209
|
* of large enough dimension, there is a risk of overflow/underflow.
|
|
207
210
|
* One way to work around that is to use logAbsDeterminant() instead.
|
|
208
211
|
*
|
|
209
|
-
* \sa logAbsDeterminant(), MatrixBase::determinant()
|
|
212
|
+
* \sa determinant(), logAbsDeterminant(), MatrixBase::determinant()
|
|
210
213
|
*/
|
|
211
214
|
typename MatrixType::RealScalar absDeterminant() const;
|
|
212
215
|
|
|
@@ -221,10 +224,25 @@ template <typename _MatrixType> class CompleteOrthogonalDecomposition
|
|
|
221
224
|
* \note This method is useful to work around the risk of overflow/underflow
|
|
222
225
|
* that's inherent to determinant computation.
|
|
223
226
|
*
|
|
224
|
-
* \sa absDeterminant(), MatrixBase::determinant()
|
|
227
|
+
* \sa determinant(), absDeterminant(), MatrixBase::determinant()
|
|
225
228
|
*/
|
|
226
229
|
typename MatrixType::RealScalar logAbsDeterminant() const;
|
|
227
230
|
|
|
231
|
+
/** \returns the sign of the determinant of the
|
|
232
|
+
* matrix of which *this is the complete orthogonal decomposition. It has
|
|
233
|
+
* only linear complexity (that is, O(n) where n is the dimension of the
|
|
234
|
+
* square matrix) as the complete orthogonal decomposition has already been
|
|
235
|
+
* computed.
|
|
236
|
+
*
|
|
237
|
+
* \note This is only for square matrices.
|
|
238
|
+
*
|
|
239
|
+
* \note This method is useful to work around the risk of overflow/underflow
|
|
240
|
+
* that's inherent to determinant computation.
|
|
241
|
+
*
|
|
242
|
+
* \sa determinant(), absDeterminant(), logAbsDeterminant(), MatrixBase::determinant()
|
|
243
|
+
*/
|
|
244
|
+
typename MatrixType::Scalar signDeterminant() const;
|
|
245
|
+
|
|
228
246
|
/** \returns the rank of the matrix of which *this is the complete orthogonal
|
|
229
247
|
* decomposition.
|
|
230
248
|
*
|
|
@@ -275,8 +293,7 @@ template <typename _MatrixType> class CompleteOrthogonalDecomposition
|
|
|
275
293
|
* \warning: Do not compute \c this->pseudoInverse()*rhs to solve a linear systems.
|
|
276
294
|
* It is more efficient and numerically stable to call \c this->solve(rhs).
|
|
277
295
|
*/
|
|
278
|
-
inline const Inverse<CompleteOrthogonalDecomposition> pseudoInverse() const
|
|
279
|
-
{
|
|
296
|
+
inline const Inverse<CompleteOrthogonalDecomposition> pseudoInverse() const {
|
|
280
297
|
eigen_assert(m_cpqr.m_isInitialized && "CompleteOrthogonalDecomposition is not initialized.");
|
|
281
298
|
return Inverse<CompleteOrthogonalDecomposition>(*this);
|
|
282
299
|
}
|
|
@@ -372,26 +389,25 @@ template <typename _MatrixType> class CompleteOrthogonalDecomposition
|
|
|
372
389
|
template <typename RhsType, typename DstType>
|
|
373
390
|
void _solve_impl(const RhsType& rhs, DstType& dst) const;
|
|
374
391
|
|
|
375
|
-
template<bool Conjugate, typename RhsType, typename DstType>
|
|
376
|
-
void _solve_impl_transposed(const RhsType
|
|
392
|
+
template <bool Conjugate, typename RhsType, typename DstType>
|
|
393
|
+
void _solve_impl_transposed(const RhsType& rhs, DstType& dst) const;
|
|
377
394
|
#endif
|
|
378
395
|
|
|
379
396
|
protected:
|
|
380
|
-
|
|
381
|
-
EIGEN_STATIC_ASSERT_NON_INTEGER(Scalar);
|
|
382
|
-
}
|
|
397
|
+
EIGEN_STATIC_ASSERT_NON_INTEGER(Scalar)
|
|
383
398
|
|
|
384
|
-
template<bool Transpose_, typename Rhs>
|
|
399
|
+
template <bool Transpose_, typename Rhs>
|
|
385
400
|
void _check_solve_assertion(const Rhs& b) const {
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
401
|
+
EIGEN_ONLY_USED_FOR_DEBUG(b);
|
|
402
|
+
eigen_assert(m_cpqr.m_isInitialized && "CompleteOrthogonalDecomposition is not initialized.");
|
|
403
|
+
eigen_assert((Transpose_ ? derived().cols() : derived().rows()) == b.rows() &&
|
|
404
|
+
"CompleteOrthogonalDecomposition::solve(): invalid number of rows of the right hand side matrix b");
|
|
389
405
|
}
|
|
390
406
|
|
|
391
407
|
void computeInPlace();
|
|
392
408
|
|
|
393
409
|
/** Overwrites \b rhs with \f$ \mathbf{Z} * \mathbf{rhs} \f$ or
|
|
394
|
-
* \f$ \mathbf{\overline Z} * \mathbf{rhs} \f$ if \c Conjugate
|
|
410
|
+
* \f$ \mathbf{\overline Z} * \mathbf{rhs} \f$ if \c Conjugate
|
|
395
411
|
* is set to \c true.
|
|
396
412
|
*/
|
|
397
413
|
template <bool Conjugate, typename Rhs>
|
|
@@ -402,23 +418,32 @@ template <typename _MatrixType> class CompleteOrthogonalDecomposition
|
|
|
402
418
|
template <typename Rhs>
|
|
403
419
|
void applyZAdjointOnTheLeftInPlace(Rhs& rhs) const;
|
|
404
420
|
|
|
405
|
-
ColPivHouseholderQR<MatrixType> m_cpqr;
|
|
421
|
+
ColPivHouseholderQR<MatrixType, PermutationIndex> m_cpqr;
|
|
406
422
|
HCoeffsType m_zCoeffs;
|
|
407
423
|
RowVectorType m_temp;
|
|
408
424
|
};
|
|
409
425
|
|
|
410
|
-
template <typename MatrixType>
|
|
411
|
-
typename MatrixType::
|
|
412
|
-
|
|
426
|
+
template <typename MatrixType, typename PermutationIndex>
|
|
427
|
+
typename MatrixType::Scalar CompleteOrthogonalDecomposition<MatrixType, PermutationIndex>::determinant() const {
|
|
428
|
+
return m_cpqr.determinant();
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
template <typename MatrixType, typename PermutationIndex>
|
|
432
|
+
typename MatrixType::RealScalar CompleteOrthogonalDecomposition<MatrixType, PermutationIndex>::absDeterminant() const {
|
|
413
433
|
return m_cpqr.absDeterminant();
|
|
414
434
|
}
|
|
415
435
|
|
|
416
|
-
template <typename MatrixType>
|
|
417
|
-
typename MatrixType::RealScalar
|
|
418
|
-
|
|
436
|
+
template <typename MatrixType, typename PermutationIndex>
|
|
437
|
+
typename MatrixType::RealScalar CompleteOrthogonalDecomposition<MatrixType, PermutationIndex>::logAbsDeterminant()
|
|
438
|
+
const {
|
|
419
439
|
return m_cpqr.logAbsDeterminant();
|
|
420
440
|
}
|
|
421
441
|
|
|
442
|
+
template <typename MatrixType, typename PermutationIndex>
|
|
443
|
+
typename MatrixType::Scalar CompleteOrthogonalDecomposition<MatrixType, PermutationIndex>::signDeterminant() const {
|
|
444
|
+
return m_cpqr.signDeterminant();
|
|
445
|
+
}
|
|
446
|
+
|
|
422
447
|
/** Performs the complete orthogonal decomposition of the given matrix \a
|
|
423
448
|
* matrix. The result of the factorization is stored into \c *this, and a
|
|
424
449
|
* reference to \c *this is returned.
|
|
@@ -426,13 +451,9 @@ CompleteOrthogonalDecomposition<MatrixType>::logAbsDeterminant() const {
|
|
|
426
451
|
* \sa class CompleteOrthogonalDecomposition,
|
|
427
452
|
* CompleteOrthogonalDecomposition(const MatrixType&)
|
|
428
453
|
*/
|
|
429
|
-
template <typename MatrixType>
|
|
430
|
-
void CompleteOrthogonalDecomposition<MatrixType>::computeInPlace()
|
|
431
|
-
|
|
432
|
-
check_template_parameters();
|
|
433
|
-
|
|
434
|
-
// the column permutation is stored as int indices, so just to be sure:
|
|
435
|
-
eigen_assert(m_cpqr.cols() <= NumTraits<int>::highest());
|
|
454
|
+
template <typename MatrixType, typename PermutationIndex>
|
|
455
|
+
void CompleteOrthogonalDecomposition<MatrixType, PermutationIndex>::computeInPlace() {
|
|
456
|
+
eigen_assert(m_cpqr.cols() <= NumTraits<PermutationIndex>::highest());
|
|
436
457
|
|
|
437
458
|
const Index rank = m_cpqr.rank();
|
|
438
459
|
const Index cols = m_cpqr.cols();
|
|
@@ -457,59 +478,50 @@ void CompleteOrthogonalDecomposition<MatrixType>::computeInPlace()
|
|
|
457
478
|
// Given the API for Householder reflectors, it is more convenient if
|
|
458
479
|
// we swap the leading parts of columns k and r-1 (zero-based) to form
|
|
459
480
|
// the matrix X_k = [X(0:k, k), X(0:k, r:n)]
|
|
460
|
-
m_cpqr.m_qr.col(k).head(k + 1).swap(
|
|
461
|
-
m_cpqr.m_qr.col(rank - 1).head(k + 1));
|
|
481
|
+
m_cpqr.m_qr.col(k).head(k + 1).swap(m_cpqr.m_qr.col(rank - 1).head(k + 1));
|
|
462
482
|
}
|
|
463
483
|
// Construct Householder reflector Z(k) to zero out the last row of X_k,
|
|
464
484
|
// i.e. choose Z(k) such that
|
|
465
485
|
// [X(k, k), X(k, r:n)] * Z(k) = [beta, 0, .., 0].
|
|
466
486
|
RealScalar beta;
|
|
467
|
-
m_cpqr.m_qr.row(k)
|
|
468
|
-
.tail(cols - rank + 1)
|
|
469
|
-
.makeHouseholderInPlace(m_zCoeffs(k), beta);
|
|
487
|
+
m_cpqr.m_qr.row(k).tail(cols - rank + 1).makeHouseholderInPlace(m_zCoeffs(k), beta);
|
|
470
488
|
m_cpqr.m_qr(k, rank - 1) = beta;
|
|
471
489
|
if (k > 0) {
|
|
472
490
|
// Apply Z(k) to the first k rows of X_k
|
|
473
491
|
m_cpqr.m_qr.topRightCorner(k, cols - rank + 1)
|
|
474
|
-
.applyHouseholderOnTheRight(
|
|
475
|
-
m_cpqr.m_qr.row(k).tail(cols - rank).adjoint(), m_zCoeffs(k),
|
|
476
|
-
&m_temp(0));
|
|
492
|
+
.applyHouseholderOnTheRight(m_cpqr.m_qr.row(k).tail(cols - rank).adjoint(), m_zCoeffs(k), &m_temp(0));
|
|
477
493
|
}
|
|
478
494
|
if (k != rank - 1) {
|
|
479
495
|
// Swap X(0:k,k) back to its proper location.
|
|
480
|
-
m_cpqr.m_qr.col(k).head(k + 1).swap(
|
|
481
|
-
m_cpqr.m_qr.col(rank - 1).head(k + 1));
|
|
496
|
+
m_cpqr.m_qr.col(k).head(k + 1).swap(m_cpqr.m_qr.col(rank - 1).head(k + 1));
|
|
482
497
|
}
|
|
483
498
|
}
|
|
484
499
|
}
|
|
485
500
|
}
|
|
486
501
|
|
|
487
|
-
template <typename MatrixType>
|
|
502
|
+
template <typename MatrixType, typename PermutationIndex>
|
|
488
503
|
template <bool Conjugate, typename Rhs>
|
|
489
|
-
void CompleteOrthogonalDecomposition<MatrixType>::applyZOnTheLeftInPlace(
|
|
490
|
-
Rhs& rhs) const {
|
|
504
|
+
void CompleteOrthogonalDecomposition<MatrixType, PermutationIndex>::applyZOnTheLeftInPlace(Rhs& rhs) const {
|
|
491
505
|
const Index cols = this->cols();
|
|
492
506
|
const Index nrhs = rhs.cols();
|
|
493
507
|
const Index rank = this->rank();
|
|
494
508
|
Matrix<typename Rhs::Scalar, Dynamic, 1> temp((std::max)(cols, nrhs));
|
|
495
|
-
for (Index k = rank-1; k >= 0; --k) {
|
|
509
|
+
for (Index k = rank - 1; k >= 0; --k) {
|
|
496
510
|
if (k != rank - 1) {
|
|
497
511
|
rhs.row(k).swap(rhs.row(rank - 1));
|
|
498
512
|
}
|
|
499
513
|
rhs.middleRows(rank - 1, cols - rank + 1)
|
|
500
|
-
.applyHouseholderOnTheLeft(
|
|
501
|
-
|
|
502
|
-
&temp(0));
|
|
514
|
+
.applyHouseholderOnTheLeft(matrixQTZ().row(k).tail(cols - rank).transpose().template conjugateIf<!Conjugate>(),
|
|
515
|
+
zCoeffs().template conjugateIf<Conjugate>()(k), &temp(0));
|
|
503
516
|
if (k != rank - 1) {
|
|
504
517
|
rhs.row(k).swap(rhs.row(rank - 1));
|
|
505
518
|
}
|
|
506
519
|
}
|
|
507
520
|
}
|
|
508
521
|
|
|
509
|
-
template <typename MatrixType>
|
|
522
|
+
template <typename MatrixType, typename PermutationIndex>
|
|
510
523
|
template <typename Rhs>
|
|
511
|
-
void CompleteOrthogonalDecomposition<MatrixType>::applyZAdjointOnTheLeftInPlace(
|
|
512
|
-
Rhs& rhs) const {
|
|
524
|
+
void CompleteOrthogonalDecomposition<MatrixType, PermutationIndex>::applyZAdjointOnTheLeftInPlace(Rhs& rhs) const {
|
|
513
525
|
const Index cols = this->cols();
|
|
514
526
|
const Index nrhs = rhs.cols();
|
|
515
527
|
const Index rank = this->rank();
|
|
@@ -519,9 +531,7 @@ void CompleteOrthogonalDecomposition<MatrixType>::applyZAdjointOnTheLeftInPlace(
|
|
|
519
531
|
rhs.row(k).swap(rhs.row(rank - 1));
|
|
520
532
|
}
|
|
521
533
|
rhs.middleRows(rank - 1, cols - rank + 1)
|
|
522
|
-
.applyHouseholderOnTheLeft(
|
|
523
|
-
matrixQTZ().row(k).tail(cols - rank).adjoint(), zCoeffs()(k),
|
|
524
|
-
&temp(0));
|
|
534
|
+
.applyHouseholderOnTheLeft(matrixQTZ().row(k).tail(cols - rank).adjoint(), zCoeffs()(k), &temp(0));
|
|
525
535
|
if (k != rank - 1) {
|
|
526
536
|
rhs.row(k).swap(rhs.row(rank - 1));
|
|
527
537
|
}
|
|
@@ -529,10 +539,10 @@ void CompleteOrthogonalDecomposition<MatrixType>::applyZAdjointOnTheLeftInPlace(
|
|
|
529
539
|
}
|
|
530
540
|
|
|
531
541
|
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
|
532
|
-
template <typename
|
|
542
|
+
template <typename MatrixType_, typename PermutationIndex_>
|
|
533
543
|
template <typename RhsType, typename DstType>
|
|
534
|
-
void CompleteOrthogonalDecomposition<
|
|
535
|
-
|
|
544
|
+
void CompleteOrthogonalDecomposition<MatrixType_, PermutationIndex_>::_solve_impl(const RhsType& rhs,
|
|
545
|
+
DstType& dst) const {
|
|
536
546
|
const Index rank = this->rank();
|
|
537
547
|
if (rank == 0) {
|
|
538
548
|
dst.setZero();
|
|
@@ -544,10 +554,7 @@ void CompleteOrthogonalDecomposition<_MatrixType>::_solve_impl(
|
|
|
544
554
|
c.applyOnTheLeft(matrixQ().setLength(rank).adjoint());
|
|
545
555
|
|
|
546
556
|
// Solve T z = c(1:rank, :)
|
|
547
|
-
dst.topRows(rank) = matrixT()
|
|
548
|
-
.topLeftCorner(rank, rank)
|
|
549
|
-
.template triangularView<Upper>()
|
|
550
|
-
.solve(c.topRows(rank));
|
|
557
|
+
dst.topRows(rank) = matrixT().topLeftCorner(rank, rank).template triangularView<Upper>().solve(c.topRows(rank));
|
|
551
558
|
|
|
552
559
|
const Index cols = this->cols();
|
|
553
560
|
if (rank < cols) {
|
|
@@ -561,10 +568,10 @@ void CompleteOrthogonalDecomposition<_MatrixType>::_solve_impl(
|
|
|
561
568
|
dst = colsPermutation() * dst;
|
|
562
569
|
}
|
|
563
570
|
|
|
564
|
-
template<typename
|
|
565
|
-
template<bool Conjugate, typename RhsType, typename DstType>
|
|
566
|
-
void CompleteOrthogonalDecomposition<
|
|
567
|
-
{
|
|
571
|
+
template <typename MatrixType_, typename PermutationIndex_>
|
|
572
|
+
template <bool Conjugate, typename RhsType, typename DstType>
|
|
573
|
+
void CompleteOrthogonalDecomposition<MatrixType_, PermutationIndex_>::_solve_impl_transposed(const RhsType& rhs,
|
|
574
|
+
DstType& dst) const {
|
|
568
575
|
const Index rank = this->rank();
|
|
569
576
|
|
|
570
577
|
if (rank == 0) {
|
|
@@ -572,60 +579,66 @@ void CompleteOrthogonalDecomposition<_MatrixType>::_solve_impl_transposed(const
|
|
|
572
579
|
return;
|
|
573
580
|
}
|
|
574
581
|
|
|
575
|
-
typename RhsType::PlainObject c(colsPermutation().transpose()*rhs);
|
|
582
|
+
typename RhsType::PlainObject c(colsPermutation().transpose() * rhs);
|
|
576
583
|
|
|
577
584
|
if (rank < cols()) {
|
|
578
585
|
applyZOnTheLeftInPlace<!Conjugate>(c);
|
|
579
586
|
}
|
|
580
587
|
|
|
581
|
-
matrixT()
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
588
|
+
matrixT()
|
|
589
|
+
.topLeftCorner(rank, rank)
|
|
590
|
+
.template triangularView<Upper>()
|
|
591
|
+
.transpose()
|
|
592
|
+
.template conjugateIf<Conjugate>()
|
|
593
|
+
.solveInPlace(c.topRows(rank));
|
|
585
594
|
|
|
586
595
|
dst.topRows(rank) = c.topRows(rank);
|
|
587
|
-
dst.bottomRows(rows()-rank).setZero();
|
|
596
|
+
dst.bottomRows(rows() - rank).setZero();
|
|
588
597
|
|
|
589
|
-
dst.applyOnTheLeft(householderQ().setLength(rank).template conjugateIf<!Conjugate>()
|
|
598
|
+
dst.applyOnTheLeft(householderQ().setLength(rank).template conjugateIf<!Conjugate>());
|
|
590
599
|
}
|
|
591
600
|
#endif
|
|
592
601
|
|
|
593
602
|
namespace internal {
|
|
594
603
|
|
|
595
|
-
template<typename MatrixType>
|
|
596
|
-
struct traits<Inverse<CompleteOrthogonalDecomposition<MatrixType
|
|
597
|
-
|
|
598
|
-
{
|
|
604
|
+
template <typename MatrixType, typename PermutationIndex>
|
|
605
|
+
struct traits<Inverse<CompleteOrthogonalDecomposition<MatrixType, PermutationIndex>>>
|
|
606
|
+
: traits<typename Transpose<typename MatrixType::PlainObject>::PlainObject> {
|
|
599
607
|
enum { Flags = 0 };
|
|
600
608
|
};
|
|
601
609
|
|
|
602
|
-
template<typename DstXprType, typename MatrixType>
|
|
603
|
-
struct Assignment<DstXprType, Inverse<CompleteOrthogonalDecomposition<MatrixType
|
|
604
|
-
|
|
605
|
-
|
|
610
|
+
template <typename DstXprType, typename MatrixType, typename PermutationIndex>
|
|
611
|
+
struct Assignment<DstXprType, Inverse<CompleteOrthogonalDecomposition<MatrixType, PermutationIndex>>,
|
|
612
|
+
internal::assign_op<typename DstXprType::Scalar,
|
|
613
|
+
typename CompleteOrthogonalDecomposition<MatrixType, PermutationIndex>::Scalar>,
|
|
614
|
+
Dense2Dense> {
|
|
615
|
+
typedef CompleteOrthogonalDecomposition<MatrixType, PermutationIndex> CodType;
|
|
606
616
|
typedef Inverse<CodType> SrcXprType;
|
|
607
|
-
static void run(DstXprType
|
|
608
|
-
|
|
609
|
-
typedef Matrix<typename CodType::Scalar, CodType::RowsAtCompileTime, CodType::RowsAtCompileTime, 0,
|
|
617
|
+
static void run(DstXprType& dst, const SrcXprType& src,
|
|
618
|
+
const internal::assign_op<typename DstXprType::Scalar, typename CodType::Scalar>&) {
|
|
619
|
+
typedef Matrix<typename CodType::Scalar, CodType::RowsAtCompileTime, CodType::RowsAtCompileTime, 0,
|
|
620
|
+
CodType::MaxRowsAtCompileTime, CodType::MaxRowsAtCompileTime>
|
|
621
|
+
IdentityMatrixType;
|
|
610
622
|
dst = src.nestedExpression().solve(IdentityMatrixType::Identity(src.cols(), src.cols()));
|
|
611
623
|
}
|
|
612
624
|
};
|
|
613
625
|
|
|
614
|
-
}
|
|
626
|
+
} // end namespace internal
|
|
615
627
|
|
|
616
628
|
/** \returns the matrix Q as a sequence of householder transformations */
|
|
617
|
-
template <typename MatrixType>
|
|
618
|
-
typename CompleteOrthogonalDecomposition<MatrixType>::HouseholderSequenceType
|
|
619
|
-
CompleteOrthogonalDecomposition<MatrixType>::householderQ() const {
|
|
629
|
+
template <typename MatrixType, typename PermutationIndex>
|
|
630
|
+
typename CompleteOrthogonalDecomposition<MatrixType, PermutationIndex>::HouseholderSequenceType
|
|
631
|
+
CompleteOrthogonalDecomposition<MatrixType, PermutationIndex>::householderQ() const {
|
|
620
632
|
return m_cpqr.householderQ();
|
|
621
633
|
}
|
|
622
634
|
|
|
623
635
|
/** \return the complete orthogonal decomposition of \c *this.
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
636
|
+
*
|
|
637
|
+
* \sa class CompleteOrthogonalDecomposition
|
|
638
|
+
*/
|
|
627
639
|
template <typename Derived>
|
|
628
|
-
|
|
640
|
+
template <typename PermutationIndex>
|
|
641
|
+
const CompleteOrthogonalDecomposition<typename MatrixBase<Derived>::PlainObject, PermutationIndex>
|
|
629
642
|
MatrixBase<Derived>::completeOrthogonalDecomposition() const {
|
|
630
643
|
return CompleteOrthogonalDecomposition<PlainObject>(eval());
|
|
631
644
|
}
|