@smake/eigen 1.0.2 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/eigen/Eigen/AccelerateSupport +52 -0
- package/eigen/Eigen/Cholesky +18 -21
- package/eigen/Eigen/CholmodSupport +28 -28
- package/eigen/Eigen/Core +235 -326
- package/eigen/Eigen/Eigenvalues +16 -14
- package/eigen/Eigen/Geometry +21 -24
- package/eigen/Eigen/Householder +9 -8
- package/eigen/Eigen/IterativeLinearSolvers +8 -4
- package/eigen/Eigen/Jacobi +14 -14
- package/eigen/Eigen/KLUSupport +43 -0
- package/eigen/Eigen/LU +16 -20
- package/eigen/Eigen/MetisSupport +12 -12
- package/eigen/Eigen/OrderingMethods +54 -54
- package/eigen/Eigen/PaStiXSupport +23 -20
- package/eigen/Eigen/PardisoSupport +17 -14
- package/eigen/Eigen/QR +18 -21
- package/eigen/Eigen/QtAlignedMalloc +5 -13
- package/eigen/Eigen/SPQRSupport +21 -14
- package/eigen/Eigen/SVD +23 -18
- package/eigen/Eigen/Sparse +1 -4
- package/eigen/Eigen/SparseCholesky +18 -23
- package/eigen/Eigen/SparseCore +18 -17
- package/eigen/Eigen/SparseLU +12 -8
- package/eigen/Eigen/SparseQR +16 -14
- package/eigen/Eigen/StdDeque +5 -2
- package/eigen/Eigen/StdList +5 -2
- package/eigen/Eigen/StdVector +5 -2
- package/eigen/Eigen/SuperLUSupport +30 -24
- package/eigen/Eigen/ThreadPool +80 -0
- package/eigen/Eigen/UmfPackSupport +19 -17
- package/eigen/Eigen/Version +14 -0
- package/eigen/Eigen/src/AccelerateSupport/AccelerateSupport.h +423 -0
- package/eigen/Eigen/src/AccelerateSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Cholesky/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Cholesky/LDLT.h +377 -401
- package/eigen/Eigen/src/Cholesky/LLT.h +332 -360
- package/eigen/Eigen/src/Cholesky/LLT_LAPACKE.h +81 -56
- package/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +620 -521
- package/eigen/Eigen/src/CholmodSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Core/ArithmeticSequence.h +239 -0
- package/eigen/Eigen/src/Core/Array.h +341 -294
- package/eigen/Eigen/src/Core/ArrayBase.h +190 -203
- package/eigen/Eigen/src/Core/ArrayWrapper.h +127 -171
- package/eigen/Eigen/src/Core/Assign.h +30 -40
- package/eigen/Eigen/src/Core/AssignEvaluator.h +711 -589
- package/eigen/Eigen/src/Core/Assign_MKL.h +130 -125
- package/eigen/Eigen/src/Core/BandMatrix.h +268 -283
- package/eigen/Eigen/src/Core/Block.h +375 -398
- package/eigen/Eigen/src/Core/CommaInitializer.h +86 -97
- package/eigen/Eigen/src/Core/ConditionEstimator.h +51 -53
- package/eigen/Eigen/src/Core/CoreEvaluators.h +1356 -1026
- package/eigen/Eigen/src/Core/CoreIterators.h +73 -59
- package/eigen/Eigen/src/Core/CwiseBinaryOp.h +114 -132
- package/eigen/Eigen/src/Core/CwiseNullaryOp.h +726 -617
- package/eigen/Eigen/src/Core/CwiseTernaryOp.h +77 -103
- package/eigen/Eigen/src/Core/CwiseUnaryOp.h +56 -68
- package/eigen/Eigen/src/Core/CwiseUnaryView.h +132 -95
- package/eigen/Eigen/src/Core/DenseBase.h +632 -571
- package/eigen/Eigen/src/Core/DenseCoeffsBase.h +511 -624
- package/eigen/Eigen/src/Core/DenseStorage.h +512 -509
- package/eigen/Eigen/src/Core/DeviceWrapper.h +153 -0
- package/eigen/Eigen/src/Core/Diagonal.h +169 -210
- package/eigen/Eigen/src/Core/DiagonalMatrix.h +351 -274
- package/eigen/Eigen/src/Core/DiagonalProduct.h +12 -10
- package/eigen/Eigen/src/Core/Dot.h +172 -222
- package/eigen/Eigen/src/Core/EigenBase.h +75 -85
- package/eigen/Eigen/src/Core/Fill.h +138 -0
- package/eigen/Eigen/src/Core/FindCoeff.h +464 -0
- package/eigen/Eigen/src/Core/ForceAlignedAccess.h +90 -109
- package/eigen/Eigen/src/Core/Fuzzy.h +82 -105
- package/eigen/Eigen/src/Core/GeneralProduct.h +327 -263
- package/eigen/Eigen/src/Core/GenericPacketMath.h +1472 -360
- package/eigen/Eigen/src/Core/GlobalFunctions.h +194 -151
- package/eigen/Eigen/src/Core/IO.h +147 -139
- package/eigen/Eigen/src/Core/IndexedView.h +321 -0
- package/eigen/Eigen/src/Core/InnerProduct.h +260 -0
- package/eigen/Eigen/src/Core/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Core/Inverse.h +56 -66
- package/eigen/Eigen/src/Core/Map.h +124 -142
- package/eigen/Eigen/src/Core/MapBase.h +256 -281
- package/eigen/Eigen/src/Core/MathFunctions.h +1620 -938
- package/eigen/Eigen/src/Core/MathFunctionsImpl.h +233 -71
- package/eigen/Eigen/src/Core/Matrix.h +491 -416
- package/eigen/Eigen/src/Core/MatrixBase.h +468 -453
- package/eigen/Eigen/src/Core/NestByValue.h +66 -85
- package/eigen/Eigen/src/Core/NoAlias.h +79 -85
- package/eigen/Eigen/src/Core/NumTraits.h +235 -148
- package/eigen/Eigen/src/Core/PartialReduxEvaluator.h +253 -0
- package/eigen/Eigen/src/Core/PermutationMatrix.h +461 -511
- package/eigen/Eigen/src/Core/PlainObjectBase.h +871 -894
- package/eigen/Eigen/src/Core/Product.h +260 -139
- package/eigen/Eigen/src/Core/ProductEvaluators.h +863 -714
- package/eigen/Eigen/src/Core/Random.h +161 -136
- package/eigen/Eigen/src/Core/RandomImpl.h +262 -0
- package/eigen/Eigen/src/Core/RealView.h +250 -0
- package/eigen/Eigen/src/Core/Redux.h +366 -336
- package/eigen/Eigen/src/Core/Ref.h +308 -209
- package/eigen/Eigen/src/Core/Replicate.h +94 -106
- package/eigen/Eigen/src/Core/Reshaped.h +398 -0
- package/eigen/Eigen/src/Core/ReturnByValue.h +49 -55
- package/eigen/Eigen/src/Core/Reverse.h +136 -145
- package/eigen/Eigen/src/Core/Select.h +70 -140
- package/eigen/Eigen/src/Core/SelfAdjointView.h +262 -285
- package/eigen/Eigen/src/Core/SelfCwiseBinaryOp.h +23 -20
- package/eigen/Eigen/src/Core/SkewSymmetricMatrix3.h +382 -0
- package/eigen/Eigen/src/Core/Solve.h +97 -111
- package/eigen/Eigen/src/Core/SolveTriangular.h +131 -129
- package/eigen/Eigen/src/Core/SolverBase.h +138 -101
- package/eigen/Eigen/src/Core/StableNorm.h +156 -160
- package/eigen/Eigen/src/Core/StlIterators.h +619 -0
- package/eigen/Eigen/src/Core/Stride.h +91 -88
- package/eigen/Eigen/src/Core/Swap.h +70 -38
- package/eigen/Eigen/src/Core/Transpose.h +295 -273
- package/eigen/Eigen/src/Core/Transpositions.h +272 -317
- package/eigen/Eigen/src/Core/TriangularMatrix.h +670 -755
- package/eigen/Eigen/src/Core/VectorBlock.h +59 -72
- package/eigen/Eigen/src/Core/VectorwiseOp.h +668 -630
- package/eigen/Eigen/src/Core/Visitor.h +480 -216
- package/eigen/Eigen/src/Core/arch/AVX/Complex.h +407 -293
- package/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +79 -388
- package/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +2935 -491
- package/eigen/Eigen/src/Core/arch/AVX/Reductions.h +353 -0
- package/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +279 -22
- package/eigen/Eigen/src/Core/arch/AVX512/Complex.h +472 -0
- package/eigen/Eigen/src/Core/arch/AVX512/GemmKernel.h +1245 -0
- package/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +85 -333
- package/eigen/Eigen/src/Core/arch/AVX512/MathFunctionsFP16.h +75 -0
- package/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +2490 -649
- package/eigen/Eigen/src/Core/arch/AVX512/PacketMathFP16.h +1413 -0
- package/eigen/Eigen/src/Core/arch/AVX512/Reductions.h +297 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TrsmKernel.h +1167 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TrsmUnrolls.inc +1219 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TypeCasting.h +277 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TypeCastingFP16.h +130 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +521 -298
- package/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +39 -280
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +3686 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +205 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +901 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMAbfloat16.h +742 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixVectorProduct.inc +2818 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h +3391 -723
- package/eigen/Eigen/src/Core/arch/AltiVec/TypeCasting.h +153 -0
- package/eigen/Eigen/src/Core/arch/Default/BFloat16.h +866 -0
- package/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +113 -14
- package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +2634 -0
- package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +227 -0
- package/eigen/Eigen/src/Core/arch/Default/Half.h +1091 -0
- package/eigen/Eigen/src/Core/arch/Default/Settings.h +11 -13
- package/eigen/Eigen/src/Core/arch/GPU/Complex.h +244 -0
- package/eigen/Eigen/src/Core/arch/GPU/MathFunctions.h +104 -0
- package/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +1712 -0
- package/eigen/Eigen/src/Core/arch/GPU/Tuple.h +268 -0
- package/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +77 -0
- package/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
- package/eigen/Eigen/src/Core/arch/HVX/PacketMath.h +1088 -0
- package/eigen/Eigen/src/Core/arch/LSX/Complex.h +520 -0
- package/eigen/Eigen/src/Core/arch/LSX/GeneralBlockPanelKernel.h +23 -0
- package/eigen/Eigen/src/Core/arch/LSX/MathFunctions.h +43 -0
- package/eigen/Eigen/src/Core/arch/LSX/PacketMath.h +2866 -0
- package/eigen/Eigen/src/Core/arch/LSX/TypeCasting.h +526 -0
- package/eigen/Eigen/src/Core/arch/MSA/Complex.h +620 -0
- package/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +379 -0
- package/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +1237 -0
- package/eigen/Eigen/src/Core/arch/NEON/Complex.h +531 -289
- package/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +243 -0
- package/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +50 -73
- package/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +5915 -579
- package/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +1642 -0
- package/eigen/Eigen/src/Core/arch/NEON/UnaryFunctors.h +57 -0
- package/eigen/Eigen/src/Core/arch/SSE/Complex.h +366 -334
- package/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +40 -514
- package/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +2164 -675
- package/eigen/Eigen/src/Core/arch/SSE/Reductions.h +324 -0
- package/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +188 -35
- package/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +48 -0
- package/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +674 -0
- package/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +52 -0
- package/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +227 -0
- package/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +303 -0
- package/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +576 -0
- package/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +83 -0
- package/eigen/Eigen/src/Core/arch/ZVector/Complex.h +434 -261
- package/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +160 -53
- package/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +1073 -605
- package/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +123 -117
- package/eigen/Eigen/src/Core/functors/BinaryFunctors.h +594 -322
- package/eigen/Eigen/src/Core/functors/NullaryFunctors.h +204 -118
- package/eigen/Eigen/src/Core/functors/StlFunctors.h +110 -97
- package/eigen/Eigen/src/Core/functors/TernaryFunctors.h +34 -7
- package/eigen/Eigen/src/Core/functors/UnaryFunctors.h +1158 -530
- package/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +2329 -1333
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +328 -364
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +191 -178
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +85 -82
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +154 -73
- package/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +396 -542
- package/eigen/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +80 -77
- package/eigen/Eigen/src/Core/products/Parallelizer.h +208 -92
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +331 -375
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +206 -224
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +139 -146
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +58 -61
- package/eigen/Eigen/src/Core/products/SelfadjointProduct.h +71 -71
- package/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h +48 -46
- package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h +294 -369
- package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +246 -238
- package/eigen/Eigen/src/Core/products/TriangularMatrixVector.h +244 -247
- package/eigen/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +212 -192
- package/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h +328 -275
- package/eigen/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +108 -109
- package/eigen/Eigen/src/Core/products/TriangularSolverVector.h +70 -93
- package/eigen/Eigen/src/Core/util/Assert.h +158 -0
- package/eigen/Eigen/src/Core/util/BlasUtil.h +413 -290
- package/eigen/Eigen/src/Core/util/ConfigureVectorization.h +543 -0
- package/eigen/Eigen/src/Core/util/Constants.h +314 -263
- package/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +130 -78
- package/eigen/Eigen/src/Core/util/EmulateArray.h +270 -0
- package/eigen/Eigen/src/Core/util/ForwardDeclarations.h +450 -224
- package/eigen/Eigen/src/Core/util/GpuHipCudaDefines.inc +101 -0
- package/eigen/Eigen/src/Core/util/GpuHipCudaUndefines.inc +45 -0
- package/eigen/Eigen/src/Core/util/IndexedViewHelper.h +487 -0
- package/eigen/Eigen/src/Core/util/IntegralConstant.h +279 -0
- package/eigen/Eigen/src/Core/util/MKL_support.h +39 -30
- package/eigen/Eigen/src/Core/util/Macros.h +939 -646
- package/eigen/Eigen/src/Core/util/MaxSizeVector.h +139 -0
- package/eigen/Eigen/src/Core/util/Memory.h +1042 -650
- package/eigen/Eigen/src/Core/util/Meta.h +618 -426
- package/eigen/Eigen/src/Core/util/MoreMeta.h +638 -0
- package/eigen/Eigen/src/Core/util/ReenableStupidWarnings.h +32 -19
- package/eigen/Eigen/src/Core/util/ReshapedHelper.h +51 -0
- package/eigen/Eigen/src/Core/util/Serializer.h +209 -0
- package/eigen/Eigen/src/Core/util/StaticAssert.h +51 -164
- package/eigen/Eigen/src/Core/util/SymbolicIndex.h +445 -0
- package/eigen/Eigen/src/Core/util/XprHelper.h +793 -538
- package/eigen/Eigen/src/Eigenvalues/ComplexEigenSolver.h +246 -277
- package/eigen/Eigen/src/Eigenvalues/ComplexSchur.h +299 -319
- package/eigen/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +52 -48
- package/eigen/Eigen/src/Eigenvalues/EigenSolver.h +413 -456
- package/eigen/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +309 -325
- package/eigen/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +157 -171
- package/eigen/Eigen/src/Eigenvalues/HessenbergDecomposition.h +292 -310
- package/eigen/Eigen/src/Eigenvalues/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +91 -107
- package/eigen/Eigen/src/Eigenvalues/RealQZ.h +539 -606
- package/eigen/Eigen/src/Eigenvalues/RealSchur.h +348 -382
- package/eigen/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +41 -35
- package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +579 -600
- package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +47 -44
- package/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +434 -461
- package/eigen/Eigen/src/Geometry/AlignedBox.h +307 -214
- package/eigen/Eigen/src/Geometry/AngleAxis.h +135 -137
- package/eigen/Eigen/src/Geometry/EulerAngles.h +163 -74
- package/eigen/Eigen/src/Geometry/Homogeneous.h +289 -333
- package/eigen/Eigen/src/Geometry/Hyperplane.h +152 -161
- package/eigen/Eigen/src/Geometry/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Geometry/OrthoMethods.h +168 -145
- package/eigen/Eigen/src/Geometry/ParametrizedLine.h +141 -104
- package/eigen/Eigen/src/Geometry/Quaternion.h +595 -497
- package/eigen/Eigen/src/Geometry/Rotation2D.h +110 -108
- package/eigen/Eigen/src/Geometry/RotationBase.h +148 -145
- package/eigen/Eigen/src/Geometry/Scaling.h +115 -90
- package/eigen/Eigen/src/Geometry/Transform.h +896 -953
- package/eigen/Eigen/src/Geometry/Translation.h +100 -98
- package/eigen/Eigen/src/Geometry/Umeyama.h +79 -84
- package/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +154 -0
- package/eigen/Eigen/src/Householder/BlockHouseholder.h +54 -42
- package/eigen/Eigen/src/Householder/Householder.h +104 -122
- package/eigen/Eigen/src/Householder/HouseholderSequence.h +416 -382
- package/eigen/Eigen/src/Householder/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +153 -166
- package/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +127 -138
- package/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +95 -124
- package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +269 -267
- package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +246 -259
- package/eigen/Eigen/src/IterativeLinearSolvers/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +218 -217
- package/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +80 -103
- package/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +59 -63
- package/eigen/Eigen/src/Jacobi/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Jacobi/Jacobi.h +256 -291
- package/eigen/Eigen/src/KLUSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/KLUSupport/KLUSupport.h +339 -0
- package/eigen/Eigen/src/LU/Determinant.h +60 -63
- package/eigen/Eigen/src/LU/FullPivLU.h +561 -626
- package/eigen/Eigen/src/LU/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/LU/InverseImpl.h +213 -275
- package/eigen/Eigen/src/LU/PartialPivLU.h +407 -435
- package/eigen/Eigen/src/LU/PartialPivLU_LAPACKE.h +54 -40
- package/eigen/Eigen/src/LU/arch/InverseSize4.h +353 -0
- package/eigen/Eigen/src/MetisSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/MetisSupport/MetisSupport.h +81 -93
- package/eigen/Eigen/src/OrderingMethods/Amd.h +250 -282
- package/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +950 -1103
- package/eigen/Eigen/src/OrderingMethods/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/OrderingMethods/Ordering.h +111 -122
- package/eigen/Eigen/src/PaStiXSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/PaStiXSupport/PaStiXSupport.h +524 -570
- package/eigen/Eigen/src/PardisoSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/PardisoSupport/PardisoSupport.h +385 -429
- package/eigen/Eigen/src/QR/ColPivHouseholderQR.h +494 -473
- package/eigen/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +120 -56
- package/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +223 -137
- package/eigen/Eigen/src/QR/FullPivHouseholderQR.h +517 -460
- package/eigen/Eigen/src/QR/HouseholderQR.h +412 -278
- package/eigen/Eigen/src/QR/HouseholderQR_LAPACKE.h +32 -23
- package/eigen/Eigen/src/QR/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SPQRSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +263 -261
- package/eigen/Eigen/src/SVD/BDCSVD.h +872 -679
- package/eigen/Eigen/src/SVD/BDCSVD_LAPACKE.h +174 -0
- package/eigen/Eigen/src/SVD/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SVD/JacobiSVD.h +585 -543
- package/eigen/Eigen/src/SVD/JacobiSVD_LAPACKE.h +85 -49
- package/eigen/Eigen/src/SVD/SVDBase.h +281 -160
- package/eigen/Eigen/src/SVD/UpperBidiagonalization.h +202 -237
- package/eigen/Eigen/src/SparseCholesky/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +769 -590
- package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +318 -129
- package/eigen/Eigen/src/SparseCore/AmbiVector.h +202 -251
- package/eigen/Eigen/src/SparseCore/CompressedStorage.h +184 -236
- package/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +140 -184
- package/eigen/Eigen/src/SparseCore/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseCore/SparseAssign.h +174 -111
- package/eigen/Eigen/src/SparseCore/SparseBlock.h +408 -477
- package/eigen/Eigen/src/SparseCore/SparseColEtree.h +100 -112
- package/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +531 -280
- package/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +559 -347
- package/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +100 -108
- package/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +185 -191
- package/eigen/Eigen/src/SparseCore/SparseDiagonalProduct.h +71 -71
- package/eigen/Eigen/src/SparseCore/SparseDot.h +49 -47
- package/eigen/Eigen/src/SparseCore/SparseFuzzy.h +13 -11
- package/eigen/Eigen/src/SparseCore/SparseMap.h +243 -253
- package/eigen/Eigen/src/SparseCore/SparseMatrix.h +1614 -1142
- package/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +403 -357
- package/eigen/Eigen/src/SparseCore/SparsePermutation.h +186 -115
- package/eigen/Eigen/src/SparseCore/SparseProduct.h +100 -91
- package/eigen/Eigen/src/SparseCore/SparseRedux.h +22 -24
- package/eigen/Eigen/src/SparseCore/SparseRef.h +268 -295
- package/eigen/Eigen/src/SparseCore/SparseSelfAdjointView.h +371 -414
- package/eigen/Eigen/src/SparseCore/SparseSolverBase.h +78 -87
- package/eigen/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +81 -95
- package/eigen/Eigen/src/SparseCore/SparseTranspose.h +62 -71
- package/eigen/Eigen/src/SparseCore/SparseTriangularView.h +132 -144
- package/eigen/Eigen/src/SparseCore/SparseUtil.h +146 -115
- package/eigen/Eigen/src/SparseCore/SparseVector.h +426 -372
- package/eigen/Eigen/src/SparseCore/SparseView.h +164 -193
- package/eigen/Eigen/src/SparseCore/TriangularSolver.h +129 -170
- package/eigen/Eigen/src/SparseLU/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseLU/SparseLU.h +814 -618
- package/eigen/Eigen/src/SparseLU/SparseLUImpl.h +61 -48
- package/eigen/Eigen/src/SparseLU/SparseLU_Memory.h +102 -118
- package/eigen/Eigen/src/SparseLU/SparseLU_Structs.h +38 -35
- package/eigen/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +273 -255
- package/eigen/Eigen/src/SparseLU/SparseLU_Utils.h +44 -49
- package/eigen/Eigen/src/SparseLU/SparseLU_column_bmod.h +104 -108
- package/eigen/Eigen/src/SparseLU/SparseLU_column_dfs.h +90 -101
- package/eigen/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +57 -58
- package/eigen/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +43 -55
- package/eigen/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +74 -71
- package/eigen/Eigen/src/SparseLU/SparseLU_panel_bmod.h +125 -133
- package/eigen/Eigen/src/SparseLU/SparseLU_panel_dfs.h +136 -159
- package/eigen/Eigen/src/SparseLU/SparseLU_pivotL.h +51 -52
- package/eigen/Eigen/src/SparseLU/SparseLU_pruneL.h +67 -73
- package/eigen/Eigen/src/SparseLU/SparseLU_relax_snode.h +24 -26
- package/eigen/Eigen/src/SparseQR/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseQR/SparseQR.h +451 -490
- package/eigen/Eigen/src/StlSupport/StdDeque.h +28 -105
- package/eigen/Eigen/src/StlSupport/StdList.h +28 -84
- package/eigen/Eigen/src/StlSupport/StdVector.h +28 -108
- package/eigen/Eigen/src/StlSupport/details.h +48 -50
- package/eigen/Eigen/src/SuperLUSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SuperLUSupport/SuperLUSupport.h +634 -732
- package/eigen/Eigen/src/ThreadPool/Barrier.h +70 -0
- package/eigen/Eigen/src/ThreadPool/CoreThreadPoolDevice.h +336 -0
- package/eigen/Eigen/src/ThreadPool/EventCount.h +241 -0
- package/eigen/Eigen/src/ThreadPool/ForkJoin.h +140 -0
- package/eigen/Eigen/src/ThreadPool/InternalHeaderCheck.h +4 -0
- package/eigen/Eigen/src/ThreadPool/NonBlockingThreadPool.h +587 -0
- package/eigen/Eigen/src/ThreadPool/RunQueue.h +230 -0
- package/eigen/Eigen/src/ThreadPool/ThreadCancel.h +21 -0
- package/eigen/Eigen/src/ThreadPool/ThreadEnvironment.h +43 -0
- package/eigen/Eigen/src/ThreadPool/ThreadLocal.h +289 -0
- package/eigen/Eigen/src/ThreadPool/ThreadPoolInterface.h +50 -0
- package/eigen/Eigen/src/ThreadPool/ThreadYield.h +16 -0
- package/eigen/Eigen/src/UmfPackSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/UmfPackSupport/UmfPackSupport.h +480 -380
- package/eigen/Eigen/src/misc/Image.h +41 -43
- package/eigen/Eigen/src/misc/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/misc/Kernel.h +39 -41
- package/eigen/Eigen/src/misc/RealSvd2x2.h +19 -21
- package/eigen/Eigen/src/misc/blas.h +83 -426
- package/eigen/Eigen/src/misc/lapacke.h +9976 -16182
- package/eigen/Eigen/src/misc/lapacke_helpers.h +163 -0
- package/eigen/Eigen/src/misc/lapacke_mangling.h +4 -5
- package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.inc +344 -0
- package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.inc +544 -0
- package/eigen/Eigen/src/plugins/BlockMethods.inc +1370 -0
- package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.inc +116 -0
- package/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.inc +167 -0
- package/eigen/Eigen/src/plugins/IndexedViewMethods.inc +192 -0
- package/eigen/Eigen/src/plugins/InternalHeaderCheck.inc +3 -0
- package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.inc +331 -0
- package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.inc +118 -0
- package/eigen/Eigen/src/plugins/ReshapedMethods.inc +133 -0
- package/lib/LibEigen.d.ts +4 -0
- package/lib/LibEigen.js +14 -0
- package/lib/index.d.ts +1 -1
- package/lib/index.js +7 -3
- package/package.json +2 -10
- package/eigen/Eigen/CMakeLists.txt +0 -19
- package/eigen/Eigen/src/Core/BooleanRedux.h +0 -164
- package/eigen/Eigen/src/Core/arch/CUDA/Complex.h +0 -103
- package/eigen/Eigen/src/Core/arch/CUDA/Half.h +0 -675
- package/eigen/Eigen/src/Core/arch/CUDA/MathFunctions.h +0 -91
- package/eigen/Eigen/src/Core/arch/CUDA/PacketMath.h +0 -333
- package/eigen/Eigen/src/Core/arch/CUDA/PacketMathHalf.h +0 -1124
- package/eigen/Eigen/src/Core/arch/CUDA/TypeCasting.h +0 -212
- package/eigen/Eigen/src/Core/util/NonMPL2.h +0 -3
- package/eigen/Eigen/src/Geometry/arch/Geometry_SSE.h +0 -161
- package/eigen/Eigen/src/LU/arch/Inverse_SSE.h +0 -338
- package/eigen/Eigen/src/SparseCore/MappedSparseMatrix.h +0 -67
- package/eigen/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +0 -280
- package/eigen/Eigen/src/misc/lapack.h +0 -152
- package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h +0 -332
- package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +0 -552
- package/eigen/Eigen/src/plugins/BlockMethods.h +0 -1058
- package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.h +0 -115
- package/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.h +0 -163
- package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +0 -152
- package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +0 -85
- package/lib/eigen.d.ts +0 -2
- package/lib/eigen.js +0 -15
|
@@ -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,47 +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
|
-
result.coeffRef(
|
|
81
|
-
result.coeffRef(1
|
|
82
|
-
result.coeffRef(
|
|
83
|
-
result.coeffRef(1,1) = matrix.coeff(0,0) * 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;
|
|
84
75
|
}
|
|
85
76
|
|
|
86
|
-
template<typename MatrixType, typename ResultType>
|
|
87
|
-
struct compute_inverse<MatrixType, ResultType, 2>
|
|
88
|
-
{
|
|
89
|
-
EIGEN_DEVICE_FUNC
|
|
90
|
-
static inline void run(const MatrixType& matrix, ResultType& result)
|
|
91
|
-
{
|
|
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) {
|
|
92
80
|
typedef typename ResultType::Scalar Scalar;
|
|
93
81
|
const Scalar invdet = typename MatrixType::Scalar(1) / matrix.determinant();
|
|
94
82
|
compute_inverse_size2_helper(matrix, invdet, result);
|
|
95
83
|
}
|
|
96
84
|
};
|
|
97
85
|
|
|
98
|
-
template<typename MatrixType, typename ResultType>
|
|
99
|
-
struct compute_inverse_and_det_with_check<MatrixType, ResultType, 2>
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
const typename MatrixType::RealScalar& absDeterminantThreshold,
|
|
105
|
-
ResultType& inverse,
|
|
106
|
-
typename ResultType::Scalar& determinant,
|
|
107
|
-
bool& invertible
|
|
108
|
-
)
|
|
109
|
-
{
|
|
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) {
|
|
110
92
|
using std::abs;
|
|
111
93
|
typedef typename ResultType::Scalar Scalar;
|
|
112
94
|
determinant = matrix.determinant();
|
|
113
95
|
invertible = abs(determinant) > absDeterminantThreshold;
|
|
114
|
-
if(!invertible) return;
|
|
96
|
+
if (!invertible) return;
|
|
115
97
|
const Scalar invdet = Scalar(1) / determinant;
|
|
116
98
|
compute_inverse_size2_helper(matrix, invdet, inverse);
|
|
117
99
|
}
|
|
@@ -121,75 +103,58 @@ struct compute_inverse_and_det_with_check<MatrixType, ResultType, 2>
|
|
|
121
103
|
*** Size 3 implementation ***
|
|
122
104
|
****************************/
|
|
123
105
|
|
|
124
|
-
template<typename MatrixType, int i, int j>
|
|
125
|
-
EIGEN_DEVICE_FUNC
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
enum {
|
|
129
|
-
i1 = (i+1) % 3,
|
|
130
|
-
i2 = (i+2) % 3,
|
|
131
|
-
j1 = (j+1) % 3,
|
|
132
|
-
j2 = (j+2) % 3
|
|
133
|
-
};
|
|
134
|
-
return m.coeff(i1, j1) * m.coeff(i2, j2)
|
|
135
|
-
- 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);
|
|
136
110
|
}
|
|
137
111
|
|
|
138
|
-
template<typename MatrixType, typename ResultType>
|
|
139
|
-
EIGEN_DEVICE_FUNC
|
|
140
|
-
|
|
141
|
-
const
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
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) {
|
|
116
|
+
// Compute cofactors in a way that avoids aliasing issues.
|
|
117
|
+
typedef typename ResultType::Scalar Scalar;
|
|
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;
|
|
146
127
|
result.row(0) = cofactors_col0 * invdet;
|
|
147
|
-
result.coeffRef(1,0) = cofactor_3x3<MatrixType,0,1>(matrix) * invdet;
|
|
148
|
-
result.coeffRef(1,1) = cofactor_3x3<MatrixType,1,1>(matrix) * invdet;
|
|
149
|
-
result.coeffRef(1,2) = cofactor_3x3<MatrixType,2,1>(matrix) * invdet;
|
|
150
|
-
result.coeffRef(2,0) = cofactor_3x3<MatrixType,0,2>(matrix) * invdet;
|
|
151
|
-
result.coeffRef(2,1) = cofactor_3x3<MatrixType,1,2>(matrix) * invdet;
|
|
152
|
-
result.coeffRef(2,2) = cofactor_3x3<MatrixType,2,2>(matrix) * invdet;
|
|
153
128
|
}
|
|
154
129
|
|
|
155
|
-
template<typename MatrixType, typename ResultType>
|
|
156
|
-
struct compute_inverse<MatrixType, ResultType, 3>
|
|
157
|
-
{
|
|
158
|
-
EIGEN_DEVICE_FUNC
|
|
159
|
-
static inline void run(const MatrixType& matrix, ResultType& result)
|
|
160
|
-
{
|
|
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) {
|
|
161
133
|
typedef typename ResultType::Scalar Scalar;
|
|
162
|
-
Matrix<typename MatrixType::Scalar,3,1> cofactors_col0;
|
|
163
|
-
cofactors_col0.coeffRef(0) =
|
|
164
|
-
cofactors_col0.coeffRef(1) =
|
|
165
|
-
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);
|
|
166
138
|
const Scalar det = (cofactors_col0.cwiseProduct(matrix.col(0))).sum();
|
|
167
139
|
const Scalar invdet = Scalar(1) / det;
|
|
168
140
|
compute_inverse_size3_helper(matrix, invdet, cofactors_col0, result);
|
|
169
141
|
}
|
|
170
142
|
};
|
|
171
143
|
|
|
172
|
-
template<typename MatrixType, typename ResultType>
|
|
173
|
-
struct compute_inverse_and_det_with_check<MatrixType, ResultType, 3>
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
const typename MatrixType::RealScalar& absDeterminantThreshold,
|
|
179
|
-
ResultType& inverse,
|
|
180
|
-
typename ResultType::Scalar& determinant,
|
|
181
|
-
bool& invertible
|
|
182
|
-
)
|
|
183
|
-
{
|
|
184
|
-
using std::abs;
|
|
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) {
|
|
185
150
|
typedef typename ResultType::Scalar Scalar;
|
|
186
|
-
Matrix<Scalar,3,1> cofactors_col0;
|
|
187
|
-
cofactors_col0.coeffRef(0) =
|
|
188
|
-
cofactors_col0.coeffRef(1) =
|
|
189
|
-
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);
|
|
190
155
|
determinant = (cofactors_col0.cwiseProduct(matrix.col(0))).sum();
|
|
191
|
-
invertible = abs(determinant) > absDeterminantThreshold;
|
|
192
|
-
if(!invertible) return;
|
|
156
|
+
invertible = Eigen::numext::abs(determinant) > absDeterminantThreshold;
|
|
157
|
+
if (!invertible) return;
|
|
193
158
|
const Scalar invdet = Scalar(1) / determinant;
|
|
194
159
|
compute_inverse_size3_helper(matrix, invdet, cofactors_col0, inverse);
|
|
195
160
|
}
|
|
@@ -199,81 +164,62 @@ struct compute_inverse_and_det_with_check<MatrixType, ResultType, 3>
|
|
|
199
164
|
*** Size 4 implementation ***
|
|
200
165
|
****************************/
|
|
201
166
|
|
|
202
|
-
template<typename Derived>
|
|
203
|
-
EIGEN_DEVICE_FUNC
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
return matrix.coeff(i1,j1)
|
|
208
|
-
* (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));
|
|
209
172
|
}
|
|
210
173
|
|
|
211
|
-
template<typename MatrixType, int i, int j>
|
|
212
|
-
EIGEN_DEVICE_FUNC
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
i1 = (i+1) % 4,
|
|
217
|
-
i2 = (i+2) % 4,
|
|
218
|
-
i3 = (i+3) % 4,
|
|
219
|
-
j1 = (j+1) % 4,
|
|
220
|
-
j2 = (j+2) % 4,
|
|
221
|
-
j3 = (j+3) % 4
|
|
222
|
-
};
|
|
223
|
-
return general_det3_helper(matrix, i1, i2, i3, j1, j2, j3)
|
|
224
|
-
+ general_det3_helper(matrix, i2, i3, i1, j1, j2, j3)
|
|
225
|
-
+ 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);
|
|
226
179
|
}
|
|
227
180
|
|
|
228
|
-
template<int Arch, typename Scalar, typename MatrixType, typename ResultType>
|
|
229
|
-
struct compute_inverse_size4
|
|
230
|
-
{
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
result.coeffRef(
|
|
235
|
-
result.coeffRef(
|
|
236
|
-
result.coeffRef(2
|
|
237
|
-
result.coeffRef(
|
|
238
|
-
result.coeffRef(
|
|
239
|
-
result.coeffRef(1
|
|
240
|
-
result.coeffRef(
|
|
241
|
-
result.coeffRef(
|
|
242
|
-
result.coeffRef(
|
|
243
|
-
result.coeffRef(
|
|
244
|
-
result.coeffRef(
|
|
245
|
-
result.coeffRef(3
|
|
246
|
-
result.coeffRef(
|
|
247
|
-
result.coeffRef(1,3) = cofactor_4x4<MatrixType,3,1>(matrix);
|
|
248
|
-
result.coeffRef(2,3) = -cofactor_4x4<MatrixType,3,2>(matrix);
|
|
249
|
-
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);
|
|
250
200
|
result /= (matrix.col(0).cwiseProduct(result.row(0).transpose())).sum();
|
|
251
201
|
}
|
|
252
202
|
};
|
|
253
203
|
|
|
254
|
-
template<typename MatrixType, typename ResultType>
|
|
204
|
+
template <typename MatrixType, typename ResultType>
|
|
255
205
|
struct compute_inverse<MatrixType, ResultType, 4>
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
{
|
|
264
|
-
EIGEN_DEVICE_FUNC
|
|
265
|
-
static inline void run(
|
|
266
|
-
const MatrixType& matrix,
|
|
267
|
-
const typename MatrixType::RealScalar& absDeterminantThreshold,
|
|
268
|
-
ResultType& inverse,
|
|
269
|
-
typename ResultType::Scalar& determinant,
|
|
270
|
-
bool& invertible
|
|
271
|
-
)
|
|
272
|
-
{
|
|
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) {
|
|
273
214
|
using std::abs;
|
|
274
215
|
determinant = matrix.determinant();
|
|
275
216
|
invertible = abs(determinant) > absDeterminantThreshold;
|
|
276
|
-
if(invertible
|
|
217
|
+
if (invertible && extract_data(matrix) != extract_data(inverse)) {
|
|
218
|
+
compute_inverse<MatrixType, ResultType>::run(matrix, inverse);
|
|
219
|
+
} else if (invertible) {
|
|
220
|
+
MatrixType matrix_t = matrix;
|
|
221
|
+
compute_inverse<MatrixType, ResultType>::run(matrix_t, inverse);
|
|
222
|
+
}
|
|
277
223
|
}
|
|
278
224
|
};
|
|
279
225
|
|
|
@@ -281,135 +227,127 @@ struct compute_inverse_and_det_with_check<MatrixType, ResultType, 4>
|
|
|
281
227
|
*** MatrixBase methods ***
|
|
282
228
|
*************************/
|
|
283
229
|
|
|
284
|
-
}
|
|
230
|
+
} // end namespace internal
|
|
285
231
|
|
|
286
232
|
namespace internal {
|
|
287
233
|
|
|
288
234
|
// Specialization for "dense = dense_xpr.inverse()"
|
|
289
|
-
template<typename DstXprType, typename XprType>
|
|
290
|
-
struct Assignment<DstXprType, Inverse<XprType>,
|
|
291
|
-
{
|
|
235
|
+
template <typename DstXprType, typename XprType>
|
|
236
|
+
struct Assignment<DstXprType, Inverse<XprType>,
|
|
237
|
+
internal::assign_op<typename DstXprType::Scalar, typename XprType::Scalar>, Dense2Dense> {
|
|
292
238
|
typedef Inverse<XprType> SrcXprType;
|
|
293
|
-
static void run(DstXprType
|
|
294
|
-
|
|
239
|
+
EIGEN_DEVICE_FUNC static void run(DstXprType& dst, const SrcXprType& src,
|
|
240
|
+
const internal::assign_op<typename DstXprType::Scalar, typename XprType::Scalar>&) {
|
|
295
241
|
Index dstRows = src.rows();
|
|
296
242
|
Index dstCols = src.cols();
|
|
297
|
-
if((dst.rows()!=dstRows) || (dst.cols()!=dstCols))
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
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);
|
|
301
246
|
EIGEN_ONLY_USED_FOR_DEBUG(Size);
|
|
302
|
-
eigen_assert((
|
|
303
|
-
|
|
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;
|
|
304
252
|
|
|
305
|
-
typedef typename internal::nested_eval<XprType,XprType::ColsAtCompileTime>::type ActualXprType;
|
|
306
|
-
typedef typename internal::remove_all<ActualXprType>::type ActualXprTypeCleanded;
|
|
307
|
-
|
|
308
253
|
ActualXprType actual_xpr(src.nestedExpression());
|
|
309
|
-
|
|
254
|
+
|
|
310
255
|
compute_inverse<ActualXprTypeCleanded, DstXprType>::run(actual_xpr, dst);
|
|
311
256
|
}
|
|
312
257
|
};
|
|
313
258
|
|
|
314
|
-
|
|
315
|
-
} // end namespace internal
|
|
259
|
+
} // end namespace internal
|
|
316
260
|
|
|
317
261
|
/** \lu_module
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
template<typename Derived>
|
|
335
|
-
inline const Inverse<Derived> MatrixBase<Derived>::inverse() const
|
|
336
|
-
|
|
337
|
-
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)
|
|
338
281
|
eigen_assert(rows() == cols());
|
|
339
282
|
return Inverse<Derived>(derived());
|
|
340
283
|
}
|
|
341
284
|
|
|
342
285
|
/** \lu_module
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
{
|
|
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 {
|
|
369
311
|
// i'd love to put some static assertions there, but SFINAE means that they have no effect...
|
|
370
312
|
eigen_assert(rows() == cols());
|
|
371
313
|
// for 2x2, it's worth giving a chance to avoid evaluating.
|
|
372
314
|
// for larger sizes, evaluating has negligible cost and limits code size.
|
|
373
|
-
typedef
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
internal::compute_inverse_and_det_with_check<MatrixType, ResultType>::run
|
|
379
|
-
(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);
|
|
380
320
|
}
|
|
381
321
|
|
|
382
322
|
/** \lu_module
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
) const
|
|
406
|
-
{
|
|
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 {
|
|
407
345
|
Scalar determinant;
|
|
408
346
|
// i'd love to put some static assertions there, but SFINAE means that they have no effect...
|
|
409
347
|
eigen_assert(rows() == cols());
|
|
410
|
-
computeInverseAndDetWithCheck(inverse,determinant,invertible,absDeterminantThreshold);
|
|
348
|
+
computeInverseAndDetWithCheck(inverse, determinant, invertible, absDeterminantThreshold);
|
|
411
349
|
}
|
|
412
350
|
|
|
413
|
-
}
|
|
351
|
+
} // end namespace Eigen
|
|
414
352
|
|
|
415
|
-
#endif
|
|
353
|
+
#endif // EIGEN_INVERSE_IMPL_H
|