@smake/eigen 1.0.2 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/eigen/Eigen/AccelerateSupport +52 -0
- package/eigen/Eigen/Cholesky +18 -21
- package/eigen/Eigen/CholmodSupport +28 -28
- package/eigen/Eigen/Core +235 -326
- package/eigen/Eigen/Eigenvalues +16 -14
- package/eigen/Eigen/Geometry +21 -24
- package/eigen/Eigen/Householder +9 -8
- package/eigen/Eigen/IterativeLinearSolvers +8 -4
- package/eigen/Eigen/Jacobi +14 -14
- package/eigen/Eigen/KLUSupport +43 -0
- package/eigen/Eigen/LU +16 -20
- package/eigen/Eigen/MetisSupport +12 -12
- package/eigen/Eigen/OrderingMethods +54 -54
- package/eigen/Eigen/PaStiXSupport +23 -20
- package/eigen/Eigen/PardisoSupport +17 -14
- package/eigen/Eigen/QR +18 -21
- package/eigen/Eigen/QtAlignedMalloc +5 -13
- package/eigen/Eigen/SPQRSupport +21 -14
- package/eigen/Eigen/SVD +23 -18
- package/eigen/Eigen/Sparse +1 -4
- package/eigen/Eigen/SparseCholesky +18 -23
- package/eigen/Eigen/SparseCore +18 -17
- package/eigen/Eigen/SparseLU +12 -8
- package/eigen/Eigen/SparseQR +16 -14
- package/eigen/Eigen/StdDeque +5 -2
- package/eigen/Eigen/StdList +5 -2
- package/eigen/Eigen/StdVector +5 -2
- package/eigen/Eigen/SuperLUSupport +30 -24
- package/eigen/Eigen/ThreadPool +80 -0
- package/eigen/Eigen/UmfPackSupport +19 -17
- package/eigen/Eigen/Version +14 -0
- package/eigen/Eigen/src/AccelerateSupport/AccelerateSupport.h +423 -0
- package/eigen/Eigen/src/AccelerateSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Cholesky/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Cholesky/LDLT.h +377 -401
- package/eigen/Eigen/src/Cholesky/LLT.h +332 -360
- package/eigen/Eigen/src/Cholesky/LLT_LAPACKE.h +81 -56
- package/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +620 -521
- package/eigen/Eigen/src/CholmodSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Core/ArithmeticSequence.h +239 -0
- package/eigen/Eigen/src/Core/Array.h +341 -294
- package/eigen/Eigen/src/Core/ArrayBase.h +190 -203
- package/eigen/Eigen/src/Core/ArrayWrapper.h +127 -171
- package/eigen/Eigen/src/Core/Assign.h +30 -40
- package/eigen/Eigen/src/Core/AssignEvaluator.h +711 -589
- package/eigen/Eigen/src/Core/Assign_MKL.h +130 -125
- package/eigen/Eigen/src/Core/BandMatrix.h +268 -283
- package/eigen/Eigen/src/Core/Block.h +375 -398
- package/eigen/Eigen/src/Core/CommaInitializer.h +86 -97
- package/eigen/Eigen/src/Core/ConditionEstimator.h +51 -53
- package/eigen/Eigen/src/Core/CoreEvaluators.h +1356 -1026
- package/eigen/Eigen/src/Core/CoreIterators.h +73 -59
- package/eigen/Eigen/src/Core/CwiseBinaryOp.h +114 -132
- package/eigen/Eigen/src/Core/CwiseNullaryOp.h +726 -617
- package/eigen/Eigen/src/Core/CwiseTernaryOp.h +77 -103
- package/eigen/Eigen/src/Core/CwiseUnaryOp.h +56 -68
- package/eigen/Eigen/src/Core/CwiseUnaryView.h +132 -95
- package/eigen/Eigen/src/Core/DenseBase.h +632 -571
- package/eigen/Eigen/src/Core/DenseCoeffsBase.h +511 -624
- package/eigen/Eigen/src/Core/DenseStorage.h +512 -509
- package/eigen/Eigen/src/Core/DeviceWrapper.h +153 -0
- package/eigen/Eigen/src/Core/Diagonal.h +169 -210
- package/eigen/Eigen/src/Core/DiagonalMatrix.h +351 -274
- package/eigen/Eigen/src/Core/DiagonalProduct.h +12 -10
- package/eigen/Eigen/src/Core/Dot.h +172 -222
- package/eigen/Eigen/src/Core/EigenBase.h +75 -85
- package/eigen/Eigen/src/Core/Fill.h +138 -0
- package/eigen/Eigen/src/Core/FindCoeff.h +464 -0
- package/eigen/Eigen/src/Core/ForceAlignedAccess.h +90 -109
- package/eigen/Eigen/src/Core/Fuzzy.h +82 -105
- package/eigen/Eigen/src/Core/GeneralProduct.h +327 -263
- package/eigen/Eigen/src/Core/GenericPacketMath.h +1472 -360
- package/eigen/Eigen/src/Core/GlobalFunctions.h +194 -151
- package/eigen/Eigen/src/Core/IO.h +147 -139
- package/eigen/Eigen/src/Core/IndexedView.h +321 -0
- package/eigen/Eigen/src/Core/InnerProduct.h +260 -0
- package/eigen/Eigen/src/Core/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Core/Inverse.h +56 -66
- package/eigen/Eigen/src/Core/Map.h +124 -142
- package/eigen/Eigen/src/Core/MapBase.h +256 -281
- package/eigen/Eigen/src/Core/MathFunctions.h +1620 -938
- package/eigen/Eigen/src/Core/MathFunctionsImpl.h +233 -71
- package/eigen/Eigen/src/Core/Matrix.h +491 -416
- package/eigen/Eigen/src/Core/MatrixBase.h +468 -453
- package/eigen/Eigen/src/Core/NestByValue.h +66 -85
- package/eigen/Eigen/src/Core/NoAlias.h +79 -85
- package/eigen/Eigen/src/Core/NumTraits.h +235 -148
- package/eigen/Eigen/src/Core/PartialReduxEvaluator.h +253 -0
- package/eigen/Eigen/src/Core/PermutationMatrix.h +461 -511
- package/eigen/Eigen/src/Core/PlainObjectBase.h +871 -894
- package/eigen/Eigen/src/Core/Product.h +260 -139
- package/eigen/Eigen/src/Core/ProductEvaluators.h +863 -714
- package/eigen/Eigen/src/Core/Random.h +161 -136
- package/eigen/Eigen/src/Core/RandomImpl.h +262 -0
- package/eigen/Eigen/src/Core/RealView.h +250 -0
- package/eigen/Eigen/src/Core/Redux.h +366 -336
- package/eigen/Eigen/src/Core/Ref.h +308 -209
- package/eigen/Eigen/src/Core/Replicate.h +94 -106
- package/eigen/Eigen/src/Core/Reshaped.h +398 -0
- package/eigen/Eigen/src/Core/ReturnByValue.h +49 -55
- package/eigen/Eigen/src/Core/Reverse.h +136 -145
- package/eigen/Eigen/src/Core/Select.h +70 -140
- package/eigen/Eigen/src/Core/SelfAdjointView.h +262 -285
- package/eigen/Eigen/src/Core/SelfCwiseBinaryOp.h +23 -20
- package/eigen/Eigen/src/Core/SkewSymmetricMatrix3.h +382 -0
- package/eigen/Eigen/src/Core/Solve.h +97 -111
- package/eigen/Eigen/src/Core/SolveTriangular.h +131 -129
- package/eigen/Eigen/src/Core/SolverBase.h +138 -101
- package/eigen/Eigen/src/Core/StableNorm.h +156 -160
- package/eigen/Eigen/src/Core/StlIterators.h +619 -0
- package/eigen/Eigen/src/Core/Stride.h +91 -88
- package/eigen/Eigen/src/Core/Swap.h +70 -38
- package/eigen/Eigen/src/Core/Transpose.h +295 -273
- package/eigen/Eigen/src/Core/Transpositions.h +272 -317
- package/eigen/Eigen/src/Core/TriangularMatrix.h +670 -755
- package/eigen/Eigen/src/Core/VectorBlock.h +59 -72
- package/eigen/Eigen/src/Core/VectorwiseOp.h +668 -630
- package/eigen/Eigen/src/Core/Visitor.h +480 -216
- package/eigen/Eigen/src/Core/arch/AVX/Complex.h +407 -293
- package/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +79 -388
- package/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +2935 -491
- package/eigen/Eigen/src/Core/arch/AVX/Reductions.h +353 -0
- package/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +279 -22
- package/eigen/Eigen/src/Core/arch/AVX512/Complex.h +472 -0
- package/eigen/Eigen/src/Core/arch/AVX512/GemmKernel.h +1245 -0
- package/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +85 -333
- package/eigen/Eigen/src/Core/arch/AVX512/MathFunctionsFP16.h +75 -0
- package/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +2490 -649
- package/eigen/Eigen/src/Core/arch/AVX512/PacketMathFP16.h +1413 -0
- package/eigen/Eigen/src/Core/arch/AVX512/Reductions.h +297 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TrsmKernel.h +1167 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TrsmUnrolls.inc +1219 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TypeCasting.h +277 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TypeCastingFP16.h +130 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +521 -298
- package/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +39 -280
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +3686 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +205 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +901 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMAbfloat16.h +742 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixVectorProduct.inc +2818 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h +3391 -723
- package/eigen/Eigen/src/Core/arch/AltiVec/TypeCasting.h +153 -0
- package/eigen/Eigen/src/Core/arch/Default/BFloat16.h +866 -0
- package/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +113 -14
- package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +2634 -0
- package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +227 -0
- package/eigen/Eigen/src/Core/arch/Default/Half.h +1091 -0
- package/eigen/Eigen/src/Core/arch/Default/Settings.h +11 -13
- package/eigen/Eigen/src/Core/arch/GPU/Complex.h +244 -0
- package/eigen/Eigen/src/Core/arch/GPU/MathFunctions.h +104 -0
- package/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +1712 -0
- package/eigen/Eigen/src/Core/arch/GPU/Tuple.h +268 -0
- package/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +77 -0
- package/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
- package/eigen/Eigen/src/Core/arch/HVX/PacketMath.h +1088 -0
- package/eigen/Eigen/src/Core/arch/LSX/Complex.h +520 -0
- package/eigen/Eigen/src/Core/arch/LSX/GeneralBlockPanelKernel.h +23 -0
- package/eigen/Eigen/src/Core/arch/LSX/MathFunctions.h +43 -0
- package/eigen/Eigen/src/Core/arch/LSX/PacketMath.h +2866 -0
- package/eigen/Eigen/src/Core/arch/LSX/TypeCasting.h +526 -0
- package/eigen/Eigen/src/Core/arch/MSA/Complex.h +620 -0
- package/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +379 -0
- package/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +1237 -0
- package/eigen/Eigen/src/Core/arch/NEON/Complex.h +531 -289
- package/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +243 -0
- package/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +50 -73
- package/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +5915 -579
- package/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +1642 -0
- package/eigen/Eigen/src/Core/arch/NEON/UnaryFunctors.h +57 -0
- package/eigen/Eigen/src/Core/arch/SSE/Complex.h +366 -334
- package/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +40 -514
- package/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +2164 -675
- package/eigen/Eigen/src/Core/arch/SSE/Reductions.h +324 -0
- package/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +188 -35
- package/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +48 -0
- package/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +674 -0
- package/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +52 -0
- package/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +227 -0
- package/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +303 -0
- package/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +576 -0
- package/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +83 -0
- package/eigen/Eigen/src/Core/arch/ZVector/Complex.h +434 -261
- package/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +160 -53
- package/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +1073 -605
- package/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +123 -117
- package/eigen/Eigen/src/Core/functors/BinaryFunctors.h +594 -322
- package/eigen/Eigen/src/Core/functors/NullaryFunctors.h +204 -118
- package/eigen/Eigen/src/Core/functors/StlFunctors.h +110 -97
- package/eigen/Eigen/src/Core/functors/TernaryFunctors.h +34 -7
- package/eigen/Eigen/src/Core/functors/UnaryFunctors.h +1158 -530
- package/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +2329 -1333
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +328 -364
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +191 -178
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +85 -82
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +154 -73
- package/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +396 -542
- package/eigen/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +80 -77
- package/eigen/Eigen/src/Core/products/Parallelizer.h +208 -92
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +331 -375
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +206 -224
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +139 -146
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +58 -61
- package/eigen/Eigen/src/Core/products/SelfadjointProduct.h +71 -71
- package/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h +48 -46
- package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h +294 -369
- package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +246 -238
- package/eigen/Eigen/src/Core/products/TriangularMatrixVector.h +244 -247
- package/eigen/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +212 -192
- package/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h +328 -275
- package/eigen/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +108 -109
- package/eigen/Eigen/src/Core/products/TriangularSolverVector.h +70 -93
- package/eigen/Eigen/src/Core/util/Assert.h +158 -0
- package/eigen/Eigen/src/Core/util/BlasUtil.h +413 -290
- package/eigen/Eigen/src/Core/util/ConfigureVectorization.h +543 -0
- package/eigen/Eigen/src/Core/util/Constants.h +314 -263
- package/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +130 -78
- package/eigen/Eigen/src/Core/util/EmulateArray.h +270 -0
- package/eigen/Eigen/src/Core/util/ForwardDeclarations.h +450 -224
- package/eigen/Eigen/src/Core/util/GpuHipCudaDefines.inc +101 -0
- package/eigen/Eigen/src/Core/util/GpuHipCudaUndefines.inc +45 -0
- package/eigen/Eigen/src/Core/util/IndexedViewHelper.h +487 -0
- package/eigen/Eigen/src/Core/util/IntegralConstant.h +279 -0
- package/eigen/Eigen/src/Core/util/MKL_support.h +39 -30
- package/eigen/Eigen/src/Core/util/Macros.h +939 -646
- package/eigen/Eigen/src/Core/util/MaxSizeVector.h +139 -0
- package/eigen/Eigen/src/Core/util/Memory.h +1042 -650
- package/eigen/Eigen/src/Core/util/Meta.h +618 -426
- package/eigen/Eigen/src/Core/util/MoreMeta.h +638 -0
- package/eigen/Eigen/src/Core/util/ReenableStupidWarnings.h +32 -19
- package/eigen/Eigen/src/Core/util/ReshapedHelper.h +51 -0
- package/eigen/Eigen/src/Core/util/Serializer.h +209 -0
- package/eigen/Eigen/src/Core/util/StaticAssert.h +51 -164
- package/eigen/Eigen/src/Core/util/SymbolicIndex.h +445 -0
- package/eigen/Eigen/src/Core/util/XprHelper.h +793 -538
- package/eigen/Eigen/src/Eigenvalues/ComplexEigenSolver.h +246 -277
- package/eigen/Eigen/src/Eigenvalues/ComplexSchur.h +299 -319
- package/eigen/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +52 -48
- package/eigen/Eigen/src/Eigenvalues/EigenSolver.h +413 -456
- package/eigen/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +309 -325
- package/eigen/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +157 -171
- package/eigen/Eigen/src/Eigenvalues/HessenbergDecomposition.h +292 -310
- package/eigen/Eigen/src/Eigenvalues/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +91 -107
- package/eigen/Eigen/src/Eigenvalues/RealQZ.h +539 -606
- package/eigen/Eigen/src/Eigenvalues/RealSchur.h +348 -382
- package/eigen/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +41 -35
- package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +579 -600
- package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +47 -44
- package/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +434 -461
- package/eigen/Eigen/src/Geometry/AlignedBox.h +307 -214
- package/eigen/Eigen/src/Geometry/AngleAxis.h +135 -137
- package/eigen/Eigen/src/Geometry/EulerAngles.h +163 -74
- package/eigen/Eigen/src/Geometry/Homogeneous.h +289 -333
- package/eigen/Eigen/src/Geometry/Hyperplane.h +152 -161
- package/eigen/Eigen/src/Geometry/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Geometry/OrthoMethods.h +168 -145
- package/eigen/Eigen/src/Geometry/ParametrizedLine.h +141 -104
- package/eigen/Eigen/src/Geometry/Quaternion.h +595 -497
- package/eigen/Eigen/src/Geometry/Rotation2D.h +110 -108
- package/eigen/Eigen/src/Geometry/RotationBase.h +148 -145
- package/eigen/Eigen/src/Geometry/Scaling.h +115 -90
- package/eigen/Eigen/src/Geometry/Transform.h +896 -953
- package/eigen/Eigen/src/Geometry/Translation.h +100 -98
- package/eigen/Eigen/src/Geometry/Umeyama.h +79 -84
- package/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +154 -0
- package/eigen/Eigen/src/Householder/BlockHouseholder.h +54 -42
- package/eigen/Eigen/src/Householder/Householder.h +104 -122
- package/eigen/Eigen/src/Householder/HouseholderSequence.h +416 -382
- package/eigen/Eigen/src/Householder/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +153 -166
- package/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +127 -138
- package/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +95 -124
- package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +269 -267
- package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +246 -259
- package/eigen/Eigen/src/IterativeLinearSolvers/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +218 -217
- package/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +80 -103
- package/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +59 -63
- package/eigen/Eigen/src/Jacobi/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Jacobi/Jacobi.h +256 -291
- package/eigen/Eigen/src/KLUSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/KLUSupport/KLUSupport.h +339 -0
- package/eigen/Eigen/src/LU/Determinant.h +60 -63
- package/eigen/Eigen/src/LU/FullPivLU.h +561 -626
- package/eigen/Eigen/src/LU/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/LU/InverseImpl.h +213 -275
- package/eigen/Eigen/src/LU/PartialPivLU.h +407 -435
- package/eigen/Eigen/src/LU/PartialPivLU_LAPACKE.h +54 -40
- package/eigen/Eigen/src/LU/arch/InverseSize4.h +353 -0
- package/eigen/Eigen/src/MetisSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/MetisSupport/MetisSupport.h +81 -93
- package/eigen/Eigen/src/OrderingMethods/Amd.h +250 -282
- package/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +950 -1103
- package/eigen/Eigen/src/OrderingMethods/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/OrderingMethods/Ordering.h +111 -122
- package/eigen/Eigen/src/PaStiXSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/PaStiXSupport/PaStiXSupport.h +524 -570
- package/eigen/Eigen/src/PardisoSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/PardisoSupport/PardisoSupport.h +385 -429
- package/eigen/Eigen/src/QR/ColPivHouseholderQR.h +494 -473
- package/eigen/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +120 -56
- package/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +223 -137
- package/eigen/Eigen/src/QR/FullPivHouseholderQR.h +517 -460
- package/eigen/Eigen/src/QR/HouseholderQR.h +412 -278
- package/eigen/Eigen/src/QR/HouseholderQR_LAPACKE.h +32 -23
- package/eigen/Eigen/src/QR/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SPQRSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +263 -261
- package/eigen/Eigen/src/SVD/BDCSVD.h +872 -679
- package/eigen/Eigen/src/SVD/BDCSVD_LAPACKE.h +174 -0
- package/eigen/Eigen/src/SVD/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SVD/JacobiSVD.h +585 -543
- package/eigen/Eigen/src/SVD/JacobiSVD_LAPACKE.h +85 -49
- package/eigen/Eigen/src/SVD/SVDBase.h +281 -160
- package/eigen/Eigen/src/SVD/UpperBidiagonalization.h +202 -237
- package/eigen/Eigen/src/SparseCholesky/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +769 -590
- package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +318 -129
- package/eigen/Eigen/src/SparseCore/AmbiVector.h +202 -251
- package/eigen/Eigen/src/SparseCore/CompressedStorage.h +184 -236
- package/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +140 -184
- package/eigen/Eigen/src/SparseCore/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseCore/SparseAssign.h +174 -111
- package/eigen/Eigen/src/SparseCore/SparseBlock.h +408 -477
- package/eigen/Eigen/src/SparseCore/SparseColEtree.h +100 -112
- package/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +531 -280
- package/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +559 -347
- package/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +100 -108
- package/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +185 -191
- package/eigen/Eigen/src/SparseCore/SparseDiagonalProduct.h +71 -71
- package/eigen/Eigen/src/SparseCore/SparseDot.h +49 -47
- package/eigen/Eigen/src/SparseCore/SparseFuzzy.h +13 -11
- package/eigen/Eigen/src/SparseCore/SparseMap.h +243 -253
- package/eigen/Eigen/src/SparseCore/SparseMatrix.h +1614 -1142
- package/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +403 -357
- package/eigen/Eigen/src/SparseCore/SparsePermutation.h +186 -115
- package/eigen/Eigen/src/SparseCore/SparseProduct.h +100 -91
- package/eigen/Eigen/src/SparseCore/SparseRedux.h +22 -24
- package/eigen/Eigen/src/SparseCore/SparseRef.h +268 -295
- package/eigen/Eigen/src/SparseCore/SparseSelfAdjointView.h +371 -414
- package/eigen/Eigen/src/SparseCore/SparseSolverBase.h +78 -87
- package/eigen/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +81 -95
- package/eigen/Eigen/src/SparseCore/SparseTranspose.h +62 -71
- package/eigen/Eigen/src/SparseCore/SparseTriangularView.h +132 -144
- package/eigen/Eigen/src/SparseCore/SparseUtil.h +146 -115
- package/eigen/Eigen/src/SparseCore/SparseVector.h +426 -372
- package/eigen/Eigen/src/SparseCore/SparseView.h +164 -193
- package/eigen/Eigen/src/SparseCore/TriangularSolver.h +129 -170
- package/eigen/Eigen/src/SparseLU/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseLU/SparseLU.h +814 -618
- package/eigen/Eigen/src/SparseLU/SparseLUImpl.h +61 -48
- package/eigen/Eigen/src/SparseLU/SparseLU_Memory.h +102 -118
- package/eigen/Eigen/src/SparseLU/SparseLU_Structs.h +38 -35
- package/eigen/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +273 -255
- package/eigen/Eigen/src/SparseLU/SparseLU_Utils.h +44 -49
- package/eigen/Eigen/src/SparseLU/SparseLU_column_bmod.h +104 -108
- package/eigen/Eigen/src/SparseLU/SparseLU_column_dfs.h +90 -101
- package/eigen/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +57 -58
- package/eigen/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +43 -55
- package/eigen/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +74 -71
- package/eigen/Eigen/src/SparseLU/SparseLU_panel_bmod.h +125 -133
- package/eigen/Eigen/src/SparseLU/SparseLU_panel_dfs.h +136 -159
- package/eigen/Eigen/src/SparseLU/SparseLU_pivotL.h +51 -52
- package/eigen/Eigen/src/SparseLU/SparseLU_pruneL.h +67 -73
- package/eigen/Eigen/src/SparseLU/SparseLU_relax_snode.h +24 -26
- package/eigen/Eigen/src/SparseQR/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseQR/SparseQR.h +451 -490
- package/eigen/Eigen/src/StlSupport/StdDeque.h +28 -105
- package/eigen/Eigen/src/StlSupport/StdList.h +28 -84
- package/eigen/Eigen/src/StlSupport/StdVector.h +28 -108
- package/eigen/Eigen/src/StlSupport/details.h +48 -50
- package/eigen/Eigen/src/SuperLUSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SuperLUSupport/SuperLUSupport.h +634 -732
- package/eigen/Eigen/src/ThreadPool/Barrier.h +70 -0
- package/eigen/Eigen/src/ThreadPool/CoreThreadPoolDevice.h +336 -0
- package/eigen/Eigen/src/ThreadPool/EventCount.h +241 -0
- package/eigen/Eigen/src/ThreadPool/ForkJoin.h +140 -0
- package/eigen/Eigen/src/ThreadPool/InternalHeaderCheck.h +4 -0
- package/eigen/Eigen/src/ThreadPool/NonBlockingThreadPool.h +587 -0
- package/eigen/Eigen/src/ThreadPool/RunQueue.h +230 -0
- package/eigen/Eigen/src/ThreadPool/ThreadCancel.h +21 -0
- package/eigen/Eigen/src/ThreadPool/ThreadEnvironment.h +43 -0
- package/eigen/Eigen/src/ThreadPool/ThreadLocal.h +289 -0
- package/eigen/Eigen/src/ThreadPool/ThreadPoolInterface.h +50 -0
- package/eigen/Eigen/src/ThreadPool/ThreadYield.h +16 -0
- package/eigen/Eigen/src/UmfPackSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/UmfPackSupport/UmfPackSupport.h +480 -380
- package/eigen/Eigen/src/misc/Image.h +41 -43
- package/eigen/Eigen/src/misc/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/misc/Kernel.h +39 -41
- package/eigen/Eigen/src/misc/RealSvd2x2.h +19 -21
- package/eigen/Eigen/src/misc/blas.h +83 -426
- package/eigen/Eigen/src/misc/lapacke.h +9976 -16182
- package/eigen/Eigen/src/misc/lapacke_helpers.h +163 -0
- package/eigen/Eigen/src/misc/lapacke_mangling.h +4 -5
- package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.inc +344 -0
- package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.inc +544 -0
- package/eigen/Eigen/src/plugins/BlockMethods.inc +1370 -0
- package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.inc +116 -0
- package/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.inc +167 -0
- package/eigen/Eigen/src/plugins/IndexedViewMethods.inc +192 -0
- package/eigen/Eigen/src/plugins/InternalHeaderCheck.inc +3 -0
- package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.inc +331 -0
- package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.inc +118 -0
- package/eigen/Eigen/src/plugins/ReshapedMethods.inc +133 -0
- package/lib/LibEigen.d.ts +4 -0
- package/lib/LibEigen.js +14 -0
- package/lib/index.d.ts +1 -1
- package/lib/index.js +7 -3
- package/package.json +2 -10
- package/eigen/Eigen/CMakeLists.txt +0 -19
- package/eigen/Eigen/src/Core/BooleanRedux.h +0 -164
- package/eigen/Eigen/src/Core/arch/CUDA/Complex.h +0 -103
- package/eigen/Eigen/src/Core/arch/CUDA/Half.h +0 -675
- package/eigen/Eigen/src/Core/arch/CUDA/MathFunctions.h +0 -91
- package/eigen/Eigen/src/Core/arch/CUDA/PacketMath.h +0 -333
- package/eigen/Eigen/src/Core/arch/CUDA/PacketMathHalf.h +0 -1124
- package/eigen/Eigen/src/Core/arch/CUDA/TypeCasting.h +0 -212
- package/eigen/Eigen/src/Core/util/NonMPL2.h +0 -3
- package/eigen/Eigen/src/Geometry/arch/Geometry_SSE.h +0 -161
- package/eigen/Eigen/src/LU/arch/Inverse_SSE.h +0 -338
- package/eigen/Eigen/src/SparseCore/MappedSparseMatrix.h +0 -67
- package/eigen/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +0 -280
- package/eigen/Eigen/src/misc/lapack.h +0 -152
- package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h +0 -332
- package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +0 -552
- package/eigen/Eigen/src/plugins/BlockMethods.h +0 -1058
- package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.h +0 -115
- package/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.h +0 -163
- package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +0 -152
- package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +0 -85
- package/lib/eigen.d.ts +0 -2
- package/lib/eigen.js +0 -15
|
@@ -10,70 +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
|
-
|
|
19
|
+
template <typename MatrixType_, typename PermutationIndex_>
|
|
20
|
+
struct traits<CompleteOrthogonalDecomposition<MatrixType_, PermutationIndex_>> : traits<MatrixType_> {
|
|
21
|
+
typedef MatrixXpr XprKind;
|
|
22
|
+
typedef SolverStorage StorageKind;
|
|
23
|
+
typedef PermutationIndex_ PermutationIndex;
|
|
19
24
|
enum { Flags = 0 };
|
|
20
25
|
};
|
|
21
26
|
|
|
22
27
|
} // end namespace internal
|
|
23
28
|
|
|
24
29
|
/** \ingroup QR_Module
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
template <typename
|
|
48
|
-
class CompleteOrthogonalDecomposition
|
|
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_>> {
|
|
49
55
|
public:
|
|
50
|
-
typedef
|
|
56
|
+
typedef MatrixType_ MatrixType;
|
|
57
|
+
typedef SolverBase<CompleteOrthogonalDecomposition> Base;
|
|
58
|
+
|
|
59
|
+
template <typename Derived>
|
|
60
|
+
friend struct internal::solve_assertion;
|
|
61
|
+
typedef PermutationIndex_ PermutationIndex;
|
|
62
|
+
EIGEN_GENERIC_PUBLIC_INTERFACE(CompleteOrthogonalDecomposition)
|
|
51
63
|
enum {
|
|
52
|
-
RowsAtCompileTime = MatrixType::RowsAtCompileTime,
|
|
53
|
-
ColsAtCompileTime = MatrixType::ColsAtCompileTime,
|
|
54
64
|
MaxRowsAtCompileTime = MatrixType::MaxRowsAtCompileTime,
|
|
55
65
|
MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime
|
|
56
66
|
};
|
|
57
|
-
typedef typename MatrixType::Scalar Scalar;
|
|
58
|
-
typedef typename MatrixType::RealScalar RealScalar;
|
|
59
|
-
typedef typename MatrixType::StorageIndex StorageIndex;
|
|
60
67
|
typedef typename internal::plain_diag_type<MatrixType>::type HCoeffsType;
|
|
61
|
-
typedef PermutationMatrix<ColsAtCompileTime, MaxColsAtCompileTime>
|
|
62
|
-
|
|
63
|
-
typedef typename internal::plain_row_type<MatrixType, Index>::type
|
|
64
|
-
IntRowVectorType;
|
|
68
|
+
typedef PermutationMatrix<ColsAtCompileTime, MaxColsAtCompileTime, PermutationIndex> PermutationType;
|
|
69
|
+
typedef typename internal::plain_row_type<MatrixType, Index>::type IntRowVectorType;
|
|
65
70
|
typedef typename internal::plain_row_type<MatrixType>::type RowVectorType;
|
|
66
|
-
typedef typename internal::plain_row_type<MatrixType, RealScalar>::type
|
|
67
|
-
|
|
68
|
-
typedef HouseholderSequence<
|
|
69
|
-
MatrixType, typename internal::remove_all<
|
|
70
|
-
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>>
|
|
71
73
|
HouseholderSequenceType;
|
|
72
74
|
typedef typename MatrixType::PlainObject PlainObject;
|
|
73
75
|
|
|
74
|
-
private:
|
|
75
|
-
typedef typename PermutationType::Index PermIndexType;
|
|
76
|
-
|
|
77
76
|
public:
|
|
78
77
|
/**
|
|
79
78
|
* \brief Default Constructor.
|
|
@@ -113,27 +112,24 @@ class CompleteOrthogonalDecomposition {
|
|
|
113
112
|
explicit CompleteOrthogonalDecomposition(const EigenBase<InputType>& matrix)
|
|
114
113
|
: m_cpqr(matrix.rows(), matrix.cols()),
|
|
115
114
|
m_zCoeffs((std::min)(matrix.rows(), matrix.cols())),
|
|
116
|
-
m_temp(matrix.cols())
|
|
117
|
-
{
|
|
115
|
+
m_temp(matrix.cols()) {
|
|
118
116
|
compute(matrix.derived());
|
|
119
117
|
}
|
|
120
118
|
|
|
121
119
|
/** \brief Constructs a complete orthogonal decomposition from a given matrix
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
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>
|
|
128
127
|
explicit CompleteOrthogonalDecomposition(EigenBase<InputType>& matrix)
|
|
129
|
-
|
|
130
|
-
m_zCoeffs((std::min)(matrix.rows(), matrix.cols())),
|
|
131
|
-
m_temp(matrix.cols())
|
|
132
|
-
{
|
|
128
|
+
: m_cpqr(matrix.derived()), m_zCoeffs((std::min)(matrix.rows(), matrix.cols())), m_temp(matrix.cols()) {
|
|
133
129
|
computeInPlace();
|
|
134
130
|
}
|
|
135
131
|
|
|
136
|
-
|
|
132
|
+
#ifdef EIGEN_PARSED_BY_DOXYGEN
|
|
137
133
|
/** This method computes the minimum-norm solution X to a least squares
|
|
138
134
|
* problem \f[\mathrm{minimize} \|A X - B\|, \f] where \b A is the matrix of
|
|
139
135
|
* which \c *this is the complete orthogonal decomposition.
|
|
@@ -144,12 +140,8 @@ class CompleteOrthogonalDecomposition {
|
|
|
144
140
|
*
|
|
145
141
|
*/
|
|
146
142
|
template <typename Rhs>
|
|
147
|
-
inline const Solve<CompleteOrthogonalDecomposition, Rhs> solve(
|
|
148
|
-
|
|
149
|
-
eigen_assert(m_cpqr.m_isInitialized &&
|
|
150
|
-
"CompleteOrthogonalDecomposition is not initialized.");
|
|
151
|
-
return Solve<CompleteOrthogonalDecomposition, Rhs>(*this, b.derived());
|
|
152
|
-
}
|
|
143
|
+
inline const Solve<CompleteOrthogonalDecomposition, Rhs> solve(const MatrixBase<Rhs>& b) const;
|
|
144
|
+
#endif
|
|
153
145
|
|
|
154
146
|
HouseholderSequenceType householderQ(void) const;
|
|
155
147
|
HouseholderSequenceType matrixQ(void) const { return m_cpqr.householderQ(); }
|
|
@@ -158,8 +150,8 @@ class CompleteOrthogonalDecomposition {
|
|
|
158
150
|
*/
|
|
159
151
|
MatrixType matrixZ() const {
|
|
160
152
|
MatrixType Z = MatrixType::Identity(m_cpqr.cols(), m_cpqr.cols());
|
|
161
|
-
|
|
162
|
-
return Z
|
|
153
|
+
applyZOnTheLeftInPlace<false>(Z);
|
|
154
|
+
return Z;
|
|
163
155
|
}
|
|
164
156
|
|
|
165
157
|
/** \returns a reference to the matrix where the complete orthogonal
|
|
@@ -175,7 +167,7 @@ class CompleteOrthogonalDecomposition {
|
|
|
175
167
|
* \code matrixT().template triangularView<Upper>() \endcode
|
|
176
168
|
* For rank-deficient matrices, use
|
|
177
169
|
* \code
|
|
178
|
-
*
|
|
170
|
+
* matrixT().topLeftCorner(rank(), rank()).template triangularView<Upper>()
|
|
179
171
|
* \endcode
|
|
180
172
|
*/
|
|
181
173
|
const MatrixType& matrixT() const { return m_cpqr.matrixQR(); }
|
|
@@ -189,9 +181,22 @@ class CompleteOrthogonalDecomposition {
|
|
|
189
181
|
}
|
|
190
182
|
|
|
191
183
|
/** \returns a const reference to the column permutation matrix */
|
|
192
|
-
const PermutationType& colsPermutation() const {
|
|
193
|
-
|
|
194
|
-
|
|
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;
|
|
195
200
|
|
|
196
201
|
/** \returns the absolute value of the determinant of the matrix of which
|
|
197
202
|
* *this is the complete orthogonal decomposition. It has only linear
|
|
@@ -204,7 +209,7 @@ class CompleteOrthogonalDecomposition {
|
|
|
204
209
|
* of large enough dimension, there is a risk of overflow/underflow.
|
|
205
210
|
* One way to work around that is to use logAbsDeterminant() instead.
|
|
206
211
|
*
|
|
207
|
-
* \sa logAbsDeterminant(), MatrixBase::determinant()
|
|
212
|
+
* \sa determinant(), logAbsDeterminant(), MatrixBase::determinant()
|
|
208
213
|
*/
|
|
209
214
|
typename MatrixType::RealScalar absDeterminant() const;
|
|
210
215
|
|
|
@@ -219,10 +224,25 @@ class CompleteOrthogonalDecomposition {
|
|
|
219
224
|
* \note This method is useful to work around the risk of overflow/underflow
|
|
220
225
|
* that's inherent to determinant computation.
|
|
221
226
|
*
|
|
222
|
-
* \sa absDeterminant(), MatrixBase::determinant()
|
|
227
|
+
* \sa determinant(), absDeterminant(), MatrixBase::determinant()
|
|
223
228
|
*/
|
|
224
229
|
typename MatrixType::RealScalar logAbsDeterminant() const;
|
|
225
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
|
+
|
|
226
246
|
/** \returns the rank of the matrix of which *this is the complete orthogonal
|
|
227
247
|
* decomposition.
|
|
228
248
|
*
|
|
@@ -273,8 +293,8 @@ class CompleteOrthogonalDecomposition {
|
|
|
273
293
|
* \warning: Do not compute \c this->pseudoInverse()*rhs to solve a linear systems.
|
|
274
294
|
* It is more efficient and numerically stable to call \c this->solve(rhs).
|
|
275
295
|
*/
|
|
276
|
-
inline const Inverse<CompleteOrthogonalDecomposition> pseudoInverse() const
|
|
277
|
-
|
|
296
|
+
inline const Inverse<CompleteOrthogonalDecomposition> pseudoInverse() const {
|
|
297
|
+
eigen_assert(m_cpqr.m_isInitialized && "CompleteOrthogonalDecomposition is not initialized.");
|
|
278
298
|
return Inverse<CompleteOrthogonalDecomposition>(*this);
|
|
279
299
|
}
|
|
280
300
|
|
|
@@ -353,7 +373,7 @@ class CompleteOrthogonalDecomposition {
|
|
|
353
373
|
inline RealScalar maxPivot() const { return m_cpqr.maxPivot(); }
|
|
354
374
|
|
|
355
375
|
/** \brief Reports whether the complete orthogonal decomposition was
|
|
356
|
-
*
|
|
376
|
+
* successful.
|
|
357
377
|
*
|
|
358
378
|
* \note This function always returns \c Success. It is provided for
|
|
359
379
|
* compatibility
|
|
@@ -367,38 +387,63 @@ class CompleteOrthogonalDecomposition {
|
|
|
367
387
|
|
|
368
388
|
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
|
369
389
|
template <typename RhsType, typename DstType>
|
|
370
|
-
|
|
390
|
+
void _solve_impl(const RhsType& rhs, DstType& dst) const;
|
|
391
|
+
|
|
392
|
+
template <bool Conjugate, typename RhsType, typename DstType>
|
|
393
|
+
void _solve_impl_transposed(const RhsType& rhs, DstType& dst) const;
|
|
371
394
|
#endif
|
|
372
395
|
|
|
373
396
|
protected:
|
|
374
|
-
|
|
375
|
-
|
|
397
|
+
EIGEN_STATIC_ASSERT_NON_INTEGER(Scalar)
|
|
398
|
+
|
|
399
|
+
template <bool Transpose_, typename Rhs>
|
|
400
|
+
void _check_solve_assertion(const Rhs& b) const {
|
|
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");
|
|
376
405
|
}
|
|
377
406
|
|
|
378
407
|
void computeInPlace();
|
|
379
408
|
|
|
409
|
+
/** Overwrites \b rhs with \f$ \mathbf{Z} * \mathbf{rhs} \f$ or
|
|
410
|
+
* \f$ \mathbf{\overline Z} * \mathbf{rhs} \f$ if \c Conjugate
|
|
411
|
+
* is set to \c true.
|
|
412
|
+
*/
|
|
413
|
+
template <bool Conjugate, typename Rhs>
|
|
414
|
+
void applyZOnTheLeftInPlace(Rhs& rhs) const;
|
|
415
|
+
|
|
380
416
|
/** Overwrites \b rhs with \f$ \mathbf{Z}^* * \mathbf{rhs} \f$.
|
|
381
417
|
*/
|
|
382
418
|
template <typename Rhs>
|
|
383
419
|
void applyZAdjointOnTheLeftInPlace(Rhs& rhs) const;
|
|
384
420
|
|
|
385
|
-
ColPivHouseholderQR<MatrixType> m_cpqr;
|
|
421
|
+
ColPivHouseholderQR<MatrixType, PermutationIndex> m_cpqr;
|
|
386
422
|
HCoeffsType m_zCoeffs;
|
|
387
423
|
RowVectorType m_temp;
|
|
388
424
|
};
|
|
389
425
|
|
|
390
|
-
template <typename MatrixType>
|
|
391
|
-
typename MatrixType::
|
|
392
|
-
|
|
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 {
|
|
393
433
|
return m_cpqr.absDeterminant();
|
|
394
434
|
}
|
|
395
435
|
|
|
396
|
-
template <typename MatrixType>
|
|
397
|
-
typename MatrixType::RealScalar
|
|
398
|
-
|
|
436
|
+
template <typename MatrixType, typename PermutationIndex>
|
|
437
|
+
typename MatrixType::RealScalar CompleteOrthogonalDecomposition<MatrixType, PermutationIndex>::logAbsDeterminant()
|
|
438
|
+
const {
|
|
399
439
|
return m_cpqr.logAbsDeterminant();
|
|
400
440
|
}
|
|
401
441
|
|
|
442
|
+
template <typename MatrixType, typename PermutationIndex>
|
|
443
|
+
typename MatrixType::Scalar CompleteOrthogonalDecomposition<MatrixType, PermutationIndex>::signDeterminant() const {
|
|
444
|
+
return m_cpqr.signDeterminant();
|
|
445
|
+
}
|
|
446
|
+
|
|
402
447
|
/** Performs the complete orthogonal decomposition of the given matrix \a
|
|
403
448
|
* matrix. The result of the factorization is stored into \c *this, and a
|
|
404
449
|
* reference to \c *this is returned.
|
|
@@ -406,13 +451,9 @@ CompleteOrthogonalDecomposition<MatrixType>::logAbsDeterminant() const {
|
|
|
406
451
|
* \sa class CompleteOrthogonalDecomposition,
|
|
407
452
|
* CompleteOrthogonalDecomposition(const MatrixType&)
|
|
408
453
|
*/
|
|
409
|
-
template <typename MatrixType>
|
|
410
|
-
void CompleteOrthogonalDecomposition<MatrixType>::computeInPlace()
|
|
411
|
-
|
|
412
|
-
check_template_parameters();
|
|
413
|
-
|
|
414
|
-
// the column permutation is stored as int indices, so just to be sure:
|
|
415
|
-
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());
|
|
416
457
|
|
|
417
458
|
const Index rank = m_cpqr.rank();
|
|
418
459
|
const Index cols = m_cpqr.cols();
|
|
@@ -437,49 +478,60 @@ void CompleteOrthogonalDecomposition<MatrixType>::computeInPlace()
|
|
|
437
478
|
// Given the API for Householder reflectors, it is more convenient if
|
|
438
479
|
// we swap the leading parts of columns k and r-1 (zero-based) to form
|
|
439
480
|
// the matrix X_k = [X(0:k, k), X(0:k, r:n)]
|
|
440
|
-
m_cpqr.m_qr.col(k).head(k + 1).swap(
|
|
441
|
-
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));
|
|
442
482
|
}
|
|
443
483
|
// Construct Householder reflector Z(k) to zero out the last row of X_k,
|
|
444
484
|
// i.e. choose Z(k) such that
|
|
445
485
|
// [X(k, k), X(k, r:n)] * Z(k) = [beta, 0, .., 0].
|
|
446
486
|
RealScalar beta;
|
|
447
|
-
m_cpqr.m_qr.row(k)
|
|
448
|
-
.tail(cols - rank + 1)
|
|
449
|
-
.makeHouseholderInPlace(m_zCoeffs(k), beta);
|
|
487
|
+
m_cpqr.m_qr.row(k).tail(cols - rank + 1).makeHouseholderInPlace(m_zCoeffs(k), beta);
|
|
450
488
|
m_cpqr.m_qr(k, rank - 1) = beta;
|
|
451
489
|
if (k > 0) {
|
|
452
490
|
// Apply Z(k) to the first k rows of X_k
|
|
453
491
|
m_cpqr.m_qr.topRightCorner(k, cols - rank + 1)
|
|
454
|
-
.applyHouseholderOnTheRight(
|
|
455
|
-
m_cpqr.m_qr.row(k).tail(cols - rank).transpose(), m_zCoeffs(k),
|
|
456
|
-
&m_temp(0));
|
|
492
|
+
.applyHouseholderOnTheRight(m_cpqr.m_qr.row(k).tail(cols - rank).adjoint(), m_zCoeffs(k), &m_temp(0));
|
|
457
493
|
}
|
|
458
494
|
if (k != rank - 1) {
|
|
459
495
|
// Swap X(0:k,k) back to its proper location.
|
|
460
|
-
m_cpqr.m_qr.col(k).head(k + 1).swap(
|
|
461
|
-
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));
|
|
462
497
|
}
|
|
463
498
|
}
|
|
464
499
|
}
|
|
465
500
|
}
|
|
466
501
|
|
|
467
|
-
template <typename MatrixType>
|
|
502
|
+
template <typename MatrixType, typename PermutationIndex>
|
|
503
|
+
template <bool Conjugate, typename Rhs>
|
|
504
|
+
void CompleteOrthogonalDecomposition<MatrixType, PermutationIndex>::applyZOnTheLeftInPlace(Rhs& rhs) const {
|
|
505
|
+
const Index cols = this->cols();
|
|
506
|
+
const Index nrhs = rhs.cols();
|
|
507
|
+
const Index rank = this->rank();
|
|
508
|
+
Matrix<typename Rhs::Scalar, Dynamic, 1> temp((std::max)(cols, nrhs));
|
|
509
|
+
for (Index k = rank - 1; k >= 0; --k) {
|
|
510
|
+
if (k != rank - 1) {
|
|
511
|
+
rhs.row(k).swap(rhs.row(rank - 1));
|
|
512
|
+
}
|
|
513
|
+
rhs.middleRows(rank - 1, cols - rank + 1)
|
|
514
|
+
.applyHouseholderOnTheLeft(matrixQTZ().row(k).tail(cols - rank).transpose().template conjugateIf<!Conjugate>(),
|
|
515
|
+
zCoeffs().template conjugateIf<Conjugate>()(k), &temp(0));
|
|
516
|
+
if (k != rank - 1) {
|
|
517
|
+
rhs.row(k).swap(rhs.row(rank - 1));
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
template <typename MatrixType, typename PermutationIndex>
|
|
468
523
|
template <typename Rhs>
|
|
469
|
-
void CompleteOrthogonalDecomposition<MatrixType>::applyZAdjointOnTheLeftInPlace(
|
|
470
|
-
Rhs& rhs) const {
|
|
524
|
+
void CompleteOrthogonalDecomposition<MatrixType, PermutationIndex>::applyZAdjointOnTheLeftInPlace(Rhs& rhs) const {
|
|
471
525
|
const Index cols = this->cols();
|
|
472
526
|
const Index nrhs = rhs.cols();
|
|
473
527
|
const Index rank = this->rank();
|
|
474
|
-
Matrix<typename
|
|
528
|
+
Matrix<typename Rhs::Scalar, Dynamic, 1> temp((std::max)(cols, nrhs));
|
|
475
529
|
for (Index k = 0; k < rank; ++k) {
|
|
476
530
|
if (k != rank - 1) {
|
|
477
531
|
rhs.row(k).swap(rhs.row(rank - 1));
|
|
478
532
|
}
|
|
479
533
|
rhs.middleRows(rank - 1, cols - rank + 1)
|
|
480
|
-
.applyHouseholderOnTheLeft(
|
|
481
|
-
matrixQTZ().row(k).tail(cols - rank).adjoint(), zCoeffs()(k),
|
|
482
|
-
&temp(0));
|
|
534
|
+
.applyHouseholderOnTheLeft(matrixQTZ().row(k).tail(cols - rank).adjoint(), zCoeffs()(k), &temp(0));
|
|
483
535
|
if (k != rank - 1) {
|
|
484
536
|
rhs.row(k).swap(rhs.row(rank - 1));
|
|
485
537
|
}
|
|
@@ -487,12 +539,10 @@ void CompleteOrthogonalDecomposition<MatrixType>::applyZAdjointOnTheLeftInPlace(
|
|
|
487
539
|
}
|
|
488
540
|
|
|
489
541
|
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
|
490
|
-
template <typename
|
|
542
|
+
template <typename MatrixType_, typename PermutationIndex_>
|
|
491
543
|
template <typename RhsType, typename DstType>
|
|
492
|
-
void CompleteOrthogonalDecomposition<
|
|
493
|
-
|
|
494
|
-
eigen_assert(rhs.rows() == this->rows());
|
|
495
|
-
|
|
544
|
+
void CompleteOrthogonalDecomposition<MatrixType_, PermutationIndex_>::_solve_impl(const RhsType& rhs,
|
|
545
|
+
DstType& dst) const {
|
|
496
546
|
const Index rank = this->rank();
|
|
497
547
|
if (rank == 0) {
|
|
498
548
|
dst.setZero();
|
|
@@ -500,17 +550,11 @@ void CompleteOrthogonalDecomposition<_MatrixType>::_solve_impl(
|
|
|
500
550
|
}
|
|
501
551
|
|
|
502
552
|
// Compute c = Q^* * rhs
|
|
503
|
-
// Note that the matrix Q = H_0^* H_1^*... so its inverse is
|
|
504
|
-
// Q^* = (H_0 H_1 ...)^T
|
|
505
553
|
typename RhsType::PlainObject c(rhs);
|
|
506
|
-
c.applyOnTheLeft(
|
|
507
|
-
householderSequence(matrixQTZ(), hCoeffs()).setLength(rank).transpose());
|
|
554
|
+
c.applyOnTheLeft(matrixQ().setLength(rank).adjoint());
|
|
508
555
|
|
|
509
556
|
// Solve T z = c(1:rank, :)
|
|
510
|
-
dst.topRows(rank) = matrixT()
|
|
511
|
-
.topLeftCorner(rank, rank)
|
|
512
|
-
.template triangularView<Upper>()
|
|
513
|
-
.solve(c.topRows(rank));
|
|
557
|
+
dst.topRows(rank) = matrixT().topLeftCorner(rank, rank).template triangularView<Upper>().solve(c.topRows(rank));
|
|
514
558
|
|
|
515
559
|
const Index cols = this->cols();
|
|
516
560
|
if (rank < cols) {
|
|
@@ -523,36 +567,78 @@ void CompleteOrthogonalDecomposition<_MatrixType>::_solve_impl(
|
|
|
523
567
|
// Undo permutation to get x = P^{-1} * y.
|
|
524
568
|
dst = colsPermutation() * dst;
|
|
525
569
|
}
|
|
570
|
+
|
|
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 {
|
|
575
|
+
const Index rank = this->rank();
|
|
576
|
+
|
|
577
|
+
if (rank == 0) {
|
|
578
|
+
dst.setZero();
|
|
579
|
+
return;
|
|
580
|
+
}
|
|
581
|
+
|
|
582
|
+
typename RhsType::PlainObject c(colsPermutation().transpose() * rhs);
|
|
583
|
+
|
|
584
|
+
if (rank < cols()) {
|
|
585
|
+
applyZOnTheLeftInPlace<!Conjugate>(c);
|
|
586
|
+
}
|
|
587
|
+
|
|
588
|
+
matrixT()
|
|
589
|
+
.topLeftCorner(rank, rank)
|
|
590
|
+
.template triangularView<Upper>()
|
|
591
|
+
.transpose()
|
|
592
|
+
.template conjugateIf<Conjugate>()
|
|
593
|
+
.solveInPlace(c.topRows(rank));
|
|
594
|
+
|
|
595
|
+
dst.topRows(rank) = c.topRows(rank);
|
|
596
|
+
dst.bottomRows(rows() - rank).setZero();
|
|
597
|
+
|
|
598
|
+
dst.applyOnTheLeft(householderQ().setLength(rank).template conjugateIf<!Conjugate>());
|
|
599
|
+
}
|
|
526
600
|
#endif
|
|
527
601
|
|
|
528
602
|
namespace internal {
|
|
529
603
|
|
|
530
|
-
template<typename
|
|
531
|
-
struct
|
|
532
|
-
{
|
|
533
|
-
|
|
604
|
+
template <typename MatrixType, typename PermutationIndex>
|
|
605
|
+
struct traits<Inverse<CompleteOrthogonalDecomposition<MatrixType, PermutationIndex>>>
|
|
606
|
+
: traits<typename Transpose<typename MatrixType::PlainObject>::PlainObject> {
|
|
607
|
+
enum { Flags = 0 };
|
|
608
|
+
};
|
|
609
|
+
|
|
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;
|
|
534
616
|
typedef Inverse<CodType> SrcXprType;
|
|
535
|
-
static void run(DstXprType
|
|
536
|
-
|
|
537
|
-
|
|
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;
|
|
622
|
+
dst = src.nestedExpression().solve(IdentityMatrixType::Identity(src.cols(), src.cols()));
|
|
538
623
|
}
|
|
539
624
|
};
|
|
540
625
|
|
|
541
|
-
}
|
|
626
|
+
} // end namespace internal
|
|
542
627
|
|
|
543
628
|
/** \returns the matrix Q as a sequence of householder transformations */
|
|
544
|
-
template <typename MatrixType>
|
|
545
|
-
typename CompleteOrthogonalDecomposition<MatrixType>::HouseholderSequenceType
|
|
546
|
-
CompleteOrthogonalDecomposition<MatrixType>::householderQ() const {
|
|
629
|
+
template <typename MatrixType, typename PermutationIndex>
|
|
630
|
+
typename CompleteOrthogonalDecomposition<MatrixType, PermutationIndex>::HouseholderSequenceType
|
|
631
|
+
CompleteOrthogonalDecomposition<MatrixType, PermutationIndex>::householderQ() const {
|
|
547
632
|
return m_cpqr.householderQ();
|
|
548
633
|
}
|
|
549
634
|
|
|
550
635
|
/** \return the complete orthogonal decomposition of \c *this.
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
636
|
+
*
|
|
637
|
+
* \sa class CompleteOrthogonalDecomposition
|
|
638
|
+
*/
|
|
554
639
|
template <typename Derived>
|
|
555
|
-
|
|
640
|
+
template <typename PermutationIndex>
|
|
641
|
+
const CompleteOrthogonalDecomposition<typename MatrixBase<Derived>::PlainObject, PermutationIndex>
|
|
556
642
|
MatrixBase<Derived>::completeOrthogonalDecomposition() const {
|
|
557
643
|
return CompleteOrthogonalDecomposition<PlainObject>(eval());
|
|
558
644
|
}
|