@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
|
@@ -16,18 +16,73 @@
|
|
|
16
16
|
#ifndef EIGEN_SVDBASE_H
|
|
17
17
|
#define EIGEN_SVDBASE_H
|
|
18
18
|
|
|
19
|
+
// IWYU pragma: private
|
|
20
|
+
#include "./InternalHeaderCheck.h"
|
|
21
|
+
|
|
19
22
|
namespace Eigen {
|
|
20
23
|
|
|
21
24
|
namespace internal {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
+
|
|
26
|
+
enum OptionsMasks {
|
|
27
|
+
QRPreconditionerBits = NoQRPreconditioner | HouseholderQRPreconditioner | ColPivHouseholderQRPreconditioner |
|
|
28
|
+
FullPivHouseholderQRPreconditioner,
|
|
29
|
+
ComputationOptionsBits = ComputeThinU | ComputeFullU | ComputeThinV | ComputeFullV
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
constexpr int get_qr_preconditioner(int options) { return options & QRPreconditionerBits; }
|
|
33
|
+
|
|
34
|
+
constexpr int get_computation_options(int options) { return options & ComputationOptionsBits; }
|
|
35
|
+
|
|
36
|
+
constexpr bool should_svd_compute_thin_u(int options) { return (options & ComputeThinU) != 0; }
|
|
37
|
+
constexpr bool should_svd_compute_full_u(int options) { return (options & ComputeFullU) != 0; }
|
|
38
|
+
constexpr bool should_svd_compute_thin_v(int options) { return (options & ComputeThinV) != 0; }
|
|
39
|
+
constexpr bool should_svd_compute_full_v(int options) { return (options & ComputeFullV) != 0; }
|
|
40
|
+
|
|
41
|
+
template <typename MatrixType, int Options>
|
|
42
|
+
void check_svd_options_assertions(unsigned int computationOptions, Index rows, Index cols) {
|
|
43
|
+
EIGEN_STATIC_ASSERT((Options & ComputationOptionsBits) == 0,
|
|
44
|
+
"SVDBase: Cannot request U or V using both static and runtime options, even if they match. "
|
|
45
|
+
"Requesting unitaries at runtime is DEPRECATED: "
|
|
46
|
+
"Prefer requesting unitaries statically, using the Options template parameter.");
|
|
47
|
+
eigen_assert(
|
|
48
|
+
!(should_svd_compute_thin_u(computationOptions) && cols < rows && MatrixType::RowsAtCompileTime != Dynamic) &&
|
|
49
|
+
!(should_svd_compute_thin_v(computationOptions) && rows < cols && MatrixType::ColsAtCompileTime != Dynamic) &&
|
|
50
|
+
"SVDBase: If thin U is requested at runtime, your matrix must have more rows than columns or a dynamic number of "
|
|
51
|
+
"rows."
|
|
52
|
+
"Similarly, if thin V is requested at runtime, you matrix must have more columns than rows or a dynamic number "
|
|
53
|
+
"of columns.");
|
|
54
|
+
(void)computationOptions;
|
|
55
|
+
(void)rows;
|
|
56
|
+
(void)cols;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
template <typename Derived>
|
|
60
|
+
struct traits<SVDBase<Derived> > : traits<Derived> {
|
|
25
61
|
typedef MatrixXpr XprKind;
|
|
26
62
|
typedef SolverStorage StorageKind;
|
|
27
63
|
typedef int StorageIndex;
|
|
28
64
|
enum { Flags = 0 };
|
|
29
65
|
};
|
|
30
|
-
|
|
66
|
+
|
|
67
|
+
template <typename MatrixType, int Options_>
|
|
68
|
+
struct svd_traits : traits<MatrixType> {
|
|
69
|
+
static constexpr int Options = Options_;
|
|
70
|
+
static constexpr bool ShouldComputeFullU = internal::should_svd_compute_full_u(Options);
|
|
71
|
+
static constexpr bool ShouldComputeThinU = internal::should_svd_compute_thin_u(Options);
|
|
72
|
+
static constexpr bool ShouldComputeFullV = internal::should_svd_compute_full_v(Options);
|
|
73
|
+
static constexpr bool ShouldComputeThinV = internal::should_svd_compute_thin_v(Options);
|
|
74
|
+
enum {
|
|
75
|
+
DiagSizeAtCompileTime =
|
|
76
|
+
internal::min_size_prefer_dynamic(MatrixType::RowsAtCompileTime, MatrixType::ColsAtCompileTime),
|
|
77
|
+
MaxDiagSizeAtCompileTime =
|
|
78
|
+
internal::min_size_prefer_dynamic(MatrixType::MaxRowsAtCompileTime, MatrixType::MaxColsAtCompileTime),
|
|
79
|
+
MatrixUColsAtCompileTime = ShouldComputeThinU ? DiagSizeAtCompileTime : MatrixType::RowsAtCompileTime,
|
|
80
|
+
MatrixVColsAtCompileTime = ShouldComputeThinV ? DiagSizeAtCompileTime : MatrixType::ColsAtCompileTime,
|
|
81
|
+
MatrixUMaxColsAtCompileTime = ShouldComputeThinU ? MaxDiagSizeAtCompileTime : MatrixType::MaxRowsAtCompileTime,
|
|
82
|
+
MatrixVMaxColsAtCompileTime = ShouldComputeThinV ? MaxDiagSizeAtCompileTime : MatrixType::MaxColsAtCompileTime
|
|
83
|
+
};
|
|
84
|
+
};
|
|
85
|
+
} // namespace internal
|
|
31
86
|
|
|
32
87
|
/** \ingroup SVD_Module
|
|
33
88
|
*
|
|
@@ -40,66 +95,82 @@ template<typename Derived> struct traits<SVDBase<Derived> >
|
|
|
40
95
|
*
|
|
41
96
|
* SVD decomposition consists in decomposing any n-by-p matrix \a A as a product
|
|
42
97
|
* \f[ A = U S V^* \f]
|
|
43
|
-
* where \a U is a n-by-n unitary, \a V is a p-by-p unitary, and \a S is a n-by-p real positive matrix which is zero
|
|
44
|
-
* the diagonal entries of S are known as the \em singular \em values of \a A and the
|
|
45
|
-
* and right \em singular \em vectors of \a A respectively.
|
|
98
|
+
* where \a U is a n-by-n unitary, \a V is a p-by-p unitary, and \a S is a n-by-p real positive matrix which is zero
|
|
99
|
+
* outside of its main diagonal; the diagonal entries of S are known as the \em singular \em values of \a A and the
|
|
100
|
+
* columns of \a U and \a V are known as the left and right \em singular \em vectors of \a A respectively.
|
|
46
101
|
*
|
|
47
102
|
* Singular values are always sorted in decreasing order.
|
|
48
103
|
*
|
|
49
|
-
*
|
|
50
|
-
* You can ask for only \em thin \a U or \a V to be computed, meaning the following. In case of a rectangular n-by-p
|
|
51
|
-
* smaller value among \a n and \a p, there are only \a m singular vectors; the remaining
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
* \
|
|
104
|
+
*
|
|
105
|
+
* You can ask for only \em thin \a U or \a V to be computed, meaning the following. In case of a rectangular n-by-p
|
|
106
|
+
* matrix, letting \a m be the smaller value among \a n and \a p, there are only \a m singular vectors; the remaining
|
|
107
|
+
* columns of \a U and \a V do not correspond to actual singular vectors. Asking for \em thin \a U or \a V means asking
|
|
108
|
+
* for only their \a m first columns to be formed. So \a U is then a n-by-m matrix, and \a V is then a p-by-m matrix.
|
|
109
|
+
* Notice that thin \a U and \a V are all you need for (least squares) solving.
|
|
110
|
+
*
|
|
111
|
+
* The status of the computation can be retrieved using the \a info() method. Unless \a info() returns \a Success, the
|
|
112
|
+
* results should be not considered well defined.
|
|
113
|
+
*
|
|
114
|
+
* If the input matrix has inf or nan coefficients, the result of the computation is undefined, and \a info() will
|
|
115
|
+
* return \a InvalidInput, but the computation is guaranteed to terminate in finite (and reasonable) time. \sa class
|
|
116
|
+
* BDCSVD, class JacobiSVD
|
|
61
117
|
*/
|
|
62
|
-
template<typename Derived>
|
|
63
|
-
: public SolverBase<SVDBase<Derived> >
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
template<typename Derived_>
|
|
118
|
+
template <typename Derived>
|
|
119
|
+
class SVDBase : public SolverBase<SVDBase<Derived> > {
|
|
120
|
+
public:
|
|
121
|
+
template <typename Derived_>
|
|
68
122
|
friend struct internal::solve_assertion;
|
|
69
123
|
|
|
70
124
|
typedef typename internal::traits<Derived>::MatrixType MatrixType;
|
|
71
125
|
typedef typename MatrixType::Scalar Scalar;
|
|
72
126
|
typedef typename NumTraits<typename MatrixType::Scalar>::Real RealScalar;
|
|
73
127
|
typedef typename Eigen::internal::traits<SVDBase>::StorageIndex StorageIndex;
|
|
74
|
-
|
|
128
|
+
|
|
129
|
+
static constexpr bool ShouldComputeFullU = internal::traits<Derived>::ShouldComputeFullU;
|
|
130
|
+
static constexpr bool ShouldComputeThinU = internal::traits<Derived>::ShouldComputeThinU;
|
|
131
|
+
static constexpr bool ShouldComputeFullV = internal::traits<Derived>::ShouldComputeFullV;
|
|
132
|
+
static constexpr bool ShouldComputeThinV = internal::traits<Derived>::ShouldComputeThinV;
|
|
133
|
+
|
|
75
134
|
enum {
|
|
76
135
|
RowsAtCompileTime = MatrixType::RowsAtCompileTime,
|
|
77
136
|
ColsAtCompileTime = MatrixType::ColsAtCompileTime,
|
|
78
|
-
DiagSizeAtCompileTime =
|
|
137
|
+
DiagSizeAtCompileTime = internal::min_size_prefer_dynamic(RowsAtCompileTime, ColsAtCompileTime),
|
|
79
138
|
MaxRowsAtCompileTime = MatrixType::MaxRowsAtCompileTime,
|
|
80
139
|
MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime,
|
|
81
|
-
MaxDiagSizeAtCompileTime =
|
|
82
|
-
MatrixOptions = MatrixType
|
|
140
|
+
MaxDiagSizeAtCompileTime = internal::min_size_prefer_fixed(MaxRowsAtCompileTime, MaxColsAtCompileTime),
|
|
141
|
+
MatrixOptions = internal::traits<MatrixType>::Options,
|
|
142
|
+
MatrixUColsAtCompileTime = internal::traits<Derived>::MatrixUColsAtCompileTime,
|
|
143
|
+
MatrixVColsAtCompileTime = internal::traits<Derived>::MatrixVColsAtCompileTime,
|
|
144
|
+
MatrixUMaxColsAtCompileTime = internal::traits<Derived>::MatrixUMaxColsAtCompileTime,
|
|
145
|
+
MatrixVMaxColsAtCompileTime = internal::traits<Derived>::MatrixVMaxColsAtCompileTime
|
|
83
146
|
};
|
|
84
147
|
|
|
85
|
-
|
|
86
|
-
|
|
148
|
+
EIGEN_STATIC_ASSERT(!(ShouldComputeFullU && ShouldComputeThinU), "SVDBase: Cannot request both full and thin U")
|
|
149
|
+
EIGEN_STATIC_ASSERT(!(ShouldComputeFullV && ShouldComputeThinV), "SVDBase: Cannot request both full and thin V")
|
|
150
|
+
|
|
151
|
+
typedef
|
|
152
|
+
typename internal::make_proper_matrix_type<Scalar, RowsAtCompileTime, MatrixUColsAtCompileTime, MatrixOptions,
|
|
153
|
+
MaxRowsAtCompileTime, MatrixUMaxColsAtCompileTime>::type MatrixUType;
|
|
154
|
+
typedef
|
|
155
|
+
typename internal::make_proper_matrix_type<Scalar, ColsAtCompileTime, MatrixVColsAtCompileTime, MatrixOptions,
|
|
156
|
+
MaxColsAtCompileTime, MatrixVMaxColsAtCompileTime>::type MatrixVType;
|
|
157
|
+
|
|
87
158
|
typedef typename internal::plain_diag_type<MatrixType, RealScalar>::type SingularValuesType;
|
|
88
|
-
|
|
159
|
+
|
|
89
160
|
Derived& derived() { return *static_cast<Derived*>(this); }
|
|
90
161
|
const Derived& derived() const { return *static_cast<const Derived*>(this); }
|
|
91
162
|
|
|
92
163
|
/** \returns the \a U matrix.
|
|
93
164
|
*
|
|
94
165
|
* For the SVD decomposition of a n-by-p matrix, letting \a m be the minimum of \a n and \a p,
|
|
95
|
-
* the U matrix is n-by-n if you asked for \link Eigen::ComputeFullU ComputeFullU \endlink, and is n-by-m if you asked
|
|
166
|
+
* the U matrix is n-by-n if you asked for \link Eigen::ComputeFullU ComputeFullU \endlink, and is n-by-m if you asked
|
|
167
|
+
* for \link Eigen::ComputeThinU ComputeThinU \endlink.
|
|
96
168
|
*
|
|
97
169
|
* The \a m first columns of \a U are the left singular vectors of the matrix being decomposed.
|
|
98
170
|
*
|
|
99
171
|
* This method asserts that you asked for \a U to be computed.
|
|
100
172
|
*/
|
|
101
|
-
const MatrixUType& matrixU() const
|
|
102
|
-
{
|
|
173
|
+
const MatrixUType& matrixU() const {
|
|
103
174
|
_check_compute_assertions();
|
|
104
175
|
eigen_assert(computeU() && "This SVD decomposition didn't compute U. Did you ask for it?");
|
|
105
176
|
return m_matrixU;
|
|
@@ -108,14 +179,14 @@ public:
|
|
|
108
179
|
/** \returns the \a V matrix.
|
|
109
180
|
*
|
|
110
181
|
* For the SVD decomposition of a n-by-p matrix, letting \a m be the minimum of \a n and \a p,
|
|
111
|
-
* the V matrix is p-by-p if you asked for \link Eigen::ComputeFullV ComputeFullV \endlink, and is p-by-m if you asked
|
|
182
|
+
* the V matrix is p-by-p if you asked for \link Eigen::ComputeFullV ComputeFullV \endlink, and is p-by-m if you asked
|
|
183
|
+
* for \link Eigen::ComputeThinV ComputeThinV \endlink.
|
|
112
184
|
*
|
|
113
185
|
* The \a m first columns of \a V are the right singular vectors of the matrix being decomposed.
|
|
114
186
|
*
|
|
115
187
|
* This method asserts that you asked for \a V to be computed.
|
|
116
188
|
*/
|
|
117
|
-
const MatrixVType& matrixV() const
|
|
118
|
-
{
|
|
189
|
+
const MatrixVType& matrixV() const {
|
|
119
190
|
_check_compute_assertions();
|
|
120
191
|
eigen_assert(computeV() && "This SVD decomposition didn't compute V. Did you ask for it?");
|
|
121
192
|
return m_matrixV;
|
|
@@ -126,82 +197,76 @@ public:
|
|
|
126
197
|
* For the SVD decomposition of a n-by-p matrix, letting \a m be the minimum of \a n and \a p, the
|
|
127
198
|
* returned vector has size \a m. Singular values are always sorted in decreasing order.
|
|
128
199
|
*/
|
|
129
|
-
const SingularValuesType& singularValues() const
|
|
130
|
-
{
|
|
200
|
+
const SingularValuesType& singularValues() const {
|
|
131
201
|
_check_compute_assertions();
|
|
132
202
|
return m_singularValues;
|
|
133
203
|
}
|
|
134
204
|
|
|
135
205
|
/** \returns the number of singular values that are not exactly 0 */
|
|
136
|
-
Index nonzeroSingularValues() const
|
|
137
|
-
{
|
|
206
|
+
Index nonzeroSingularValues() const {
|
|
138
207
|
_check_compute_assertions();
|
|
139
208
|
return m_nonzeroSingularValues;
|
|
140
209
|
}
|
|
141
|
-
|
|
210
|
+
|
|
142
211
|
/** \returns the rank of the matrix of which \c *this is the SVD.
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
inline Index rank() const
|
|
149
|
-
{
|
|
212
|
+
*
|
|
213
|
+
* \note This method has to determine which singular values should be considered nonzero.
|
|
214
|
+
* For that, it uses the threshold value that you can control by calling
|
|
215
|
+
* setThreshold(const RealScalar&).
|
|
216
|
+
*/
|
|
217
|
+
inline Index rank() const {
|
|
150
218
|
using std::abs;
|
|
151
219
|
_check_compute_assertions();
|
|
152
|
-
if(m_singularValues.size()==0) return 0;
|
|
153
|
-
RealScalar premultiplied_threshold =
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
220
|
+
if (m_singularValues.size() == 0) return 0;
|
|
221
|
+
RealScalar premultiplied_threshold =
|
|
222
|
+
numext::maxi<RealScalar>(m_singularValues.coeff(0) * threshold(), (std::numeric_limits<RealScalar>::min)());
|
|
223
|
+
Index i = m_nonzeroSingularValues - 1;
|
|
224
|
+
while (i >= 0 && m_singularValues.coeff(i) < premultiplied_threshold) --i;
|
|
225
|
+
return i + 1;
|
|
157
226
|
}
|
|
158
|
-
|
|
227
|
+
|
|
159
228
|
/** Allows to prescribe a threshold to be used by certain methods, such as rank() and solve(),
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
Derived& setThreshold(const RealScalar& threshold)
|
|
174
|
-
{
|
|
229
|
+
* which need to determine when singular values are to be considered nonzero.
|
|
230
|
+
* This is not used for the SVD decomposition itself.
|
|
231
|
+
*
|
|
232
|
+
* When it needs to get the threshold value, Eigen calls threshold().
|
|
233
|
+
* The default is \c NumTraits<Scalar>::epsilon()
|
|
234
|
+
*
|
|
235
|
+
* \param threshold The new value to use as the threshold.
|
|
236
|
+
*
|
|
237
|
+
* A singular value will be considered nonzero if its value is strictly greater than
|
|
238
|
+
* \f$ \vert singular value \vert \leqslant threshold \times \vert max singular value \vert \f$.
|
|
239
|
+
*
|
|
240
|
+
* If you want to come back to the default behavior, call setThreshold(Default_t)
|
|
241
|
+
*/
|
|
242
|
+
Derived& setThreshold(const RealScalar& threshold) {
|
|
175
243
|
m_usePrescribedThreshold = true;
|
|
176
244
|
m_prescribedThreshold = threshold;
|
|
177
245
|
return derived();
|
|
178
246
|
}
|
|
179
247
|
|
|
180
248
|
/** Allows to come back to the default behavior, letting Eigen use its default formula for
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
Derived& setThreshold(Default_t)
|
|
189
|
-
{
|
|
249
|
+
* determining the threshold.
|
|
250
|
+
*
|
|
251
|
+
* You should pass the special object Eigen::Default as parameter here.
|
|
252
|
+
* \code svd.setThreshold(Eigen::Default); \endcode
|
|
253
|
+
*
|
|
254
|
+
* See the documentation of setThreshold(const RealScalar&).
|
|
255
|
+
*/
|
|
256
|
+
Derived& setThreshold(Default_t) {
|
|
190
257
|
m_usePrescribedThreshold = false;
|
|
191
258
|
return derived();
|
|
192
259
|
}
|
|
193
260
|
|
|
194
261
|
/** Returns the threshold that will be used by certain methods such as rank().
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
RealScalar threshold() const
|
|
199
|
-
{
|
|
262
|
+
*
|
|
263
|
+
* See the documentation of setThreshold(const RealScalar&).
|
|
264
|
+
*/
|
|
265
|
+
RealScalar threshold() const {
|
|
200
266
|
eigen_assert(m_isInitialized || m_usePrescribedThreshold);
|
|
201
267
|
// this temporary is needed to workaround a MSVC issue
|
|
202
|
-
Index diagSize = (std::max<Index>)(1,m_diagSize);
|
|
203
|
-
return m_usePrescribedThreshold ? m_prescribedThreshold
|
|
204
|
-
: RealScalar(diagSize)*NumTraits<Scalar>::epsilon();
|
|
268
|
+
Index diagSize = (std::max<Index>)(1, m_diagSize);
|
|
269
|
+
return m_usePrescribedThreshold ? m_prescribedThreshold : RealScalar(diagSize) * NumTraits<Scalar>::epsilon();
|
|
205
270
|
}
|
|
206
271
|
|
|
207
272
|
/** \returns true if \a U (full or thin) is asked for in this SVD decomposition */
|
|
@@ -209,65 +274,59 @@ public:
|
|
|
209
274
|
/** \returns true if \a V (full or thin) is asked for in this SVD decomposition */
|
|
210
275
|
inline bool computeV() const { return m_computeFullV || m_computeThinV; }
|
|
211
276
|
|
|
212
|
-
inline Index rows() const { return m_rows; }
|
|
213
|
-
inline Index cols() const { return m_cols; }
|
|
214
|
-
|
|
215
|
-
#ifdef EIGEN_PARSED_BY_DOXYGEN
|
|
216
|
-
/** \returns a (least squares) solution of \f$ A x = b \f$ using the current SVD decomposition of A.
|
|
217
|
-
*
|
|
218
|
-
* \param b the right-hand-side of the equation to solve.
|
|
219
|
-
*
|
|
220
|
-
* \note Solving requires both U and V to be computed. Thin U and V are enough, there is no need for full U or V.
|
|
221
|
-
*
|
|
222
|
-
* \note SVD solving is implicitly least-squares. Thus, this method serves both purposes of exact solving and least-squares solving.
|
|
223
|
-
* In other words, the returned solution is guaranteed to minimize the Euclidean norm \f$ \Vert A x - b \Vert \f$.
|
|
224
|
-
*/
|
|
225
|
-
template<typename Rhs>
|
|
226
|
-
inline const Solve<Derived, Rhs>
|
|
227
|
-
solve(const MatrixBase<Rhs>& b) const;
|
|
228
|
-
#endif
|
|
277
|
+
inline Index rows() const { return m_rows.value(); }
|
|
278
|
+
inline Index cols() const { return m_cols.value(); }
|
|
279
|
+
inline Index diagSize() const { return m_diagSize.value(); }
|
|
229
280
|
|
|
281
|
+
#ifdef EIGEN_PARSED_BY_DOXYGEN
|
|
282
|
+
/** \returns a (least squares) solution of \f$ A x = b \f$ using the current SVD decomposition of A.
|
|
283
|
+
*
|
|
284
|
+
* \param b the right-hand-side of the equation to solve.
|
|
285
|
+
*
|
|
286
|
+
* \note Solving requires both U and V to be computed. Thin U and V are enough, there is no need for full U or V.
|
|
287
|
+
*
|
|
288
|
+
* \note SVD solving is implicitly least-squares. Thus, this method serves both purposes of exact solving and
|
|
289
|
+
* least-squares solving. In other words, the returned solution is guaranteed to minimize the Euclidean norm \f$ \Vert
|
|
290
|
+
* A x - b \Vert \f$.
|
|
291
|
+
*/
|
|
292
|
+
template <typename Rhs>
|
|
293
|
+
inline const Solve<Derived, Rhs> solve(const MatrixBase<Rhs>& b) const;
|
|
294
|
+
#endif
|
|
230
295
|
|
|
231
296
|
/** \brief Reports whether previous computation was successful.
|
|
232
297
|
*
|
|
233
298
|
* \returns \c Success if computation was successful.
|
|
234
299
|
*/
|
|
235
|
-
EIGEN_DEVICE_FUNC
|
|
236
|
-
ComputationInfo info() const
|
|
237
|
-
{
|
|
300
|
+
EIGEN_DEVICE_FUNC ComputationInfo info() const {
|
|
238
301
|
eigen_assert(m_isInitialized && "SVD is not initialized.");
|
|
239
302
|
return m_info;
|
|
240
303
|
}
|
|
241
304
|
|
|
242
|
-
|
|
243
|
-
template<typename RhsType, typename DstType>
|
|
244
|
-
void _solve_impl(const RhsType
|
|
245
|
-
|
|
246
|
-
template<bool Conjugate, typename RhsType, typename DstType>
|
|
247
|
-
void _solve_impl_transposed(const RhsType &rhs, DstType &dst) const;
|
|
248
|
-
#endif
|
|
305
|
+
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
|
306
|
+
template <typename RhsType, typename DstType>
|
|
307
|
+
void _solve_impl(const RhsType& rhs, DstType& dst) const;
|
|
249
308
|
|
|
250
|
-
|
|
309
|
+
template <bool Conjugate, typename RhsType, typename DstType>
|
|
310
|
+
void _solve_impl_transposed(const RhsType& rhs, DstType& dst) const;
|
|
311
|
+
#endif
|
|
251
312
|
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
EIGEN_STATIC_ASSERT_NON_INTEGER(Scalar);
|
|
255
|
-
}
|
|
313
|
+
protected:
|
|
314
|
+
EIGEN_STATIC_ASSERT_NON_INTEGER(Scalar)
|
|
256
315
|
|
|
257
|
-
void _check_compute_assertions() const {
|
|
258
|
-
eigen_assert(m_isInitialized && "SVD is not initialized.");
|
|
259
|
-
}
|
|
316
|
+
void _check_compute_assertions() const { eigen_assert(m_isInitialized && "SVD is not initialized."); }
|
|
260
317
|
|
|
261
|
-
template<bool Transpose_, typename Rhs>
|
|
318
|
+
template <bool Transpose_, typename Rhs>
|
|
262
319
|
void _check_solve_assertion(const Rhs& b) const {
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
320
|
+
EIGEN_ONLY_USED_FOR_DEBUG(b);
|
|
321
|
+
_check_compute_assertions();
|
|
322
|
+
eigen_assert(computeU() && computeV() &&
|
|
323
|
+
"SVDBase::solve(): Both unitaries U and V are required to be computed (thin unitaries suffice).");
|
|
324
|
+
eigen_assert((Transpose_ ? cols() : rows()) == b.rows() &&
|
|
325
|
+
"SVDBase::solve(): invalid number of rows of the right hand side matrix b");
|
|
267
326
|
}
|
|
268
327
|
|
|
269
328
|
// return true if already allocated
|
|
270
|
-
bool allocate(Index rows, Index cols, unsigned int computationOptions)
|
|
329
|
+
bool allocate(Index rows, Index cols, unsigned int computationOptions);
|
|
271
330
|
|
|
272
331
|
MatrixUType m_matrixU;
|
|
273
332
|
MatrixVType m_matrixV;
|
|
@@ -277,7 +336,10 @@ protected:
|
|
|
277
336
|
bool m_computeFullU, m_computeThinU;
|
|
278
337
|
bool m_computeFullV, m_computeThinV;
|
|
279
338
|
unsigned int m_computationOptions;
|
|
280
|
-
Index m_nonzeroSingularValues
|
|
339
|
+
Index m_nonzeroSingularValues;
|
|
340
|
+
internal::variable_if_dynamic<Index, RowsAtCompileTime> m_rows;
|
|
341
|
+
internal::variable_if_dynamic<Index, ColsAtCompileTime> m_cols;
|
|
342
|
+
internal::variable_if_dynamic<Index, DiagSizeAtCompileTime> m_diagSize;
|
|
281
343
|
RealScalar m_prescribedThreshold;
|
|
282
344
|
|
|
283
345
|
/** \brief Default Constructor.
|
|
@@ -285,92 +347,90 @@ protected:
|
|
|
285
347
|
* Default constructor of SVDBase
|
|
286
348
|
*/
|
|
287
349
|
SVDBase()
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
350
|
+
: m_matrixU(MatrixUType()),
|
|
351
|
+
m_matrixV(MatrixVType()),
|
|
352
|
+
m_singularValues(SingularValuesType()),
|
|
353
|
+
m_info(Success),
|
|
354
|
+
m_isInitialized(false),
|
|
355
|
+
m_isAllocated(false),
|
|
356
|
+
m_usePrescribedThreshold(false),
|
|
357
|
+
m_computeFullU(ShouldComputeFullU),
|
|
358
|
+
m_computeThinU(ShouldComputeThinU),
|
|
359
|
+
m_computeFullV(ShouldComputeFullV),
|
|
360
|
+
m_computeThinV(ShouldComputeThinV),
|
|
361
|
+
m_computationOptions(internal::traits<Derived>::Options),
|
|
362
|
+
m_nonzeroSingularValues(0),
|
|
363
|
+
m_rows(RowsAtCompileTime),
|
|
364
|
+
m_cols(ColsAtCompileTime),
|
|
365
|
+
m_diagSize(DiagSizeAtCompileTime),
|
|
366
|
+
m_prescribedThreshold(0) {}
|
|
303
367
|
};
|
|
304
368
|
|
|
305
369
|
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
|
306
|
-
template<typename Derived>
|
|
307
|
-
template<typename RhsType, typename DstType>
|
|
308
|
-
void SVDBase<Derived>::_solve_impl(const RhsType
|
|
309
|
-
{
|
|
370
|
+
template <typename Derived>
|
|
371
|
+
template <typename RhsType, typename DstType>
|
|
372
|
+
void SVDBase<Derived>::_solve_impl(const RhsType& rhs, DstType& dst) const {
|
|
310
373
|
// A = U S V^*
|
|
311
374
|
// So A^{-1} = V S^{-1} U^*
|
|
312
375
|
|
|
313
|
-
Matrix<typename RhsType::Scalar, Dynamic, RhsType::ColsAtCompileTime, 0, MatrixType::MaxRowsAtCompileTime,
|
|
376
|
+
Matrix<typename RhsType::Scalar, Dynamic, RhsType::ColsAtCompileTime, 0, MatrixType::MaxRowsAtCompileTime,
|
|
377
|
+
RhsType::MaxColsAtCompileTime>
|
|
378
|
+
tmp;
|
|
314
379
|
Index l_rank = rank();
|
|
315
|
-
tmp.noalias() =
|
|
380
|
+
tmp.noalias() = m_matrixU.leftCols(l_rank).adjoint() * rhs;
|
|
316
381
|
tmp = m_singularValues.head(l_rank).asDiagonal().inverse() * tmp;
|
|
317
|
-
dst = m_matrixV.leftCols(l_rank) * tmp;
|
|
382
|
+
dst.noalias() = m_matrixV.leftCols(l_rank) * tmp;
|
|
318
383
|
}
|
|
319
384
|
|
|
320
|
-
template<typename Derived>
|
|
321
|
-
template<bool Conjugate, typename RhsType, typename DstType>
|
|
322
|
-
void SVDBase<Derived>::_solve_impl_transposed(const RhsType
|
|
323
|
-
{
|
|
385
|
+
template <typename Derived>
|
|
386
|
+
template <bool Conjugate, typename RhsType, typename DstType>
|
|
387
|
+
void SVDBase<Derived>::_solve_impl_transposed(const RhsType& rhs, DstType& dst) const {
|
|
324
388
|
// A = U S V^*
|
|
325
389
|
// So A^{-*} = U S^{-1} V^*
|
|
326
390
|
// And A^{-T} = U_conj S^{-1} V^T
|
|
327
|
-
Matrix<typename RhsType::Scalar, Dynamic, RhsType::ColsAtCompileTime, 0, MatrixType::MaxRowsAtCompileTime,
|
|
391
|
+
Matrix<typename RhsType::Scalar, Dynamic, RhsType::ColsAtCompileTime, 0, MatrixType::MaxRowsAtCompileTime,
|
|
392
|
+
RhsType::MaxColsAtCompileTime>
|
|
393
|
+
tmp;
|
|
328
394
|
Index l_rank = rank();
|
|
329
395
|
|
|
330
|
-
tmp.noalias() =
|
|
396
|
+
tmp.noalias() = m_matrixV.leftCols(l_rank).transpose().template conjugateIf<Conjugate>() * rhs;
|
|
331
397
|
tmp = m_singularValues.head(l_rank).asDiagonal().inverse() * tmp;
|
|
332
398
|
dst = m_matrixU.template conjugateIf<!Conjugate>().leftCols(l_rank) * tmp;
|
|
333
399
|
}
|
|
334
400
|
#endif
|
|
335
401
|
|
|
336
|
-
template<typename
|
|
337
|
-
bool SVDBase<
|
|
338
|
-
{
|
|
402
|
+
template <typename Derived>
|
|
403
|
+
bool SVDBase<Derived>::allocate(Index rows, Index cols, unsigned int computationOptions) {
|
|
339
404
|
eigen_assert(rows >= 0 && cols >= 0);
|
|
340
405
|
|
|
341
|
-
if (m_isAllocated &&
|
|
342
|
-
rows == m_rows &&
|
|
343
|
-
cols == m_cols &&
|
|
344
|
-
computationOptions == m_computationOptions)
|
|
345
|
-
{
|
|
406
|
+
if (m_isAllocated && rows == m_rows.value() && cols == m_cols.value() && computationOptions == m_computationOptions) {
|
|
346
407
|
return true;
|
|
347
408
|
}
|
|
348
409
|
|
|
349
|
-
m_rows
|
|
350
|
-
m_cols
|
|
410
|
+
m_rows.setValue(rows);
|
|
411
|
+
m_cols.setValue(cols);
|
|
351
412
|
m_info = Success;
|
|
352
413
|
m_isInitialized = false;
|
|
353
414
|
m_isAllocated = true;
|
|
354
415
|
m_computationOptions = computationOptions;
|
|
355
|
-
m_computeFullU = (computationOptions
|
|
356
|
-
m_computeThinU = (computationOptions
|
|
357
|
-
m_computeFullV = (computationOptions
|
|
358
|
-
m_computeThinV = (computationOptions
|
|
416
|
+
m_computeFullU = ShouldComputeFullU || internal::should_svd_compute_full_u(computationOptions);
|
|
417
|
+
m_computeThinU = ShouldComputeThinU || internal::should_svd_compute_thin_u(computationOptions);
|
|
418
|
+
m_computeFullV = ShouldComputeFullV || internal::should_svd_compute_full_v(computationOptions);
|
|
419
|
+
m_computeThinV = ShouldComputeThinV || internal::should_svd_compute_thin_v(computationOptions);
|
|
420
|
+
|
|
359
421
|
eigen_assert(!(m_computeFullU && m_computeThinU) && "SVDBase: you can't ask for both full and thin U");
|
|
360
422
|
eigen_assert(!(m_computeFullV && m_computeThinV) && "SVDBase: you can't ask for both full and thin V");
|
|
361
|
-
eigen_assert(EIGEN_IMPLIES(m_computeThinU || m_computeThinV, MatrixType::ColsAtCompileTime==Dynamic) &&
|
|
362
|
-
"SVDBase: thin U and V are only available when your matrix has a dynamic number of columns.");
|
|
363
423
|
|
|
364
|
-
m_diagSize
|
|
365
|
-
m_singularValues.resize(m_diagSize);
|
|
366
|
-
if(RowsAtCompileTime==Dynamic)
|
|
367
|
-
m_matrixU.resize(m_rows, m_computeFullU ? m_rows : m_computeThinU ? m_diagSize : 0);
|
|
368
|
-
if(ColsAtCompileTime==Dynamic)
|
|
369
|
-
m_matrixV.resize(m_cols, m_computeFullV ? m_cols : m_computeThinV ? m_diagSize : 0);
|
|
424
|
+
m_diagSize.setValue(numext::mini(m_rows.value(), m_cols.value()));
|
|
425
|
+
m_singularValues.resize(m_diagSize.value());
|
|
426
|
+
if (RowsAtCompileTime == Dynamic)
|
|
427
|
+
m_matrixU.resize(m_rows.value(), m_computeFullU ? m_rows.value() : m_computeThinU ? m_diagSize.value() : 0);
|
|
428
|
+
if (ColsAtCompileTime == Dynamic)
|
|
429
|
+
m_matrixV.resize(m_cols.value(), m_computeFullV ? m_cols.value() : m_computeThinV ? m_diagSize.value() : 0);
|
|
370
430
|
|
|
371
431
|
return false;
|
|
372
432
|
}
|
|
373
433
|
|
|
374
|
-
}//
|
|
434
|
+
} // namespace Eigen
|
|
375
435
|
|
|
376
|
-
#endif
|
|
436
|
+
#endif // EIGEN_SVDBASE_H
|