@smake/eigen 1.1.0 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/eigen/Eigen/AccelerateSupport +52 -0
- package/eigen/Eigen/Cholesky +18 -20
- package/eigen/Eigen/CholmodSupport +28 -28
- package/eigen/Eigen/Core +187 -120
- package/eigen/Eigen/Eigenvalues +16 -13
- package/eigen/Eigen/Geometry +18 -18
- package/eigen/Eigen/Householder +9 -7
- package/eigen/Eigen/IterativeLinearSolvers +8 -4
- package/eigen/Eigen/Jacobi +14 -13
- package/eigen/Eigen/KLUSupport +23 -21
- package/eigen/Eigen/LU +15 -16
- package/eigen/Eigen/MetisSupport +12 -12
- package/eigen/Eigen/OrderingMethods +54 -51
- package/eigen/Eigen/PaStiXSupport +23 -21
- package/eigen/Eigen/PardisoSupport +17 -14
- package/eigen/Eigen/QR +18 -20
- package/eigen/Eigen/QtAlignedMalloc +5 -12
- package/eigen/Eigen/SPQRSupport +21 -14
- package/eigen/Eigen/SVD +23 -17
- package/eigen/Eigen/Sparse +1 -2
- package/eigen/Eigen/SparseCholesky +18 -15
- package/eigen/Eigen/SparseCore +18 -17
- package/eigen/Eigen/SparseLU +9 -9
- package/eigen/Eigen/SparseQR +16 -14
- package/eigen/Eigen/StdDeque +5 -2
- package/eigen/Eigen/StdList +5 -2
- package/eigen/Eigen/StdVector +5 -2
- package/eigen/Eigen/SuperLUSupport +30 -24
- package/eigen/Eigen/ThreadPool +80 -0
- package/eigen/Eigen/UmfPackSupport +19 -17
- package/eigen/Eigen/Version +14 -0
- package/eigen/Eigen/src/AccelerateSupport/AccelerateSupport.h +423 -0
- package/eigen/Eigen/src/AccelerateSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Cholesky/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Cholesky/LDLT.h +366 -405
- package/eigen/Eigen/src/Cholesky/LLT.h +323 -367
- package/eigen/Eigen/src/Cholesky/LLT_LAPACKE.h +81 -56
- package/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +585 -529
- package/eigen/Eigen/src/CholmodSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Core/ArithmeticSequence.h +143 -317
- package/eigen/Eigen/src/Core/Array.h +329 -370
- package/eigen/Eigen/src/Core/ArrayBase.h +190 -203
- package/eigen/Eigen/src/Core/ArrayWrapper.h +126 -170
- package/eigen/Eigen/src/Core/Assign.h +30 -40
- package/eigen/Eigen/src/Core/AssignEvaluator.h +651 -604
- package/eigen/Eigen/src/Core/Assign_MKL.h +125 -120
- package/eigen/Eigen/src/Core/BandMatrix.h +267 -282
- package/eigen/Eigen/src/Core/Block.h +371 -390
- package/eigen/Eigen/src/Core/CommaInitializer.h +85 -100
- package/eigen/Eigen/src/Core/ConditionEstimator.h +51 -53
- package/eigen/Eigen/src/Core/CoreEvaluators.h +1214 -937
- package/eigen/Eigen/src/Core/CoreIterators.h +72 -63
- package/eigen/Eigen/src/Core/CwiseBinaryOp.h +112 -129
- package/eigen/Eigen/src/Core/CwiseNullaryOp.h +676 -702
- package/eigen/Eigen/src/Core/CwiseTernaryOp.h +77 -103
- package/eigen/Eigen/src/Core/CwiseUnaryOp.h +55 -67
- package/eigen/Eigen/src/Core/CwiseUnaryView.h +127 -92
- package/eigen/Eigen/src/Core/DenseBase.h +630 -658
- package/eigen/Eigen/src/Core/DenseCoeffsBase.h +511 -628
- package/eigen/Eigen/src/Core/DenseStorage.h +511 -590
- package/eigen/Eigen/src/Core/DeviceWrapper.h +153 -0
- package/eigen/Eigen/src/Core/Diagonal.h +168 -207
- package/eigen/Eigen/src/Core/DiagonalMatrix.h +346 -317
- package/eigen/Eigen/src/Core/DiagonalProduct.h +12 -10
- package/eigen/Eigen/src/Core/Dot.h +167 -217
- package/eigen/Eigen/src/Core/EigenBase.h +74 -85
- package/eigen/Eigen/src/Core/Fill.h +138 -0
- package/eigen/Eigen/src/Core/FindCoeff.h +464 -0
- package/eigen/Eigen/src/Core/ForceAlignedAccess.h +90 -113
- package/eigen/Eigen/src/Core/Fuzzy.h +82 -105
- package/eigen/Eigen/src/Core/GeneralProduct.h +315 -261
- package/eigen/Eigen/src/Core/GenericPacketMath.h +1182 -520
- package/eigen/Eigen/src/Core/GlobalFunctions.h +193 -157
- package/eigen/Eigen/src/Core/IO.h +131 -156
- package/eigen/Eigen/src/Core/IndexedView.h +209 -125
- package/eigen/Eigen/src/Core/InnerProduct.h +260 -0
- package/eigen/Eigen/src/Core/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Core/Inverse.h +50 -59
- package/eigen/Eigen/src/Core/Map.h +123 -141
- package/eigen/Eigen/src/Core/MapBase.h +255 -282
- package/eigen/Eigen/src/Core/MathFunctions.h +1247 -1201
- package/eigen/Eigen/src/Core/MathFunctionsImpl.h +162 -99
- package/eigen/Eigen/src/Core/Matrix.h +463 -494
- package/eigen/Eigen/src/Core/MatrixBase.h +468 -470
- package/eigen/Eigen/src/Core/NestByValue.h +58 -52
- package/eigen/Eigen/src/Core/NoAlias.h +79 -86
- package/eigen/Eigen/src/Core/NumTraits.h +206 -206
- package/eigen/Eigen/src/Core/PartialReduxEvaluator.h +163 -142
- package/eigen/Eigen/src/Core/PermutationMatrix.h +461 -511
- package/eigen/Eigen/src/Core/PlainObjectBase.h +858 -972
- package/eigen/Eigen/src/Core/Product.h +246 -130
- package/eigen/Eigen/src/Core/ProductEvaluators.h +779 -671
- package/eigen/Eigen/src/Core/Random.h +153 -164
- package/eigen/Eigen/src/Core/RandomImpl.h +262 -0
- package/eigen/Eigen/src/Core/RealView.h +250 -0
- package/eigen/Eigen/src/Core/Redux.h +334 -314
- package/eigen/Eigen/src/Core/Ref.h +259 -257
- package/eigen/Eigen/src/Core/Replicate.h +92 -104
- package/eigen/Eigen/src/Core/Reshaped.h +215 -271
- package/eigen/Eigen/src/Core/ReturnByValue.h +47 -55
- package/eigen/Eigen/src/Core/Reverse.h +133 -148
- package/eigen/Eigen/src/Core/Select.h +68 -140
- package/eigen/Eigen/src/Core/SelfAdjointView.h +254 -290
- package/eigen/Eigen/src/Core/SelfCwiseBinaryOp.h +23 -20
- package/eigen/Eigen/src/Core/SkewSymmetricMatrix3.h +382 -0
- package/eigen/Eigen/src/Core/Solve.h +88 -102
- package/eigen/Eigen/src/Core/SolveTriangular.h +126 -124
- package/eigen/Eigen/src/Core/SolverBase.h +132 -133
- package/eigen/Eigen/src/Core/StableNorm.h +113 -147
- package/eigen/Eigen/src/Core/StlIterators.h +404 -248
- package/eigen/Eigen/src/Core/Stride.h +90 -92
- package/eigen/Eigen/src/Core/Swap.h +70 -39
- package/eigen/Eigen/src/Core/Transpose.h +258 -295
- package/eigen/Eigen/src/Core/Transpositions.h +270 -333
- package/eigen/Eigen/src/Core/TriangularMatrix.h +642 -743
- package/eigen/Eigen/src/Core/VectorBlock.h +59 -72
- package/eigen/Eigen/src/Core/VectorwiseOp.h +653 -704
- package/eigen/Eigen/src/Core/Visitor.h +464 -308
- package/eigen/Eigen/src/Core/arch/AVX/Complex.h +380 -187
- package/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +65 -163
- package/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +2145 -638
- package/eigen/Eigen/src/Core/arch/AVX/Reductions.h +353 -0
- package/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +253 -60
- package/eigen/Eigen/src/Core/arch/AVX512/Complex.h +278 -228
- package/eigen/Eigen/src/Core/arch/AVX512/GemmKernel.h +1245 -0
- package/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +48 -269
- package/eigen/Eigen/src/Core/arch/AVX512/MathFunctionsFP16.h +75 -0
- package/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +1597 -754
- package/eigen/Eigen/src/Core/arch/AVX512/PacketMathFP16.h +1413 -0
- package/eigen/Eigen/src/Core/arch/AVX512/Reductions.h +297 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TrsmKernel.h +1167 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TrsmUnrolls.inc +1219 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TypeCasting.h +229 -41
- package/eigen/Eigen/src/Core/arch/AVX512/TypeCastingFP16.h +130 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +420 -184
- package/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +40 -49
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +2962 -2213
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +196 -212
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +713 -441
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMAbfloat16.h +742 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixVectorProduct.inc +2818 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h +2380 -1362
- package/eigen/Eigen/src/Core/arch/AltiVec/TypeCasting.h +153 -0
- package/eigen/Eigen/src/Core/arch/Default/BFloat16.h +390 -224
- package/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +78 -67
- package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +1784 -799
- package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +167 -50
- package/eigen/Eigen/src/Core/arch/Default/Half.h +528 -379
- package/eigen/Eigen/src/Core/arch/Default/Settings.h +10 -12
- package/eigen/Eigen/src/Core/arch/GPU/Complex.h +244 -0
- package/eigen/Eigen/src/Core/arch/GPU/MathFunctions.h +41 -40
- package/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +550 -523
- package/eigen/Eigen/src/Core/arch/GPU/Tuple.h +268 -0
- package/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +27 -30
- package/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +8 -8
- package/eigen/Eigen/src/Core/arch/HVX/PacketMath.h +1088 -0
- package/eigen/Eigen/src/Core/arch/LSX/Complex.h +520 -0
- package/eigen/Eigen/src/Core/arch/LSX/GeneralBlockPanelKernel.h +23 -0
- package/eigen/Eigen/src/Core/arch/LSX/MathFunctions.h +43 -0
- package/eigen/Eigen/src/Core/arch/LSX/PacketMath.h +2866 -0
- package/eigen/Eigen/src/Core/arch/LSX/TypeCasting.h +526 -0
- package/eigen/Eigen/src/Core/arch/MSA/Complex.h +54 -82
- package/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +84 -92
- package/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +51 -47
- package/eigen/Eigen/src/Core/arch/NEON/Complex.h +454 -306
- package/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +175 -115
- package/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +23 -30
- package/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +4366 -2857
- package/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +616 -393
- package/eigen/Eigen/src/Core/arch/NEON/UnaryFunctors.h +57 -0
- package/eigen/Eigen/src/Core/arch/SSE/Complex.h +350 -198
- package/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +38 -149
- package/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +1791 -912
- package/eigen/Eigen/src/Core/arch/SSE/Reductions.h +324 -0
- package/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +128 -40
- package/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +10 -6
- package/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +156 -234
- package/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +6 -3
- package/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +27 -32
- package/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +119 -117
- package/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +325 -419
- package/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +15 -17
- package/eigen/Eigen/src/Core/arch/ZVector/Complex.h +325 -181
- package/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +94 -83
- package/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +811 -458
- package/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +121 -124
- package/eigen/Eigen/src/Core/functors/BinaryFunctors.h +576 -370
- package/eigen/Eigen/src/Core/functors/NullaryFunctors.h +194 -109
- package/eigen/Eigen/src/Core/functors/StlFunctors.h +95 -112
- package/eigen/Eigen/src/Core/functors/TernaryFunctors.h +34 -7
- package/eigen/Eigen/src/Core/functors/UnaryFunctors.h +1038 -749
- package/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +1883 -1375
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +312 -370
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +189 -176
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +84 -81
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +154 -73
- package/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +292 -337
- package/eigen/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +80 -77
- package/eigen/Eigen/src/Core/products/Parallelizer.h +207 -105
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +327 -388
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +206 -224
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +138 -147
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +58 -61
- package/eigen/Eigen/src/Core/products/SelfadjointProduct.h +71 -71
- package/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h +48 -47
- package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h +294 -369
- package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +246 -238
- package/eigen/Eigen/src/Core/products/TriangularMatrixVector.h +244 -247
- package/eigen/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +212 -192
- package/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h +328 -277
- package/eigen/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +108 -109
- package/eigen/Eigen/src/Core/products/TriangularSolverVector.h +68 -94
- package/eigen/Eigen/src/Core/util/Assert.h +158 -0
- package/eigen/Eigen/src/Core/util/BlasUtil.h +342 -303
- package/eigen/Eigen/src/Core/util/ConfigureVectorization.h +348 -317
- package/eigen/Eigen/src/Core/util/Constants.h +297 -262
- package/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +130 -90
- package/eigen/Eigen/src/Core/util/EmulateArray.h +270 -0
- package/eigen/Eigen/src/Core/util/ForwardDeclarations.h +449 -247
- package/eigen/Eigen/src/Core/util/GpuHipCudaDefines.inc +101 -0
- package/eigen/Eigen/src/Core/util/GpuHipCudaUndefines.inc +45 -0
- package/eigen/Eigen/src/Core/util/IndexedViewHelper.h +417 -116
- package/eigen/Eigen/src/Core/util/IntegralConstant.h +211 -204
- package/eigen/Eigen/src/Core/util/MKL_support.h +39 -37
- package/eigen/Eigen/src/Core/util/Macros.h +655 -773
- package/eigen/Eigen/src/Core/util/MaxSizeVector.h +139 -0
- package/eigen/Eigen/src/Core/util/Memory.h +970 -748
- package/eigen/Eigen/src/Core/util/Meta.h +581 -633
- package/eigen/Eigen/src/Core/util/MoreMeta.h +638 -0
- package/eigen/Eigen/src/Core/util/ReenableStupidWarnings.h +32 -19
- package/eigen/Eigen/src/Core/util/ReshapedHelper.h +17 -17
- package/eigen/Eigen/src/Core/util/Serializer.h +209 -0
- package/eigen/Eigen/src/Core/util/StaticAssert.h +50 -166
- package/eigen/Eigen/src/Core/util/SymbolicIndex.h +377 -225
- package/eigen/Eigen/src/Core/util/XprHelper.h +784 -547
- package/eigen/Eigen/src/Eigenvalues/ComplexEigenSolver.h +246 -277
- package/eigen/Eigen/src/Eigenvalues/ComplexSchur.h +299 -319
- package/eigen/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +52 -48
- package/eigen/Eigen/src/Eigenvalues/EigenSolver.h +413 -456
- package/eigen/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +309 -325
- package/eigen/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +157 -171
- package/eigen/Eigen/src/Eigenvalues/HessenbergDecomposition.h +292 -310
- package/eigen/Eigen/src/Eigenvalues/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +89 -105
- package/eigen/Eigen/src/Eigenvalues/RealQZ.h +537 -607
- package/eigen/Eigen/src/Eigenvalues/RealSchur.h +342 -381
- package/eigen/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +41 -35
- package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +541 -595
- package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +47 -44
- package/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +430 -462
- package/eigen/Eigen/src/Geometry/AlignedBox.h +226 -227
- package/eigen/Eigen/src/Geometry/AngleAxis.h +131 -133
- package/eigen/Eigen/src/Geometry/EulerAngles.h +163 -74
- package/eigen/Eigen/src/Geometry/Homogeneous.h +285 -333
- package/eigen/Eigen/src/Geometry/Hyperplane.h +151 -160
- package/eigen/Eigen/src/Geometry/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Geometry/OrthoMethods.h +168 -146
- package/eigen/Eigen/src/Geometry/ParametrizedLine.h +127 -127
- package/eigen/Eigen/src/Geometry/Quaternion.h +566 -506
- package/eigen/Eigen/src/Geometry/Rotation2D.h +107 -105
- package/eigen/Eigen/src/Geometry/RotationBase.h +148 -145
- package/eigen/Eigen/src/Geometry/Scaling.h +113 -106
- package/eigen/Eigen/src/Geometry/Transform.h +858 -936
- package/eigen/Eigen/src/Geometry/Translation.h +94 -92
- package/eigen/Eigen/src/Geometry/Umeyama.h +79 -84
- package/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +90 -104
- package/eigen/Eigen/src/Householder/BlockHouseholder.h +51 -46
- package/eigen/Eigen/src/Householder/Householder.h +102 -124
- package/eigen/Eigen/src/Householder/HouseholderSequence.h +412 -453
- package/eigen/Eigen/src/Householder/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +149 -162
- package/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +124 -119
- package/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +92 -104
- package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +251 -243
- package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +224 -228
- package/eigen/Eigen/src/IterativeLinearSolvers/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +178 -227
- package/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +79 -84
- package/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +54 -60
- package/eigen/Eigen/src/Jacobi/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Jacobi/Jacobi.h +252 -308
- package/eigen/Eigen/src/KLUSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/KLUSupport/KLUSupport.h +208 -227
- package/eigen/Eigen/src/LU/Determinant.h +50 -69
- package/eigen/Eigen/src/LU/FullPivLU.h +545 -596
- package/eigen/Eigen/src/LU/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/LU/InverseImpl.h +206 -285
- package/eigen/Eigen/src/LU/PartialPivLU.h +390 -428
- package/eigen/Eigen/src/LU/PartialPivLU_LAPACKE.h +54 -40
- package/eigen/Eigen/src/LU/arch/InverseSize4.h +72 -70
- package/eigen/Eigen/src/MetisSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/MetisSupport/MetisSupport.h +81 -93
- package/eigen/Eigen/src/OrderingMethods/Amd.h +243 -265
- package/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +831 -1004
- package/eigen/Eigen/src/OrderingMethods/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/OrderingMethods/Ordering.h +112 -119
- package/eigen/Eigen/src/PaStiXSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/PaStiXSupport/PaStiXSupport.h +524 -570
- package/eigen/Eigen/src/PardisoSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/PardisoSupport/PardisoSupport.h +385 -430
- package/eigen/Eigen/src/QR/ColPivHouseholderQR.h +479 -479
- package/eigen/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +120 -56
- package/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +166 -153
- package/eigen/Eigen/src/QR/FullPivHouseholderQR.h +495 -475
- package/eigen/Eigen/src/QR/HouseholderQR.h +394 -285
- package/eigen/Eigen/src/QR/HouseholderQR_LAPACKE.h +32 -23
- package/eigen/Eigen/src/QR/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SPQRSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +244 -264
- package/eigen/Eigen/src/SVD/BDCSVD.h +817 -713
- package/eigen/Eigen/src/SVD/BDCSVD_LAPACKE.h +174 -0
- package/eigen/Eigen/src/SVD/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SVD/JacobiSVD.h +577 -543
- package/eigen/Eigen/src/SVD/JacobiSVD_LAPACKE.h +85 -49
- package/eigen/Eigen/src/SVD/SVDBase.h +242 -182
- package/eigen/Eigen/src/SVD/UpperBidiagonalization.h +200 -235
- package/eigen/Eigen/src/SparseCholesky/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +765 -594
- package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +308 -94
- package/eigen/Eigen/src/SparseCore/AmbiVector.h +202 -251
- package/eigen/Eigen/src/SparseCore/CompressedStorage.h +184 -252
- package/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +134 -178
- package/eigen/Eigen/src/SparseCore/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseCore/SparseAssign.h +149 -140
- package/eigen/Eigen/src/SparseCore/SparseBlock.h +403 -440
- package/eigen/Eigen/src/SparseCore/SparseColEtree.h +100 -112
- package/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +525 -303
- package/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +555 -339
- package/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +100 -108
- package/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +169 -197
- package/eigen/Eigen/src/SparseCore/SparseDiagonalProduct.h +71 -71
- package/eigen/Eigen/src/SparseCore/SparseDot.h +49 -47
- package/eigen/Eigen/src/SparseCore/SparseFuzzy.h +13 -11
- package/eigen/Eigen/src/SparseCore/SparseMap.h +243 -253
- package/eigen/Eigen/src/SparseCore/SparseMatrix.h +1603 -1245
- package/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +403 -350
- package/eigen/Eigen/src/SparseCore/SparsePermutation.h +186 -115
- package/eigen/Eigen/src/SparseCore/SparseProduct.h +94 -97
- package/eigen/Eigen/src/SparseCore/SparseRedux.h +22 -24
- package/eigen/Eigen/src/SparseCore/SparseRef.h +268 -295
- package/eigen/Eigen/src/SparseCore/SparseSelfAdjointView.h +370 -416
- package/eigen/Eigen/src/SparseCore/SparseSolverBase.h +78 -87
- package/eigen/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +81 -95
- package/eigen/Eigen/src/SparseCore/SparseTranspose.h +62 -71
- package/eigen/Eigen/src/SparseCore/SparseTriangularView.h +132 -144
- package/eigen/Eigen/src/SparseCore/SparseUtil.h +138 -115
- package/eigen/Eigen/src/SparseCore/SparseVector.h +426 -372
- package/eigen/Eigen/src/SparseCore/SparseView.h +164 -193
- package/eigen/Eigen/src/SparseCore/TriangularSolver.h +129 -170
- package/eigen/Eigen/src/SparseLU/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseLU/SparseLU.h +756 -710
- package/eigen/Eigen/src/SparseLU/SparseLUImpl.h +61 -48
- package/eigen/Eigen/src/SparseLU/SparseLU_Memory.h +102 -118
- package/eigen/Eigen/src/SparseLU/SparseLU_Structs.h +38 -35
- package/eigen/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +245 -301
- package/eigen/Eigen/src/SparseLU/SparseLU_Utils.h +44 -49
- package/eigen/Eigen/src/SparseLU/SparseLU_column_bmod.h +104 -108
- package/eigen/Eigen/src/SparseLU/SparseLU_column_dfs.h +89 -100
- package/eigen/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +57 -58
- package/eigen/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +43 -55
- package/eigen/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +74 -71
- package/eigen/Eigen/src/SparseLU/SparseLU_panel_bmod.h +124 -132
- package/eigen/Eigen/src/SparseLU/SparseLU_panel_dfs.h +136 -159
- package/eigen/Eigen/src/SparseLU/SparseLU_pivotL.h +51 -52
- package/eigen/Eigen/src/SparseLU/SparseLU_pruneL.h +67 -73
- package/eigen/Eigen/src/SparseLU/SparseLU_relax_snode.h +24 -26
- package/eigen/Eigen/src/SparseQR/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseQR/SparseQR.h +450 -502
- package/eigen/Eigen/src/StlSupport/StdDeque.h +28 -93
- package/eigen/Eigen/src/StlSupport/StdList.h +28 -84
- package/eigen/Eigen/src/StlSupport/StdVector.h +28 -108
- package/eigen/Eigen/src/StlSupport/details.h +48 -50
- package/eigen/Eigen/src/SuperLUSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SuperLUSupport/SuperLUSupport.h +634 -730
- package/eigen/Eigen/src/ThreadPool/Barrier.h +70 -0
- package/eigen/Eigen/src/ThreadPool/CoreThreadPoolDevice.h +336 -0
- package/eigen/Eigen/src/ThreadPool/EventCount.h +241 -0
- package/eigen/Eigen/src/ThreadPool/ForkJoin.h +140 -0
- package/eigen/Eigen/src/ThreadPool/InternalHeaderCheck.h +4 -0
- package/eigen/Eigen/src/ThreadPool/NonBlockingThreadPool.h +587 -0
- package/eigen/Eigen/src/ThreadPool/RunQueue.h +230 -0
- package/eigen/Eigen/src/ThreadPool/ThreadCancel.h +21 -0
- package/eigen/Eigen/src/ThreadPool/ThreadEnvironment.h +43 -0
- package/eigen/Eigen/src/ThreadPool/ThreadLocal.h +289 -0
- package/eigen/Eigen/src/ThreadPool/ThreadPoolInterface.h +50 -0
- package/eigen/Eigen/src/ThreadPool/ThreadYield.h +16 -0
- package/eigen/Eigen/src/UmfPackSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/UmfPackSupport/UmfPackSupport.h +428 -464
- package/eigen/Eigen/src/misc/Image.h +41 -43
- package/eigen/Eigen/src/misc/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/misc/Kernel.h +39 -41
- package/eigen/Eigen/src/misc/RealSvd2x2.h +19 -21
- package/eigen/Eigen/src/misc/blas.h +83 -426
- package/eigen/Eigen/src/misc/lapacke.h +9972 -16179
- package/eigen/Eigen/src/misc/lapacke_helpers.h +163 -0
- package/eigen/Eigen/src/misc/lapacke_mangling.h +4 -5
- package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.inc +344 -0
- package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.inc +544 -0
- package/eigen/Eigen/src/plugins/{BlockMethods.h → BlockMethods.inc} +434 -506
- package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.inc +116 -0
- package/eigen/Eigen/src/plugins/{CommonCwiseUnaryOps.h → CommonCwiseUnaryOps.inc} +58 -68
- package/eigen/Eigen/src/plugins/IndexedViewMethods.inc +192 -0
- package/eigen/Eigen/src/plugins/InternalHeaderCheck.inc +3 -0
- package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.inc +331 -0
- package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.inc +118 -0
- package/eigen/Eigen/src/plugins/ReshapedMethods.inc +133 -0
- package/package.json +1 -1
- package/eigen/COPYING.APACHE +0 -203
- package/eigen/COPYING.BSD +0 -26
- package/eigen/COPYING.GPL +0 -674
- package/eigen/COPYING.LGPL +0 -502
- package/eigen/COPYING.MINPACK +0 -51
- package/eigen/COPYING.MPL2 +0 -373
- package/eigen/COPYING.README +0 -18
- package/eigen/Eigen/src/Core/BooleanRedux.h +0 -162
- package/eigen/Eigen/src/Core/arch/CUDA/Complex.h +0 -258
- package/eigen/Eigen/src/Core/arch/Default/TypeCasting.h +0 -120
- package/eigen/Eigen/src/Core/arch/SYCL/SyclMemoryModel.h +0 -694
- package/eigen/Eigen/src/Core/util/NonMPL2.h +0 -3
- package/eigen/Eigen/src/SparseCore/MappedSparseMatrix.h +0 -67
- package/eigen/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +0 -280
- package/eigen/Eigen/src/misc/lapack.h +0 -152
- package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h +0 -358
- package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +0 -696
- package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.h +0 -115
- package/eigen/Eigen/src/plugins/IndexedViewMethods.h +0 -262
- package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +0 -152
- package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +0 -95
- package/eigen/Eigen/src/plugins/ReshapedMethods.h +0 -149
- package/eigen/README.md +0 -5
|
@@ -11,7 +11,10 @@
|
|
|
11
11
|
#ifndef EIGEN_INVERSE_IMPL_H
|
|
12
12
|
#define EIGEN_INVERSE_IMPL_H
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
// IWYU pragma: private
|
|
15
|
+
#include "./InternalHeaderCheck.h"
|
|
16
|
+
|
|
17
|
+
namespace Eigen {
|
|
15
18
|
|
|
16
19
|
namespace internal {
|
|
17
20
|
|
|
@@ -19,51 +22,40 @@ namespace internal {
|
|
|
19
22
|
*** General case implementation ***
|
|
20
23
|
**********************************/
|
|
21
24
|
|
|
22
|
-
template<typename MatrixType, typename ResultType, int Size = MatrixType::RowsAtCompileTime>
|
|
23
|
-
struct compute_inverse
|
|
24
|
-
{
|
|
25
|
-
EIGEN_DEVICE_FUNC
|
|
26
|
-
static inline void run(const MatrixType& matrix, ResultType& result)
|
|
27
|
-
{
|
|
25
|
+
template <typename MatrixType, typename ResultType, int Size = MatrixType::RowsAtCompileTime>
|
|
26
|
+
struct compute_inverse {
|
|
27
|
+
EIGEN_DEVICE_FUNC static inline void run(const MatrixType& matrix, ResultType& result) {
|
|
28
28
|
result = matrix.partialPivLu().inverse();
|
|
29
29
|
}
|
|
30
30
|
};
|
|
31
31
|
|
|
32
|
-
template<typename MatrixType, typename ResultType, int Size = MatrixType::RowsAtCompileTime>
|
|
33
|
-
struct compute_inverse_and_det_with_check { /* nothing! general case not supported. */
|
|
32
|
+
template <typename MatrixType, typename ResultType, int Size = MatrixType::RowsAtCompileTime>
|
|
33
|
+
struct compute_inverse_and_det_with_check { /* nothing! general case not supported. */
|
|
34
|
+
};
|
|
34
35
|
|
|
35
36
|
/****************************
|
|
36
37
|
*** Size 1 implementation ***
|
|
37
38
|
****************************/
|
|
38
39
|
|
|
39
|
-
template<typename MatrixType, typename ResultType>
|
|
40
|
-
struct compute_inverse<MatrixType, ResultType, 1>
|
|
41
|
-
{
|
|
42
|
-
EIGEN_DEVICE_FUNC
|
|
43
|
-
static inline void run(const MatrixType& matrix, ResultType& result)
|
|
44
|
-
{
|
|
40
|
+
template <typename MatrixType, typename ResultType>
|
|
41
|
+
struct compute_inverse<MatrixType, ResultType, 1> {
|
|
42
|
+
EIGEN_DEVICE_FUNC static inline void run(const MatrixType& matrix, ResultType& result) {
|
|
45
43
|
typedef typename MatrixType::Scalar Scalar;
|
|
46
44
|
internal::evaluator<MatrixType> matrixEval(matrix);
|
|
47
|
-
result.coeffRef(0,0) = Scalar(1) / matrixEval.coeff(0,0);
|
|
45
|
+
result.coeffRef(0, 0) = Scalar(1) / matrixEval.coeff(0, 0);
|
|
48
46
|
}
|
|
49
47
|
};
|
|
50
48
|
|
|
51
|
-
template<typename MatrixType, typename ResultType>
|
|
52
|
-
struct compute_inverse_and_det_with_check<MatrixType, ResultType, 1>
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
const typename MatrixType::RealScalar& absDeterminantThreshold,
|
|
58
|
-
ResultType& result,
|
|
59
|
-
typename ResultType::Scalar& determinant,
|
|
60
|
-
bool& invertible
|
|
61
|
-
)
|
|
62
|
-
{
|
|
49
|
+
template <typename MatrixType, typename ResultType>
|
|
50
|
+
struct compute_inverse_and_det_with_check<MatrixType, ResultType, 1> {
|
|
51
|
+
EIGEN_DEVICE_FUNC static inline void run(const MatrixType& matrix,
|
|
52
|
+
const typename MatrixType::RealScalar& absDeterminantThreshold,
|
|
53
|
+
ResultType& result, typename ResultType::Scalar& determinant,
|
|
54
|
+
bool& invertible) {
|
|
63
55
|
using std::abs;
|
|
64
|
-
determinant = matrix.coeff(0,0);
|
|
56
|
+
determinant = matrix.coeff(0, 0);
|
|
65
57
|
invertible = abs(determinant) > absDeterminantThreshold;
|
|
66
|
-
if(invertible) result.coeffRef(0,0) = typename ResultType::Scalar(1) / determinant;
|
|
58
|
+
if (invertible) result.coeffRef(0, 0) = typename ResultType::Scalar(1) / determinant;
|
|
67
59
|
}
|
|
68
60
|
};
|
|
69
61
|
|
|
@@ -71,48 +63,37 @@ struct compute_inverse_and_det_with_check<MatrixType, ResultType, 1>
|
|
|
71
63
|
*** Size 2 implementation ***
|
|
72
64
|
****************************/
|
|
73
65
|
|
|
74
|
-
template<typename MatrixType, typename ResultType>
|
|
75
|
-
EIGEN_DEVICE_FUNC
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
result.coeffRef(0,
|
|
82
|
-
result.coeffRef(1,
|
|
83
|
-
result.coeffRef(0,1) = -matrix.coeff(0,1) * invdet;
|
|
84
|
-
result.coeffRef(1,1) = temp * invdet;
|
|
66
|
+
template <typename MatrixType, typename ResultType>
|
|
67
|
+
EIGEN_DEVICE_FUNC inline void compute_inverse_size2_helper(const MatrixType& matrix,
|
|
68
|
+
const typename ResultType::Scalar& invdet,
|
|
69
|
+
ResultType& result) {
|
|
70
|
+
typename ResultType::Scalar temp = matrix.coeff(0, 0);
|
|
71
|
+
result.coeffRef(0, 0) = matrix.coeff(1, 1) * invdet;
|
|
72
|
+
result.coeffRef(1, 0) = -matrix.coeff(1, 0) * invdet;
|
|
73
|
+
result.coeffRef(0, 1) = -matrix.coeff(0, 1) * invdet;
|
|
74
|
+
result.coeffRef(1, 1) = temp * invdet;
|
|
85
75
|
}
|
|
86
76
|
|
|
87
|
-
template<typename MatrixType, typename ResultType>
|
|
88
|
-
struct compute_inverse<MatrixType, ResultType, 2>
|
|
89
|
-
{
|
|
90
|
-
EIGEN_DEVICE_FUNC
|
|
91
|
-
static inline void run(const MatrixType& matrix, ResultType& result)
|
|
92
|
-
{
|
|
77
|
+
template <typename MatrixType, typename ResultType>
|
|
78
|
+
struct compute_inverse<MatrixType, ResultType, 2> {
|
|
79
|
+
EIGEN_DEVICE_FUNC static inline void run(const MatrixType& matrix, ResultType& result) {
|
|
93
80
|
typedef typename ResultType::Scalar Scalar;
|
|
94
81
|
const Scalar invdet = typename MatrixType::Scalar(1) / matrix.determinant();
|
|
95
82
|
compute_inverse_size2_helper(matrix, invdet, result);
|
|
96
83
|
}
|
|
97
84
|
};
|
|
98
85
|
|
|
99
|
-
template<typename MatrixType, typename ResultType>
|
|
100
|
-
struct compute_inverse_and_det_with_check<MatrixType, ResultType, 2>
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
const typename MatrixType::RealScalar& absDeterminantThreshold,
|
|
106
|
-
ResultType& inverse,
|
|
107
|
-
typename ResultType::Scalar& determinant,
|
|
108
|
-
bool& invertible
|
|
109
|
-
)
|
|
110
|
-
{
|
|
86
|
+
template <typename MatrixType, typename ResultType>
|
|
87
|
+
struct compute_inverse_and_det_with_check<MatrixType, ResultType, 2> {
|
|
88
|
+
EIGEN_DEVICE_FUNC static inline void run(const MatrixType& matrix,
|
|
89
|
+
const typename MatrixType::RealScalar& absDeterminantThreshold,
|
|
90
|
+
ResultType& inverse, typename ResultType::Scalar& determinant,
|
|
91
|
+
bool& invertible) {
|
|
111
92
|
using std::abs;
|
|
112
93
|
typedef typename ResultType::Scalar Scalar;
|
|
113
94
|
determinant = matrix.determinant();
|
|
114
95
|
invertible = abs(determinant) > absDeterminantThreshold;
|
|
115
|
-
if(!invertible) return;
|
|
96
|
+
if (!invertible) return;
|
|
116
97
|
const Scalar invdet = Scalar(1) / determinant;
|
|
117
98
|
compute_inverse_size2_helper(matrix, invdet, inverse);
|
|
118
99
|
}
|
|
@@ -122,79 +103,58 @@ struct compute_inverse_and_det_with_check<MatrixType, ResultType, 2>
|
|
|
122
103
|
*** Size 3 implementation ***
|
|
123
104
|
****************************/
|
|
124
105
|
|
|
125
|
-
template<typename MatrixType, int i, int j>
|
|
126
|
-
EIGEN_DEVICE_FUNC
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
enum {
|
|
130
|
-
i1 = (i+1) % 3,
|
|
131
|
-
i2 = (i+2) % 3,
|
|
132
|
-
j1 = (j+1) % 3,
|
|
133
|
-
j2 = (j+2) % 3
|
|
134
|
-
};
|
|
135
|
-
return m.coeff(i1, j1) * m.coeff(i2, j2)
|
|
136
|
-
- m.coeff(i1, j2) * m.coeff(i2, j1);
|
|
106
|
+
template <typename MatrixType, int i, int j>
|
|
107
|
+
EIGEN_DEVICE_FUNC inline typename MatrixType::Scalar cofactor_3x3(const MatrixType& m) {
|
|
108
|
+
enum { i1 = (i + 1) % 3, i2 = (i + 2) % 3, j1 = (j + 1) % 3, j2 = (j + 2) % 3 };
|
|
109
|
+
return m.coeff(i1, j1) * m.coeff(i2, j2) - m.coeff(i1, j2) * m.coeff(i2, j1);
|
|
137
110
|
}
|
|
138
111
|
|
|
139
|
-
template<typename MatrixType, typename ResultType>
|
|
140
|
-
EIGEN_DEVICE_FUNC
|
|
141
|
-
|
|
142
|
-
const
|
|
143
|
-
const typename ResultType::Scalar& invdet,
|
|
144
|
-
const Matrix<typename ResultType::Scalar,3,1>& cofactors_col0,
|
|
145
|
-
ResultType& result)
|
|
146
|
-
{
|
|
112
|
+
template <typename MatrixType, typename ResultType>
|
|
113
|
+
EIGEN_DEVICE_FUNC inline void compute_inverse_size3_helper(
|
|
114
|
+
const MatrixType& matrix, const typename ResultType::Scalar& invdet,
|
|
115
|
+
const Matrix<typename ResultType::Scalar, 3, 1>& cofactors_col0, ResultType& result) {
|
|
147
116
|
// Compute cofactors in a way that avoids aliasing issues.
|
|
148
117
|
typedef typename ResultType::Scalar Scalar;
|
|
149
|
-
const Scalar c01 = cofactor_3x3<MatrixType,0,1>(matrix) * invdet;
|
|
150
|
-
const Scalar c11 = cofactor_3x3<MatrixType,1,1>(matrix) * invdet;
|
|
151
|
-
const Scalar c02 = cofactor_3x3<MatrixType,0,2>(matrix) * invdet;
|
|
152
|
-
result.coeffRef(1,2) =
|
|
153
|
-
result.coeffRef(2,1) =
|
|
154
|
-
result.coeffRef(2,2) =
|
|
155
|
-
result.coeffRef(1,0) =
|
|
156
|
-
result.coeffRef(1,1) =
|
|
157
|
-
result.coeffRef(2,0) =
|
|
118
|
+
const Scalar c01 = cofactor_3x3<MatrixType, 0, 1>(matrix) * invdet;
|
|
119
|
+
const Scalar c11 = cofactor_3x3<MatrixType, 1, 1>(matrix) * invdet;
|
|
120
|
+
const Scalar c02 = cofactor_3x3<MatrixType, 0, 2>(matrix) * invdet;
|
|
121
|
+
result.coeffRef(1, 2) = cofactor_3x3<MatrixType, 2, 1>(matrix) * invdet;
|
|
122
|
+
result.coeffRef(2, 1) = cofactor_3x3<MatrixType, 1, 2>(matrix) * invdet;
|
|
123
|
+
result.coeffRef(2, 2) = cofactor_3x3<MatrixType, 2, 2>(matrix) * invdet;
|
|
124
|
+
result.coeffRef(1, 0) = c01;
|
|
125
|
+
result.coeffRef(1, 1) = c11;
|
|
126
|
+
result.coeffRef(2, 0) = c02;
|
|
158
127
|
result.row(0) = cofactors_col0 * invdet;
|
|
159
128
|
}
|
|
160
129
|
|
|
161
|
-
template<typename MatrixType, typename ResultType>
|
|
162
|
-
struct compute_inverse<MatrixType, ResultType, 3>
|
|
163
|
-
{
|
|
164
|
-
EIGEN_DEVICE_FUNC
|
|
165
|
-
static inline void run(const MatrixType& matrix, ResultType& result)
|
|
166
|
-
{
|
|
130
|
+
template <typename MatrixType, typename ResultType>
|
|
131
|
+
struct compute_inverse<MatrixType, ResultType, 3> {
|
|
132
|
+
EIGEN_DEVICE_FUNC static inline void run(const MatrixType& matrix, ResultType& result) {
|
|
167
133
|
typedef typename ResultType::Scalar Scalar;
|
|
168
|
-
Matrix<typename MatrixType::Scalar,3,1> cofactors_col0;
|
|
169
|
-
cofactors_col0.coeffRef(0) =
|
|
170
|
-
cofactors_col0.coeffRef(1) =
|
|
171
|
-
cofactors_col0.coeffRef(2) =
|
|
134
|
+
Matrix<typename MatrixType::Scalar, 3, 1> cofactors_col0;
|
|
135
|
+
cofactors_col0.coeffRef(0) = cofactor_3x3<MatrixType, 0, 0>(matrix);
|
|
136
|
+
cofactors_col0.coeffRef(1) = cofactor_3x3<MatrixType, 1, 0>(matrix);
|
|
137
|
+
cofactors_col0.coeffRef(2) = cofactor_3x3<MatrixType, 2, 0>(matrix);
|
|
172
138
|
const Scalar det = (cofactors_col0.cwiseProduct(matrix.col(0))).sum();
|
|
173
139
|
const Scalar invdet = Scalar(1) / det;
|
|
174
140
|
compute_inverse_size3_helper(matrix, invdet, cofactors_col0, result);
|
|
175
141
|
}
|
|
176
142
|
};
|
|
177
143
|
|
|
178
|
-
template<typename MatrixType, typename ResultType>
|
|
179
|
-
struct compute_inverse_and_det_with_check<MatrixType, ResultType, 3>
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
const typename MatrixType::RealScalar& absDeterminantThreshold,
|
|
185
|
-
ResultType& inverse,
|
|
186
|
-
typename ResultType::Scalar& determinant,
|
|
187
|
-
bool& invertible
|
|
188
|
-
)
|
|
189
|
-
{
|
|
144
|
+
template <typename MatrixType, typename ResultType>
|
|
145
|
+
struct compute_inverse_and_det_with_check<MatrixType, ResultType, 3> {
|
|
146
|
+
EIGEN_DEVICE_FUNC static inline void run(const MatrixType& matrix,
|
|
147
|
+
const typename MatrixType::RealScalar& absDeterminantThreshold,
|
|
148
|
+
ResultType& inverse, typename ResultType::Scalar& determinant,
|
|
149
|
+
bool& invertible) {
|
|
190
150
|
typedef typename ResultType::Scalar Scalar;
|
|
191
|
-
Matrix<Scalar,3,1> cofactors_col0;
|
|
192
|
-
cofactors_col0.coeffRef(0) =
|
|
193
|
-
cofactors_col0.coeffRef(1) =
|
|
194
|
-
cofactors_col0.coeffRef(2) =
|
|
151
|
+
Matrix<Scalar, 3, 1> cofactors_col0;
|
|
152
|
+
cofactors_col0.coeffRef(0) = cofactor_3x3<MatrixType, 0, 0>(matrix);
|
|
153
|
+
cofactors_col0.coeffRef(1) = cofactor_3x3<MatrixType, 1, 0>(matrix);
|
|
154
|
+
cofactors_col0.coeffRef(2) = cofactor_3x3<MatrixType, 2, 0>(matrix);
|
|
195
155
|
determinant = (cofactors_col0.cwiseProduct(matrix.col(0))).sum();
|
|
196
156
|
invertible = Eigen::numext::abs(determinant) > absDeterminantThreshold;
|
|
197
|
-
if(!invertible) return;
|
|
157
|
+
if (!invertible) return;
|
|
198
158
|
const Scalar invdet = Scalar(1) / determinant;
|
|
199
159
|
compute_inverse_size3_helper(matrix, invdet, cofactors_col0, inverse);
|
|
200
160
|
}
|
|
@@ -204,84 +164,59 @@ struct compute_inverse_and_det_with_check<MatrixType, ResultType, 3>
|
|
|
204
164
|
*** Size 4 implementation ***
|
|
205
165
|
****************************/
|
|
206
166
|
|
|
207
|
-
template<typename Derived>
|
|
208
|
-
EIGEN_DEVICE_FUNC
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
return matrix.coeff(i1,j1)
|
|
213
|
-
* (matrix.coeff(i2,j2) * matrix.coeff(i3,j3) - matrix.coeff(i2,j3) * matrix.coeff(i3,j2));
|
|
167
|
+
template <typename Derived>
|
|
168
|
+
EIGEN_DEVICE_FUNC inline const typename Derived::Scalar general_det3_helper(const MatrixBase<Derived>& matrix, int i1,
|
|
169
|
+
int i2, int i3, int j1, int j2, int j3) {
|
|
170
|
+
return matrix.coeff(i1, j1) *
|
|
171
|
+
(matrix.coeff(i2, j2) * matrix.coeff(i3, j3) - matrix.coeff(i2, j3) * matrix.coeff(i3, j2));
|
|
214
172
|
}
|
|
215
173
|
|
|
216
|
-
template<typename MatrixType, int i, int j>
|
|
217
|
-
EIGEN_DEVICE_FUNC
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
i1 = (i+1) % 4,
|
|
222
|
-
i2 = (i+2) % 4,
|
|
223
|
-
i3 = (i+3) % 4,
|
|
224
|
-
j1 = (j+1) % 4,
|
|
225
|
-
j2 = (j+2) % 4,
|
|
226
|
-
j3 = (j+3) % 4
|
|
227
|
-
};
|
|
228
|
-
return general_det3_helper(matrix, i1, i2, i3, j1, j2, j3)
|
|
229
|
-
+ general_det3_helper(matrix, i2, i3, i1, j1, j2, j3)
|
|
230
|
-
+ general_det3_helper(matrix, i3, i1, i2, j1, j2, j3);
|
|
174
|
+
template <typename MatrixType, int i, int j>
|
|
175
|
+
EIGEN_DEVICE_FUNC inline typename MatrixType::Scalar cofactor_4x4(const MatrixType& matrix) {
|
|
176
|
+
enum { i1 = (i + 1) % 4, i2 = (i + 2) % 4, i3 = (i + 3) % 4, j1 = (j + 1) % 4, j2 = (j + 2) % 4, j3 = (j + 3) % 4 };
|
|
177
|
+
return general_det3_helper(matrix, i1, i2, i3, j1, j2, j3) + general_det3_helper(matrix, i2, i3, i1, j1, j2, j3) +
|
|
178
|
+
general_det3_helper(matrix, i3, i1, i2, j1, j2, j3);
|
|
231
179
|
}
|
|
232
180
|
|
|
233
|
-
template<int Arch, typename Scalar, typename MatrixType, typename ResultType>
|
|
234
|
-
struct compute_inverse_size4
|
|
235
|
-
{
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
result.coeffRef(
|
|
240
|
-
result.coeffRef(
|
|
241
|
-
result.coeffRef(2
|
|
242
|
-
result.coeffRef(
|
|
243
|
-
result.coeffRef(
|
|
244
|
-
result.coeffRef(1
|
|
245
|
-
result.coeffRef(
|
|
246
|
-
result.coeffRef(
|
|
247
|
-
result.coeffRef(
|
|
248
|
-
result.coeffRef(
|
|
249
|
-
result.coeffRef(
|
|
250
|
-
result.coeffRef(3
|
|
251
|
-
result.coeffRef(
|
|
252
|
-
result.coeffRef(1,3) = cofactor_4x4<MatrixType,3,1>(matrix);
|
|
253
|
-
result.coeffRef(2,3) = -cofactor_4x4<MatrixType,3,2>(matrix);
|
|
254
|
-
result.coeffRef(3,3) = cofactor_4x4<MatrixType,3,3>(matrix);
|
|
181
|
+
template <int Arch, typename Scalar, typename MatrixType, typename ResultType>
|
|
182
|
+
struct compute_inverse_size4 {
|
|
183
|
+
EIGEN_DEVICE_FUNC static void run(const MatrixType& matrix, ResultType& result) {
|
|
184
|
+
result.coeffRef(0, 0) = cofactor_4x4<MatrixType, 0, 0>(matrix);
|
|
185
|
+
result.coeffRef(1, 0) = -cofactor_4x4<MatrixType, 0, 1>(matrix);
|
|
186
|
+
result.coeffRef(2, 0) = cofactor_4x4<MatrixType, 0, 2>(matrix);
|
|
187
|
+
result.coeffRef(3, 0) = -cofactor_4x4<MatrixType, 0, 3>(matrix);
|
|
188
|
+
result.coeffRef(0, 2) = cofactor_4x4<MatrixType, 2, 0>(matrix);
|
|
189
|
+
result.coeffRef(1, 2) = -cofactor_4x4<MatrixType, 2, 1>(matrix);
|
|
190
|
+
result.coeffRef(2, 2) = cofactor_4x4<MatrixType, 2, 2>(matrix);
|
|
191
|
+
result.coeffRef(3, 2) = -cofactor_4x4<MatrixType, 2, 3>(matrix);
|
|
192
|
+
result.coeffRef(0, 1) = -cofactor_4x4<MatrixType, 1, 0>(matrix);
|
|
193
|
+
result.coeffRef(1, 1) = cofactor_4x4<MatrixType, 1, 1>(matrix);
|
|
194
|
+
result.coeffRef(2, 1) = -cofactor_4x4<MatrixType, 1, 2>(matrix);
|
|
195
|
+
result.coeffRef(3, 1) = cofactor_4x4<MatrixType, 1, 3>(matrix);
|
|
196
|
+
result.coeffRef(0, 3) = -cofactor_4x4<MatrixType, 3, 0>(matrix);
|
|
197
|
+
result.coeffRef(1, 3) = cofactor_4x4<MatrixType, 3, 1>(matrix);
|
|
198
|
+
result.coeffRef(2, 3) = -cofactor_4x4<MatrixType, 3, 2>(matrix);
|
|
199
|
+
result.coeffRef(3, 3) = cofactor_4x4<MatrixType, 3, 3>(matrix);
|
|
255
200
|
result /= (matrix.col(0).cwiseProduct(result.row(0).transpose())).sum();
|
|
256
201
|
}
|
|
257
202
|
};
|
|
258
203
|
|
|
259
|
-
template<typename MatrixType, typename ResultType>
|
|
204
|
+
template <typename MatrixType, typename ResultType>
|
|
260
205
|
struct compute_inverse<MatrixType, ResultType, 4>
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
{
|
|
269
|
-
EIGEN_DEVICE_FUNC
|
|
270
|
-
static inline void run(
|
|
271
|
-
const MatrixType& matrix,
|
|
272
|
-
const typename MatrixType::RealScalar& absDeterminantThreshold,
|
|
273
|
-
ResultType& inverse,
|
|
274
|
-
typename ResultType::Scalar& determinant,
|
|
275
|
-
bool& invertible
|
|
276
|
-
)
|
|
277
|
-
{
|
|
206
|
+
: compute_inverse_size4<Architecture::Target, typename MatrixType::Scalar, MatrixType, ResultType> {};
|
|
207
|
+
|
|
208
|
+
template <typename MatrixType, typename ResultType>
|
|
209
|
+
struct compute_inverse_and_det_with_check<MatrixType, ResultType, 4> {
|
|
210
|
+
EIGEN_DEVICE_FUNC static inline void run(const MatrixType& matrix,
|
|
211
|
+
const typename MatrixType::RealScalar& absDeterminantThreshold,
|
|
212
|
+
ResultType& inverse, typename ResultType::Scalar& determinant,
|
|
213
|
+
bool& invertible) {
|
|
278
214
|
using std::abs;
|
|
279
215
|
determinant = matrix.determinant();
|
|
280
216
|
invertible = abs(determinant) > absDeterminantThreshold;
|
|
281
|
-
if(invertible && extract_data(matrix) != extract_data(inverse)) {
|
|
217
|
+
if (invertible && extract_data(matrix) != extract_data(inverse)) {
|
|
282
218
|
compute_inverse<MatrixType, ResultType>::run(matrix, inverse);
|
|
283
|
-
}
|
|
284
|
-
else if(invertible) {
|
|
219
|
+
} else if (invertible) {
|
|
285
220
|
MatrixType matrix_t = matrix;
|
|
286
221
|
compute_inverse<MatrixType, ResultType>::run(matrix_t, inverse);
|
|
287
222
|
}
|
|
@@ -292,141 +227,127 @@ struct compute_inverse_and_det_with_check<MatrixType, ResultType, 4>
|
|
|
292
227
|
*** MatrixBase methods ***
|
|
293
228
|
*************************/
|
|
294
229
|
|
|
295
|
-
}
|
|
230
|
+
} // end namespace internal
|
|
296
231
|
|
|
297
232
|
namespace internal {
|
|
298
233
|
|
|
299
234
|
// Specialization for "dense = dense_xpr.inverse()"
|
|
300
|
-
template<typename DstXprType, typename XprType>
|
|
301
|
-
struct Assignment<DstXprType, Inverse<XprType>,
|
|
302
|
-
{
|
|
235
|
+
template <typename DstXprType, typename XprType>
|
|
236
|
+
struct Assignment<DstXprType, Inverse<XprType>,
|
|
237
|
+
internal::assign_op<typename DstXprType::Scalar, typename XprType::Scalar>, Dense2Dense> {
|
|
303
238
|
typedef Inverse<XprType> SrcXprType;
|
|
304
|
-
EIGEN_DEVICE_FUNC
|
|
305
|
-
|
|
306
|
-
{
|
|
239
|
+
EIGEN_DEVICE_FUNC static void run(DstXprType& dst, const SrcXprType& src,
|
|
240
|
+
const internal::assign_op<typename DstXprType::Scalar, typename XprType::Scalar>&) {
|
|
307
241
|
Index dstRows = src.rows();
|
|
308
242
|
Index dstCols = src.cols();
|
|
309
|
-
if((dst.rows()!=dstRows) || (dst.cols()!=dstCols))
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
const int Size = EIGEN_PLAIN_ENUM_MIN(XprType::ColsAtCompileTime,DstXprType::ColsAtCompileTime);
|
|
243
|
+
if ((dst.rows() != dstRows) || (dst.cols() != dstCols)) dst.resize(dstRows, dstCols);
|
|
244
|
+
|
|
245
|
+
const int Size = plain_enum_min(XprType::ColsAtCompileTime, DstXprType::ColsAtCompileTime);
|
|
313
246
|
EIGEN_ONLY_USED_FOR_DEBUG(Size);
|
|
314
|
-
eigen_assert((
|
|
315
|
-
|
|
247
|
+
eigen_assert(((Size <= 1) || (Size > 4) || (extract_data(src.nestedExpression()) != extract_data(dst))) &&
|
|
248
|
+
"Aliasing problem detected in inverse(), you need to do inverse().eval() here.");
|
|
249
|
+
|
|
250
|
+
typedef typename internal::nested_eval<XprType, XprType::ColsAtCompileTime>::type ActualXprType;
|
|
251
|
+
typedef internal::remove_all_t<ActualXprType> ActualXprTypeCleanded;
|
|
316
252
|
|
|
317
|
-
typedef typename internal::nested_eval<XprType,XprType::ColsAtCompileTime>::type ActualXprType;
|
|
318
|
-
typedef typename internal::remove_all<ActualXprType>::type ActualXprTypeCleanded;
|
|
319
|
-
|
|
320
253
|
ActualXprType actual_xpr(src.nestedExpression());
|
|
321
|
-
|
|
254
|
+
|
|
322
255
|
compute_inverse<ActualXprTypeCleanded, DstXprType>::run(actual_xpr, dst);
|
|
323
256
|
}
|
|
324
257
|
};
|
|
325
258
|
|
|
326
|
-
|
|
327
|
-
} // end namespace internal
|
|
259
|
+
} // end namespace internal
|
|
328
260
|
|
|
329
261
|
/** \lu_module
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
template<typename Derived>
|
|
347
|
-
EIGEN_DEVICE_FUNC
|
|
348
|
-
|
|
349
|
-
{
|
|
350
|
-
EIGEN_STATIC_ASSERT(!NumTraits<Scalar>::IsInteger,THIS_FUNCTION_IS_NOT_FOR_INTEGER_NUMERIC_TYPES)
|
|
262
|
+
*
|
|
263
|
+
* \returns the matrix inverse of this matrix.
|
|
264
|
+
*
|
|
265
|
+
* For small fixed sizes up to 4x4, this method uses cofactors.
|
|
266
|
+
* In the general case, this method uses class PartialPivLU.
|
|
267
|
+
*
|
|
268
|
+
* \note This matrix must be invertible, otherwise the result is undefined. If you need an
|
|
269
|
+
* invertibility check, do the following:
|
|
270
|
+
* \li for fixed sizes up to 4x4, use computeInverseAndDetWithCheck().
|
|
271
|
+
* \li for the general case, use class PartialPivLU.
|
|
272
|
+
*
|
|
273
|
+
* Example: \include MatrixBase_inverse.cpp
|
|
274
|
+
* Output: \verbinclude MatrixBase_inverse.out
|
|
275
|
+
*
|
|
276
|
+
* \sa computeInverseAndDetWithCheck()
|
|
277
|
+
*/
|
|
278
|
+
template <typename Derived>
|
|
279
|
+
EIGEN_DEVICE_FUNC inline const Inverse<Derived> MatrixBase<Derived>::inverse() const {
|
|
280
|
+
EIGEN_STATIC_ASSERT(!NumTraits<Scalar>::IsInteger, THIS_FUNCTION_IS_NOT_FOR_INTEGER_NUMERIC_TYPES)
|
|
351
281
|
eigen_assert(rows() == cols());
|
|
352
282
|
return Inverse<Derived>(derived());
|
|
353
283
|
}
|
|
354
284
|
|
|
355
285
|
/** \lu_module
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
template<typename Derived>
|
|
376
|
-
template<typename ResultType>
|
|
377
|
-
inline void MatrixBase<Derived>::computeInverseAndDetWithCheck(
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
const RealScalar& absDeterminantThreshold
|
|
382
|
-
) const
|
|
383
|
-
{
|
|
286
|
+
*
|
|
287
|
+
* Computation of matrix inverse and determinant, with invertibility check.
|
|
288
|
+
*
|
|
289
|
+
* This is only for fixed-size square matrices of size up to 4x4.
|
|
290
|
+
*
|
|
291
|
+
* Notice that it will trigger a copy of input matrix when trying to do the inverse in place.
|
|
292
|
+
*
|
|
293
|
+
* \param inverse Reference to the matrix in which to store the inverse.
|
|
294
|
+
* \param determinant Reference to the variable in which to store the determinant.
|
|
295
|
+
* \param invertible Reference to the bool variable in which to store whether the matrix is invertible.
|
|
296
|
+
* \param absDeterminantThreshold Optional parameter controlling the invertibility check.
|
|
297
|
+
* The matrix will be declared invertible if the absolute value of its
|
|
298
|
+
* determinant is greater than this threshold.
|
|
299
|
+
*
|
|
300
|
+
* Example: \include MatrixBase_computeInverseAndDetWithCheck.cpp
|
|
301
|
+
* Output: \verbinclude MatrixBase_computeInverseAndDetWithCheck.out
|
|
302
|
+
*
|
|
303
|
+
* \sa inverse(), computeInverseWithCheck()
|
|
304
|
+
*/
|
|
305
|
+
template <typename Derived>
|
|
306
|
+
template <typename ResultType>
|
|
307
|
+
inline void MatrixBase<Derived>::computeInverseAndDetWithCheck(ResultType& inverse,
|
|
308
|
+
typename ResultType::Scalar& determinant,
|
|
309
|
+
bool& invertible,
|
|
310
|
+
const RealScalar& absDeterminantThreshold) const {
|
|
384
311
|
// i'd love to put some static assertions there, but SFINAE means that they have no effect...
|
|
385
312
|
eigen_assert(rows() == cols());
|
|
386
313
|
// for 2x2, it's worth giving a chance to avoid evaluating.
|
|
387
314
|
// for larger sizes, evaluating has negligible cost and limits code size.
|
|
388
|
-
typedef
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
internal::compute_inverse_and_det_with_check<MatrixType, ResultType>::run
|
|
394
|
-
(derived(), absDeterminantThreshold, inverse, determinant, invertible);
|
|
315
|
+
typedef std::conditional_t<RowsAtCompileTime == 2,
|
|
316
|
+
internal::remove_all_t<typename internal::nested_eval<Derived, 2>::type>, PlainObject>
|
|
317
|
+
MatrixType;
|
|
318
|
+
internal::compute_inverse_and_det_with_check<MatrixType, ResultType>::run(derived(), absDeterminantThreshold, inverse,
|
|
319
|
+
determinant, invertible);
|
|
395
320
|
}
|
|
396
321
|
|
|
397
322
|
/** \lu_module
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
template<typename Derived>
|
|
417
|
-
template<typename ResultType>
|
|
418
|
-
inline void MatrixBase<Derived>::computeInverseWithCheck(
|
|
419
|
-
|
|
420
|
-
bool& invertible,
|
|
421
|
-
const RealScalar& absDeterminantThreshold
|
|
422
|
-
) const
|
|
423
|
-
{
|
|
323
|
+
*
|
|
324
|
+
* Computation of matrix inverse, with invertibility check.
|
|
325
|
+
*
|
|
326
|
+
* This is only for fixed-size square matrices of size up to 4x4.
|
|
327
|
+
*
|
|
328
|
+
* Notice that it will trigger a copy of input matrix when trying to do the inverse in place.
|
|
329
|
+
*
|
|
330
|
+
* \param inverse Reference to the matrix in which to store the inverse.
|
|
331
|
+
* \param invertible Reference to the bool variable in which to store whether the matrix is invertible.
|
|
332
|
+
* \param absDeterminantThreshold Optional parameter controlling the invertibility check.
|
|
333
|
+
* The matrix will be declared invertible if the absolute value of its
|
|
334
|
+
* determinant is greater than this threshold.
|
|
335
|
+
*
|
|
336
|
+
* Example: \include MatrixBase_computeInverseWithCheck.cpp
|
|
337
|
+
* Output: \verbinclude MatrixBase_computeInverseWithCheck.out
|
|
338
|
+
*
|
|
339
|
+
* \sa inverse(), computeInverseAndDetWithCheck()
|
|
340
|
+
*/
|
|
341
|
+
template <typename Derived>
|
|
342
|
+
template <typename ResultType>
|
|
343
|
+
inline void MatrixBase<Derived>::computeInverseWithCheck(ResultType& inverse, bool& invertible,
|
|
344
|
+
const RealScalar& absDeterminantThreshold) const {
|
|
424
345
|
Scalar determinant;
|
|
425
346
|
// i'd love to put some static assertions there, but SFINAE means that they have no effect...
|
|
426
347
|
eigen_assert(rows() == cols());
|
|
427
|
-
computeInverseAndDetWithCheck(inverse,determinant,invertible,absDeterminantThreshold);
|
|
348
|
+
computeInverseAndDetWithCheck(inverse, determinant, invertible, absDeterminantThreshold);
|
|
428
349
|
}
|
|
429
350
|
|
|
430
|
-
}
|
|
351
|
+
} // end namespace Eigen
|
|
431
352
|
|
|
432
|
-
#endif
|
|
353
|
+
#endif // EIGEN_INVERSE_IMPL_H
|