@smake/eigen 1.0.2 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/eigen/Eigen/AccelerateSupport +52 -0
- package/eigen/Eigen/Cholesky +18 -21
- package/eigen/Eigen/CholmodSupport +28 -28
- package/eigen/Eigen/Core +235 -326
- package/eigen/Eigen/Eigenvalues +16 -14
- package/eigen/Eigen/Geometry +21 -24
- package/eigen/Eigen/Householder +9 -8
- package/eigen/Eigen/IterativeLinearSolvers +8 -4
- package/eigen/Eigen/Jacobi +14 -14
- package/eigen/Eigen/KLUSupport +43 -0
- package/eigen/Eigen/LU +16 -20
- package/eigen/Eigen/MetisSupport +12 -12
- package/eigen/Eigen/OrderingMethods +54 -54
- package/eigen/Eigen/PaStiXSupport +23 -20
- package/eigen/Eigen/PardisoSupport +17 -14
- package/eigen/Eigen/QR +18 -21
- package/eigen/Eigen/QtAlignedMalloc +5 -13
- package/eigen/Eigen/SPQRSupport +21 -14
- package/eigen/Eigen/SVD +23 -18
- package/eigen/Eigen/Sparse +1 -4
- package/eigen/Eigen/SparseCholesky +18 -23
- package/eigen/Eigen/SparseCore +18 -17
- package/eigen/Eigen/SparseLU +12 -8
- package/eigen/Eigen/SparseQR +16 -14
- package/eigen/Eigen/StdDeque +5 -2
- package/eigen/Eigen/StdList +5 -2
- package/eigen/Eigen/StdVector +5 -2
- package/eigen/Eigen/SuperLUSupport +30 -24
- package/eigen/Eigen/ThreadPool +80 -0
- package/eigen/Eigen/UmfPackSupport +19 -17
- package/eigen/Eigen/Version +14 -0
- package/eigen/Eigen/src/AccelerateSupport/AccelerateSupport.h +423 -0
- package/eigen/Eigen/src/AccelerateSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Cholesky/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Cholesky/LDLT.h +377 -401
- package/eigen/Eigen/src/Cholesky/LLT.h +332 -360
- package/eigen/Eigen/src/Cholesky/LLT_LAPACKE.h +81 -56
- package/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +620 -521
- package/eigen/Eigen/src/CholmodSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Core/ArithmeticSequence.h +239 -0
- package/eigen/Eigen/src/Core/Array.h +341 -294
- package/eigen/Eigen/src/Core/ArrayBase.h +190 -203
- package/eigen/Eigen/src/Core/ArrayWrapper.h +127 -171
- package/eigen/Eigen/src/Core/Assign.h +30 -40
- package/eigen/Eigen/src/Core/AssignEvaluator.h +711 -589
- package/eigen/Eigen/src/Core/Assign_MKL.h +130 -125
- package/eigen/Eigen/src/Core/BandMatrix.h +268 -283
- package/eigen/Eigen/src/Core/Block.h +375 -398
- package/eigen/Eigen/src/Core/CommaInitializer.h +86 -97
- package/eigen/Eigen/src/Core/ConditionEstimator.h +51 -53
- package/eigen/Eigen/src/Core/CoreEvaluators.h +1356 -1026
- package/eigen/Eigen/src/Core/CoreIterators.h +73 -59
- package/eigen/Eigen/src/Core/CwiseBinaryOp.h +114 -132
- package/eigen/Eigen/src/Core/CwiseNullaryOp.h +726 -617
- package/eigen/Eigen/src/Core/CwiseTernaryOp.h +77 -103
- package/eigen/Eigen/src/Core/CwiseUnaryOp.h +56 -68
- package/eigen/Eigen/src/Core/CwiseUnaryView.h +132 -95
- package/eigen/Eigen/src/Core/DenseBase.h +632 -571
- package/eigen/Eigen/src/Core/DenseCoeffsBase.h +511 -624
- package/eigen/Eigen/src/Core/DenseStorage.h +512 -509
- package/eigen/Eigen/src/Core/DeviceWrapper.h +153 -0
- package/eigen/Eigen/src/Core/Diagonal.h +169 -210
- package/eigen/Eigen/src/Core/DiagonalMatrix.h +351 -274
- package/eigen/Eigen/src/Core/DiagonalProduct.h +12 -10
- package/eigen/Eigen/src/Core/Dot.h +172 -222
- package/eigen/Eigen/src/Core/EigenBase.h +75 -85
- package/eigen/Eigen/src/Core/Fill.h +138 -0
- package/eigen/Eigen/src/Core/FindCoeff.h +464 -0
- package/eigen/Eigen/src/Core/ForceAlignedAccess.h +90 -109
- package/eigen/Eigen/src/Core/Fuzzy.h +82 -105
- package/eigen/Eigen/src/Core/GeneralProduct.h +327 -263
- package/eigen/Eigen/src/Core/GenericPacketMath.h +1472 -360
- package/eigen/Eigen/src/Core/GlobalFunctions.h +194 -151
- package/eigen/Eigen/src/Core/IO.h +147 -139
- package/eigen/Eigen/src/Core/IndexedView.h +321 -0
- package/eigen/Eigen/src/Core/InnerProduct.h +260 -0
- package/eigen/Eigen/src/Core/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Core/Inverse.h +56 -66
- package/eigen/Eigen/src/Core/Map.h +124 -142
- package/eigen/Eigen/src/Core/MapBase.h +256 -281
- package/eigen/Eigen/src/Core/MathFunctions.h +1620 -938
- package/eigen/Eigen/src/Core/MathFunctionsImpl.h +233 -71
- package/eigen/Eigen/src/Core/Matrix.h +491 -416
- package/eigen/Eigen/src/Core/MatrixBase.h +468 -453
- package/eigen/Eigen/src/Core/NestByValue.h +66 -85
- package/eigen/Eigen/src/Core/NoAlias.h +79 -85
- package/eigen/Eigen/src/Core/NumTraits.h +235 -148
- package/eigen/Eigen/src/Core/PartialReduxEvaluator.h +253 -0
- package/eigen/Eigen/src/Core/PermutationMatrix.h +461 -511
- package/eigen/Eigen/src/Core/PlainObjectBase.h +871 -894
- package/eigen/Eigen/src/Core/Product.h +260 -139
- package/eigen/Eigen/src/Core/ProductEvaluators.h +863 -714
- package/eigen/Eigen/src/Core/Random.h +161 -136
- package/eigen/Eigen/src/Core/RandomImpl.h +262 -0
- package/eigen/Eigen/src/Core/RealView.h +250 -0
- package/eigen/Eigen/src/Core/Redux.h +366 -336
- package/eigen/Eigen/src/Core/Ref.h +308 -209
- package/eigen/Eigen/src/Core/Replicate.h +94 -106
- package/eigen/Eigen/src/Core/Reshaped.h +398 -0
- package/eigen/Eigen/src/Core/ReturnByValue.h +49 -55
- package/eigen/Eigen/src/Core/Reverse.h +136 -145
- package/eigen/Eigen/src/Core/Select.h +70 -140
- package/eigen/Eigen/src/Core/SelfAdjointView.h +262 -285
- package/eigen/Eigen/src/Core/SelfCwiseBinaryOp.h +23 -20
- package/eigen/Eigen/src/Core/SkewSymmetricMatrix3.h +382 -0
- package/eigen/Eigen/src/Core/Solve.h +97 -111
- package/eigen/Eigen/src/Core/SolveTriangular.h +131 -129
- package/eigen/Eigen/src/Core/SolverBase.h +138 -101
- package/eigen/Eigen/src/Core/StableNorm.h +156 -160
- package/eigen/Eigen/src/Core/StlIterators.h +619 -0
- package/eigen/Eigen/src/Core/Stride.h +91 -88
- package/eigen/Eigen/src/Core/Swap.h +70 -38
- package/eigen/Eigen/src/Core/Transpose.h +295 -273
- package/eigen/Eigen/src/Core/Transpositions.h +272 -317
- package/eigen/Eigen/src/Core/TriangularMatrix.h +670 -755
- package/eigen/Eigen/src/Core/VectorBlock.h +59 -72
- package/eigen/Eigen/src/Core/VectorwiseOp.h +668 -630
- package/eigen/Eigen/src/Core/Visitor.h +480 -216
- package/eigen/Eigen/src/Core/arch/AVX/Complex.h +407 -293
- package/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +79 -388
- package/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +2935 -491
- package/eigen/Eigen/src/Core/arch/AVX/Reductions.h +353 -0
- package/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +279 -22
- package/eigen/Eigen/src/Core/arch/AVX512/Complex.h +472 -0
- package/eigen/Eigen/src/Core/arch/AVX512/GemmKernel.h +1245 -0
- package/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +85 -333
- package/eigen/Eigen/src/Core/arch/AVX512/MathFunctionsFP16.h +75 -0
- package/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +2490 -649
- package/eigen/Eigen/src/Core/arch/AVX512/PacketMathFP16.h +1413 -0
- package/eigen/Eigen/src/Core/arch/AVX512/Reductions.h +297 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TrsmKernel.h +1167 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TrsmUnrolls.inc +1219 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TypeCasting.h +277 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TypeCastingFP16.h +130 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +521 -298
- package/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +39 -280
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +3686 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +205 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +901 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMAbfloat16.h +742 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixVectorProduct.inc +2818 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h +3391 -723
- package/eigen/Eigen/src/Core/arch/AltiVec/TypeCasting.h +153 -0
- package/eigen/Eigen/src/Core/arch/Default/BFloat16.h +866 -0
- package/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +113 -14
- package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +2634 -0
- package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +227 -0
- package/eigen/Eigen/src/Core/arch/Default/Half.h +1091 -0
- package/eigen/Eigen/src/Core/arch/Default/Settings.h +11 -13
- package/eigen/Eigen/src/Core/arch/GPU/Complex.h +244 -0
- package/eigen/Eigen/src/Core/arch/GPU/MathFunctions.h +104 -0
- package/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +1712 -0
- package/eigen/Eigen/src/Core/arch/GPU/Tuple.h +268 -0
- package/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +77 -0
- package/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
- package/eigen/Eigen/src/Core/arch/HVX/PacketMath.h +1088 -0
- package/eigen/Eigen/src/Core/arch/LSX/Complex.h +520 -0
- package/eigen/Eigen/src/Core/arch/LSX/GeneralBlockPanelKernel.h +23 -0
- package/eigen/Eigen/src/Core/arch/LSX/MathFunctions.h +43 -0
- package/eigen/Eigen/src/Core/arch/LSX/PacketMath.h +2866 -0
- package/eigen/Eigen/src/Core/arch/LSX/TypeCasting.h +526 -0
- package/eigen/Eigen/src/Core/arch/MSA/Complex.h +620 -0
- package/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +379 -0
- package/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +1237 -0
- package/eigen/Eigen/src/Core/arch/NEON/Complex.h +531 -289
- package/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +243 -0
- package/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +50 -73
- package/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +5915 -579
- package/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +1642 -0
- package/eigen/Eigen/src/Core/arch/NEON/UnaryFunctors.h +57 -0
- package/eigen/Eigen/src/Core/arch/SSE/Complex.h +366 -334
- package/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +40 -514
- package/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +2164 -675
- package/eigen/Eigen/src/Core/arch/SSE/Reductions.h +324 -0
- package/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +188 -35
- package/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +48 -0
- package/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +674 -0
- package/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +52 -0
- package/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +227 -0
- package/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +303 -0
- package/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +576 -0
- package/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +83 -0
- package/eigen/Eigen/src/Core/arch/ZVector/Complex.h +434 -261
- package/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +160 -53
- package/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +1073 -605
- package/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +123 -117
- package/eigen/Eigen/src/Core/functors/BinaryFunctors.h +594 -322
- package/eigen/Eigen/src/Core/functors/NullaryFunctors.h +204 -118
- package/eigen/Eigen/src/Core/functors/StlFunctors.h +110 -97
- package/eigen/Eigen/src/Core/functors/TernaryFunctors.h +34 -7
- package/eigen/Eigen/src/Core/functors/UnaryFunctors.h +1158 -530
- package/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +2329 -1333
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +328 -364
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +191 -178
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +85 -82
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +154 -73
- package/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +396 -542
- package/eigen/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +80 -77
- package/eigen/Eigen/src/Core/products/Parallelizer.h +208 -92
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +331 -375
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +206 -224
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +139 -146
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +58 -61
- package/eigen/Eigen/src/Core/products/SelfadjointProduct.h +71 -71
- package/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h +48 -46
- package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h +294 -369
- package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +246 -238
- package/eigen/Eigen/src/Core/products/TriangularMatrixVector.h +244 -247
- package/eigen/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +212 -192
- package/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h +328 -275
- package/eigen/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +108 -109
- package/eigen/Eigen/src/Core/products/TriangularSolverVector.h +70 -93
- package/eigen/Eigen/src/Core/util/Assert.h +158 -0
- package/eigen/Eigen/src/Core/util/BlasUtil.h +413 -290
- package/eigen/Eigen/src/Core/util/ConfigureVectorization.h +543 -0
- package/eigen/Eigen/src/Core/util/Constants.h +314 -263
- package/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +130 -78
- package/eigen/Eigen/src/Core/util/EmulateArray.h +270 -0
- package/eigen/Eigen/src/Core/util/ForwardDeclarations.h +450 -224
- package/eigen/Eigen/src/Core/util/GpuHipCudaDefines.inc +101 -0
- package/eigen/Eigen/src/Core/util/GpuHipCudaUndefines.inc +45 -0
- package/eigen/Eigen/src/Core/util/IndexedViewHelper.h +487 -0
- package/eigen/Eigen/src/Core/util/IntegralConstant.h +279 -0
- package/eigen/Eigen/src/Core/util/MKL_support.h +39 -30
- package/eigen/Eigen/src/Core/util/Macros.h +939 -646
- package/eigen/Eigen/src/Core/util/MaxSizeVector.h +139 -0
- package/eigen/Eigen/src/Core/util/Memory.h +1042 -650
- package/eigen/Eigen/src/Core/util/Meta.h +618 -426
- package/eigen/Eigen/src/Core/util/MoreMeta.h +638 -0
- package/eigen/Eigen/src/Core/util/ReenableStupidWarnings.h +32 -19
- package/eigen/Eigen/src/Core/util/ReshapedHelper.h +51 -0
- package/eigen/Eigen/src/Core/util/Serializer.h +209 -0
- package/eigen/Eigen/src/Core/util/StaticAssert.h +51 -164
- package/eigen/Eigen/src/Core/util/SymbolicIndex.h +445 -0
- package/eigen/Eigen/src/Core/util/XprHelper.h +793 -538
- package/eigen/Eigen/src/Eigenvalues/ComplexEigenSolver.h +246 -277
- package/eigen/Eigen/src/Eigenvalues/ComplexSchur.h +299 -319
- package/eigen/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +52 -48
- package/eigen/Eigen/src/Eigenvalues/EigenSolver.h +413 -456
- package/eigen/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +309 -325
- package/eigen/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +157 -171
- package/eigen/Eigen/src/Eigenvalues/HessenbergDecomposition.h +292 -310
- package/eigen/Eigen/src/Eigenvalues/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +91 -107
- package/eigen/Eigen/src/Eigenvalues/RealQZ.h +539 -606
- package/eigen/Eigen/src/Eigenvalues/RealSchur.h +348 -382
- package/eigen/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +41 -35
- package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +579 -600
- package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +47 -44
- package/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +434 -461
- package/eigen/Eigen/src/Geometry/AlignedBox.h +307 -214
- package/eigen/Eigen/src/Geometry/AngleAxis.h +135 -137
- package/eigen/Eigen/src/Geometry/EulerAngles.h +163 -74
- package/eigen/Eigen/src/Geometry/Homogeneous.h +289 -333
- package/eigen/Eigen/src/Geometry/Hyperplane.h +152 -161
- package/eigen/Eigen/src/Geometry/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Geometry/OrthoMethods.h +168 -145
- package/eigen/Eigen/src/Geometry/ParametrizedLine.h +141 -104
- package/eigen/Eigen/src/Geometry/Quaternion.h +595 -497
- package/eigen/Eigen/src/Geometry/Rotation2D.h +110 -108
- package/eigen/Eigen/src/Geometry/RotationBase.h +148 -145
- package/eigen/Eigen/src/Geometry/Scaling.h +115 -90
- package/eigen/Eigen/src/Geometry/Transform.h +896 -953
- package/eigen/Eigen/src/Geometry/Translation.h +100 -98
- package/eigen/Eigen/src/Geometry/Umeyama.h +79 -84
- package/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +154 -0
- package/eigen/Eigen/src/Householder/BlockHouseholder.h +54 -42
- package/eigen/Eigen/src/Householder/Householder.h +104 -122
- package/eigen/Eigen/src/Householder/HouseholderSequence.h +416 -382
- package/eigen/Eigen/src/Householder/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +153 -166
- package/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +127 -138
- package/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +95 -124
- package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +269 -267
- package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +246 -259
- package/eigen/Eigen/src/IterativeLinearSolvers/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +218 -217
- package/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +80 -103
- package/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +59 -63
- package/eigen/Eigen/src/Jacobi/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Jacobi/Jacobi.h +256 -291
- package/eigen/Eigen/src/KLUSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/KLUSupport/KLUSupport.h +339 -0
- package/eigen/Eigen/src/LU/Determinant.h +60 -63
- package/eigen/Eigen/src/LU/FullPivLU.h +561 -626
- package/eigen/Eigen/src/LU/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/LU/InverseImpl.h +213 -275
- package/eigen/Eigen/src/LU/PartialPivLU.h +407 -435
- package/eigen/Eigen/src/LU/PartialPivLU_LAPACKE.h +54 -40
- package/eigen/Eigen/src/LU/arch/InverseSize4.h +353 -0
- package/eigen/Eigen/src/MetisSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/MetisSupport/MetisSupport.h +81 -93
- package/eigen/Eigen/src/OrderingMethods/Amd.h +250 -282
- package/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +950 -1103
- package/eigen/Eigen/src/OrderingMethods/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/OrderingMethods/Ordering.h +111 -122
- package/eigen/Eigen/src/PaStiXSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/PaStiXSupport/PaStiXSupport.h +524 -570
- package/eigen/Eigen/src/PardisoSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/PardisoSupport/PardisoSupport.h +385 -429
- package/eigen/Eigen/src/QR/ColPivHouseholderQR.h +494 -473
- package/eigen/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +120 -56
- package/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +223 -137
- package/eigen/Eigen/src/QR/FullPivHouseholderQR.h +517 -460
- package/eigen/Eigen/src/QR/HouseholderQR.h +412 -278
- package/eigen/Eigen/src/QR/HouseholderQR_LAPACKE.h +32 -23
- package/eigen/Eigen/src/QR/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SPQRSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +263 -261
- package/eigen/Eigen/src/SVD/BDCSVD.h +872 -679
- package/eigen/Eigen/src/SVD/BDCSVD_LAPACKE.h +174 -0
- package/eigen/Eigen/src/SVD/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SVD/JacobiSVD.h +585 -543
- package/eigen/Eigen/src/SVD/JacobiSVD_LAPACKE.h +85 -49
- package/eigen/Eigen/src/SVD/SVDBase.h +281 -160
- package/eigen/Eigen/src/SVD/UpperBidiagonalization.h +202 -237
- package/eigen/Eigen/src/SparseCholesky/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +769 -590
- package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +318 -129
- package/eigen/Eigen/src/SparseCore/AmbiVector.h +202 -251
- package/eigen/Eigen/src/SparseCore/CompressedStorage.h +184 -236
- package/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +140 -184
- package/eigen/Eigen/src/SparseCore/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseCore/SparseAssign.h +174 -111
- package/eigen/Eigen/src/SparseCore/SparseBlock.h +408 -477
- package/eigen/Eigen/src/SparseCore/SparseColEtree.h +100 -112
- package/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +531 -280
- package/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +559 -347
- package/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +100 -108
- package/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +185 -191
- package/eigen/Eigen/src/SparseCore/SparseDiagonalProduct.h +71 -71
- package/eigen/Eigen/src/SparseCore/SparseDot.h +49 -47
- package/eigen/Eigen/src/SparseCore/SparseFuzzy.h +13 -11
- package/eigen/Eigen/src/SparseCore/SparseMap.h +243 -253
- package/eigen/Eigen/src/SparseCore/SparseMatrix.h +1614 -1142
- package/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +403 -357
- package/eigen/Eigen/src/SparseCore/SparsePermutation.h +186 -115
- package/eigen/Eigen/src/SparseCore/SparseProduct.h +100 -91
- package/eigen/Eigen/src/SparseCore/SparseRedux.h +22 -24
- package/eigen/Eigen/src/SparseCore/SparseRef.h +268 -295
- package/eigen/Eigen/src/SparseCore/SparseSelfAdjointView.h +371 -414
- package/eigen/Eigen/src/SparseCore/SparseSolverBase.h +78 -87
- package/eigen/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +81 -95
- package/eigen/Eigen/src/SparseCore/SparseTranspose.h +62 -71
- package/eigen/Eigen/src/SparseCore/SparseTriangularView.h +132 -144
- package/eigen/Eigen/src/SparseCore/SparseUtil.h +146 -115
- package/eigen/Eigen/src/SparseCore/SparseVector.h +426 -372
- package/eigen/Eigen/src/SparseCore/SparseView.h +164 -193
- package/eigen/Eigen/src/SparseCore/TriangularSolver.h +129 -170
- package/eigen/Eigen/src/SparseLU/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseLU/SparseLU.h +814 -618
- package/eigen/Eigen/src/SparseLU/SparseLUImpl.h +61 -48
- package/eigen/Eigen/src/SparseLU/SparseLU_Memory.h +102 -118
- package/eigen/Eigen/src/SparseLU/SparseLU_Structs.h +38 -35
- package/eigen/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +273 -255
- package/eigen/Eigen/src/SparseLU/SparseLU_Utils.h +44 -49
- package/eigen/Eigen/src/SparseLU/SparseLU_column_bmod.h +104 -108
- package/eigen/Eigen/src/SparseLU/SparseLU_column_dfs.h +90 -101
- package/eigen/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +57 -58
- package/eigen/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +43 -55
- package/eigen/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +74 -71
- package/eigen/Eigen/src/SparseLU/SparseLU_panel_bmod.h +125 -133
- package/eigen/Eigen/src/SparseLU/SparseLU_panel_dfs.h +136 -159
- package/eigen/Eigen/src/SparseLU/SparseLU_pivotL.h +51 -52
- package/eigen/Eigen/src/SparseLU/SparseLU_pruneL.h +67 -73
- package/eigen/Eigen/src/SparseLU/SparseLU_relax_snode.h +24 -26
- package/eigen/Eigen/src/SparseQR/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseQR/SparseQR.h +451 -490
- package/eigen/Eigen/src/StlSupport/StdDeque.h +28 -105
- package/eigen/Eigen/src/StlSupport/StdList.h +28 -84
- package/eigen/Eigen/src/StlSupport/StdVector.h +28 -108
- package/eigen/Eigen/src/StlSupport/details.h +48 -50
- package/eigen/Eigen/src/SuperLUSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SuperLUSupport/SuperLUSupport.h +634 -732
- package/eigen/Eigen/src/ThreadPool/Barrier.h +70 -0
- package/eigen/Eigen/src/ThreadPool/CoreThreadPoolDevice.h +336 -0
- package/eigen/Eigen/src/ThreadPool/EventCount.h +241 -0
- package/eigen/Eigen/src/ThreadPool/ForkJoin.h +140 -0
- package/eigen/Eigen/src/ThreadPool/InternalHeaderCheck.h +4 -0
- package/eigen/Eigen/src/ThreadPool/NonBlockingThreadPool.h +587 -0
- package/eigen/Eigen/src/ThreadPool/RunQueue.h +230 -0
- package/eigen/Eigen/src/ThreadPool/ThreadCancel.h +21 -0
- package/eigen/Eigen/src/ThreadPool/ThreadEnvironment.h +43 -0
- package/eigen/Eigen/src/ThreadPool/ThreadLocal.h +289 -0
- package/eigen/Eigen/src/ThreadPool/ThreadPoolInterface.h +50 -0
- package/eigen/Eigen/src/ThreadPool/ThreadYield.h +16 -0
- package/eigen/Eigen/src/UmfPackSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/UmfPackSupport/UmfPackSupport.h +480 -380
- package/eigen/Eigen/src/misc/Image.h +41 -43
- package/eigen/Eigen/src/misc/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/misc/Kernel.h +39 -41
- package/eigen/Eigen/src/misc/RealSvd2x2.h +19 -21
- package/eigen/Eigen/src/misc/blas.h +83 -426
- package/eigen/Eigen/src/misc/lapacke.h +9976 -16182
- package/eigen/Eigen/src/misc/lapacke_helpers.h +163 -0
- package/eigen/Eigen/src/misc/lapacke_mangling.h +4 -5
- package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.inc +344 -0
- package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.inc +544 -0
- package/eigen/Eigen/src/plugins/BlockMethods.inc +1370 -0
- package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.inc +116 -0
- package/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.inc +167 -0
- package/eigen/Eigen/src/plugins/IndexedViewMethods.inc +192 -0
- package/eigen/Eigen/src/plugins/InternalHeaderCheck.inc +3 -0
- package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.inc +331 -0
- package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.inc +118 -0
- package/eigen/Eigen/src/plugins/ReshapedMethods.inc +133 -0
- package/lib/LibEigen.d.ts +4 -0
- package/lib/LibEigen.js +14 -0
- package/lib/index.d.ts +1 -1
- package/lib/index.js +7 -3
- package/package.json +2 -10
- package/eigen/Eigen/CMakeLists.txt +0 -19
- package/eigen/Eigen/src/Core/BooleanRedux.h +0 -164
- package/eigen/Eigen/src/Core/arch/CUDA/Complex.h +0 -103
- package/eigen/Eigen/src/Core/arch/CUDA/Half.h +0 -675
- package/eigen/Eigen/src/Core/arch/CUDA/MathFunctions.h +0 -91
- package/eigen/Eigen/src/Core/arch/CUDA/PacketMath.h +0 -333
- package/eigen/Eigen/src/Core/arch/CUDA/PacketMathHalf.h +0 -1124
- package/eigen/Eigen/src/Core/arch/CUDA/TypeCasting.h +0 -212
- package/eigen/Eigen/src/Core/util/NonMPL2.h +0 -3
- package/eigen/Eigen/src/Geometry/arch/Geometry_SSE.h +0 -161
- package/eigen/Eigen/src/LU/arch/Inverse_SSE.h +0 -338
- package/eigen/Eigen/src/SparseCore/MappedSparseMatrix.h +0 -67
- package/eigen/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +0 -280
- package/eigen/Eigen/src/misc/lapack.h +0 -152
- package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h +0 -332
- package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +0 -552
- package/eigen/Eigen/src/plugins/BlockMethods.h +0 -1058
- package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.h +0 -115
- package/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.h +0 -163
- package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +0 -152
- package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +0 -85
- package/lib/eigen.d.ts +0 -2
- package/lib/eigen.js +0 -15
|
@@ -10,179 +10,165 @@
|
|
|
10
10
|
#ifndef EIGEN_SOLVE_H
|
|
11
11
|
#define EIGEN_SOLVE_H
|
|
12
12
|
|
|
13
|
+
// IWYU pragma: private
|
|
14
|
+
#include "./InternalHeaderCheck.h"
|
|
15
|
+
|
|
13
16
|
namespace Eigen {
|
|
14
17
|
|
|
15
|
-
template<typename Decomposition, typename RhsType, typename StorageKind>
|
|
16
|
-
|
|
18
|
+
template <typename Decomposition, typename RhsType, typename StorageKind>
|
|
19
|
+
class SolveImpl;
|
|
20
|
+
|
|
17
21
|
/** \class Solve
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
22
|
+
* \ingroup Core_Module
|
|
23
|
+
*
|
|
24
|
+
* \brief Pseudo expression representing a solving operation
|
|
25
|
+
*
|
|
26
|
+
* \tparam Decomposition the type of the matrix or decomposition object
|
|
27
|
+
* \tparam Rhstype the type of the right-hand side
|
|
28
|
+
*
|
|
29
|
+
* This class represents an expression of A.solve(B)
|
|
30
|
+
* and most of the time this is the only way it is used.
|
|
31
|
+
*
|
|
32
|
+
*/
|
|
29
33
|
namespace internal {
|
|
30
34
|
|
|
31
35
|
// this solve_traits class permits to determine the evaluation type with respect to storage kind (Dense vs Sparse)
|
|
32
|
-
template<typename Decomposition, typename RhsType,typename StorageKind>
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
{
|
|
37
|
-
typedef typename make_proper_matrix_type<typename RhsType::Scalar,
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
Decomposition::MaxColsAtCompileTime,
|
|
42
|
-
RhsType::MaxColsAtCompileTime>::type PlainObject;
|
|
36
|
+
template <typename Decomposition, typename RhsType, typename StorageKind>
|
|
37
|
+
struct solve_traits;
|
|
38
|
+
|
|
39
|
+
template <typename Decomposition, typename RhsType>
|
|
40
|
+
struct solve_traits<Decomposition, RhsType, Dense> {
|
|
41
|
+
typedef typename make_proper_matrix_type<typename RhsType::Scalar, Decomposition::ColsAtCompileTime,
|
|
42
|
+
RhsType::ColsAtCompileTime, RhsType::PlainObject::Options,
|
|
43
|
+
Decomposition::MaxColsAtCompileTime, RhsType::MaxColsAtCompileTime>::type
|
|
44
|
+
PlainObject;
|
|
43
45
|
};
|
|
44
46
|
|
|
45
|
-
template<typename Decomposition, typename RhsType>
|
|
47
|
+
template <typename Decomposition, typename RhsType>
|
|
46
48
|
struct traits<Solve<Decomposition, RhsType> >
|
|
47
|
-
|
|
48
|
-
{
|
|
49
|
-
typedef typename solve_traits<Decomposition,RhsType,typename internal::traits<RhsType>::StorageKind>::PlainObject
|
|
50
|
-
|
|
49
|
+
: traits<
|
|
50
|
+
typename solve_traits<Decomposition, RhsType, typename internal::traits<RhsType>::StorageKind>::PlainObject> {
|
|
51
|
+
typedef typename solve_traits<Decomposition, RhsType, typename internal::traits<RhsType>::StorageKind>::PlainObject
|
|
52
|
+
PlainObject;
|
|
53
|
+
typedef typename promote_index_type<typename Decomposition::StorageIndex, typename RhsType::StorageIndex>::type
|
|
54
|
+
StorageIndex;
|
|
51
55
|
typedef traits<PlainObject> BaseTraits;
|
|
52
|
-
enum {
|
|
53
|
-
Flags = BaseTraits::Flags & RowMajorBit,
|
|
54
|
-
CoeffReadCost = HugeCost
|
|
55
|
-
};
|
|
56
|
+
enum { Flags = BaseTraits::Flags & RowMajorBit, CoeffReadCost = HugeCost };
|
|
56
57
|
};
|
|
57
58
|
|
|
58
|
-
}
|
|
59
|
-
|
|
59
|
+
} // namespace internal
|
|
60
60
|
|
|
61
|
-
template<typename Decomposition, typename RhsType>
|
|
62
|
-
class Solve : public SolveImpl<Decomposition,RhsType,typename internal::traits<RhsType>::StorageKind>
|
|
63
|
-
|
|
64
|
-
public:
|
|
61
|
+
template <typename Decomposition, typename RhsType>
|
|
62
|
+
class Solve : public SolveImpl<Decomposition, RhsType, typename internal::traits<RhsType>::StorageKind> {
|
|
63
|
+
public:
|
|
65
64
|
typedef typename internal::traits<Solve>::PlainObject PlainObject;
|
|
66
65
|
typedef typename internal::traits<Solve>::StorageIndex StorageIndex;
|
|
67
|
-
|
|
68
|
-
Solve(const Decomposition &dec, const RhsType &rhs)
|
|
69
|
-
|
|
70
|
-
{}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
EIGEN_DEVICE_FUNC
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
protected:
|
|
66
|
+
|
|
67
|
+
Solve(const Decomposition &dec, const RhsType &rhs) : m_dec(dec), m_rhs(rhs) {}
|
|
68
|
+
|
|
69
|
+
EIGEN_DEVICE_FUNC constexpr Index rows() const noexcept { return m_dec.cols(); }
|
|
70
|
+
EIGEN_DEVICE_FUNC constexpr Index cols() const noexcept { return m_rhs.cols(); }
|
|
71
|
+
|
|
72
|
+
EIGEN_DEVICE_FUNC const Decomposition &dec() const { return m_dec; }
|
|
73
|
+
EIGEN_DEVICE_FUNC const RhsType &rhs() const { return m_rhs; }
|
|
74
|
+
|
|
75
|
+
protected:
|
|
79
76
|
const Decomposition &m_dec;
|
|
80
|
-
const RhsType
|
|
77
|
+
const typename internal::ref_selector<RhsType>::type m_rhs;
|
|
81
78
|
};
|
|
82
79
|
|
|
83
|
-
|
|
84
80
|
// Specialization of the Solve expression for dense results
|
|
85
|
-
template<typename Decomposition, typename RhsType>
|
|
86
|
-
class SolveImpl<Decomposition,RhsType,Dense>
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
public:
|
|
92
|
-
|
|
93
|
-
typedef MatrixBase<Solve<Decomposition,RhsType> > Base;
|
|
81
|
+
template <typename Decomposition, typename RhsType>
|
|
82
|
+
class SolveImpl<Decomposition, RhsType, Dense> : public MatrixBase<Solve<Decomposition, RhsType> > {
|
|
83
|
+
typedef Solve<Decomposition, RhsType> Derived;
|
|
84
|
+
|
|
85
|
+
public:
|
|
86
|
+
typedef MatrixBase<Solve<Decomposition, RhsType> > Base;
|
|
94
87
|
EIGEN_DENSE_PUBLIC_INTERFACE(Derived)
|
|
95
88
|
|
|
96
|
-
private:
|
|
97
|
-
|
|
89
|
+
private:
|
|
98
90
|
Scalar coeff(Index row, Index col) const;
|
|
99
91
|
Scalar coeff(Index i) const;
|
|
100
92
|
};
|
|
101
93
|
|
|
102
94
|
// Generic API dispatcher
|
|
103
|
-
template<typename Decomposition, typename RhsType, typename StorageKind>
|
|
104
|
-
class SolveImpl : public internal::generic_xpr_base<Solve<Decomposition,RhsType>, MatrixXpr, StorageKind>::type
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
typedef typename internal::generic_xpr_base<Solve<Decomposition,RhsType>, MatrixXpr, StorageKind>::type Base;
|
|
95
|
+
template <typename Decomposition, typename RhsType, typename StorageKind>
|
|
96
|
+
class SolveImpl : public internal::generic_xpr_base<Solve<Decomposition, RhsType>, MatrixXpr, StorageKind>::type {
|
|
97
|
+
public:
|
|
98
|
+
typedef typename internal::generic_xpr_base<Solve<Decomposition, RhsType>, MatrixXpr, StorageKind>::type Base;
|
|
108
99
|
};
|
|
109
100
|
|
|
110
101
|
namespace internal {
|
|
111
102
|
|
|
112
103
|
// Evaluator of Solve -> eval into a temporary
|
|
113
|
-
template<typename Decomposition, typename RhsType>
|
|
114
|
-
struct evaluator<Solve<Decomposition,RhsType> >
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
typedef Solve<Decomposition,RhsType> SolveType;
|
|
104
|
+
template <typename Decomposition, typename RhsType>
|
|
105
|
+
struct evaluator<Solve<Decomposition, RhsType> >
|
|
106
|
+
: public evaluator<typename Solve<Decomposition, RhsType>::PlainObject> {
|
|
107
|
+
typedef Solve<Decomposition, RhsType> SolveType;
|
|
118
108
|
typedef typename SolveType::PlainObject PlainObject;
|
|
119
109
|
typedef evaluator<PlainObject> Base;
|
|
120
110
|
|
|
121
111
|
enum { Flags = Base::Flags | EvalBeforeNestingBit };
|
|
122
|
-
|
|
123
|
-
EIGEN_DEVICE_FUNC explicit evaluator(const SolveType& solve)
|
|
124
|
-
|
|
125
|
-
{
|
|
126
|
-
::new (static_cast<Base*>(this)) Base(m_result);
|
|
112
|
+
|
|
113
|
+
EIGEN_DEVICE_FUNC explicit evaluator(const SolveType &solve) : m_result(solve.rows(), solve.cols()) {
|
|
114
|
+
internal::construct_at<Base>(this, m_result);
|
|
127
115
|
solve.dec()._solve_impl(solve.rhs(), m_result);
|
|
128
116
|
}
|
|
129
|
-
|
|
130
|
-
protected:
|
|
117
|
+
|
|
118
|
+
protected:
|
|
131
119
|
PlainObject m_result;
|
|
132
120
|
};
|
|
133
121
|
|
|
134
122
|
// Specialization for "dst = dec.solve(rhs)"
|
|
135
|
-
// NOTE we need to specialize it for Dense2Dense to avoid ambiguous specialization error and a Sparse2Sparse
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
{
|
|
139
|
-
typedef Solve<DecType,RhsType> SrcXprType;
|
|
140
|
-
static void run(DstXprType &dst, const SrcXprType &src, const internal::assign_op<Scalar,Scalar> &)
|
|
141
|
-
{
|
|
123
|
+
// NOTE we need to specialize it for Dense2Dense to avoid ambiguous specialization error and a Sparse2Sparse
|
|
124
|
+
// specialization must exist somewhere
|
|
125
|
+
template <typename DstXprType, typename DecType, typename RhsType, typename Scalar>
|
|
126
|
+
struct Assignment<DstXprType, Solve<DecType, RhsType>, internal::assign_op<Scalar, Scalar>, Dense2Dense> {
|
|
127
|
+
typedef Solve<DecType, RhsType> SrcXprType;
|
|
128
|
+
static void run(DstXprType &dst, const SrcXprType &src, const internal::assign_op<Scalar, Scalar> &) {
|
|
142
129
|
Index dstRows = src.rows();
|
|
143
130
|
Index dstCols = src.cols();
|
|
144
|
-
if((dst.rows()!=dstRows) || (dst.cols()!=dstCols))
|
|
145
|
-
dst.resize(dstRows, dstCols);
|
|
131
|
+
if ((dst.rows() != dstRows) || (dst.cols() != dstCols)) dst.resize(dstRows, dstCols);
|
|
146
132
|
|
|
147
133
|
src.dec()._solve_impl(src.rhs(), dst);
|
|
148
134
|
}
|
|
149
135
|
};
|
|
150
136
|
|
|
151
137
|
// Specialization for "dst = dec.transpose().solve(rhs)"
|
|
152
|
-
template<typename DstXprType, typename DecType, typename RhsType, typename Scalar>
|
|
153
|
-
struct Assignment<DstXprType, Solve<Transpose<const DecType>,RhsType>, internal::assign_op<Scalar,Scalar>,
|
|
154
|
-
{
|
|
155
|
-
typedef Solve<Transpose<const DecType>,RhsType> SrcXprType;
|
|
156
|
-
static void run(DstXprType &dst, const SrcXprType &src, const internal::assign_op<Scalar,Scalar> &)
|
|
157
|
-
{
|
|
138
|
+
template <typename DstXprType, typename DecType, typename RhsType, typename Scalar>
|
|
139
|
+
struct Assignment<DstXprType, Solve<Transpose<const DecType>, RhsType>, internal::assign_op<Scalar, Scalar>,
|
|
140
|
+
Dense2Dense> {
|
|
141
|
+
typedef Solve<Transpose<const DecType>, RhsType> SrcXprType;
|
|
142
|
+
static void run(DstXprType &dst, const SrcXprType &src, const internal::assign_op<Scalar, Scalar> &) {
|
|
158
143
|
Index dstRows = src.rows();
|
|
159
144
|
Index dstCols = src.cols();
|
|
160
|
-
if((dst.rows()!=dstRows) || (dst.cols()!=dstCols))
|
|
161
|
-
dst.resize(dstRows, dstCols);
|
|
145
|
+
if ((dst.rows() != dstRows) || (dst.cols() != dstCols)) dst.resize(dstRows, dstCols);
|
|
162
146
|
|
|
163
147
|
src.dec().nestedExpression().template _solve_impl_transposed<false>(src.rhs(), dst);
|
|
164
148
|
}
|
|
165
149
|
};
|
|
166
150
|
|
|
167
151
|
// Specialization for "dst = dec.adjoint().solve(rhs)"
|
|
168
|
-
template<typename DstXprType, typename DecType, typename RhsType, typename Scalar>
|
|
169
|
-
struct Assignment<
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
152
|
+
template <typename DstXprType, typename DecType, typename RhsType, typename Scalar>
|
|
153
|
+
struct Assignment<
|
|
154
|
+
DstXprType,
|
|
155
|
+
Solve<CwiseUnaryOp<internal::scalar_conjugate_op<typename DecType::Scalar>, const Transpose<const DecType> >,
|
|
156
|
+
RhsType>,
|
|
157
|
+
internal::assign_op<Scalar, Scalar>, Dense2Dense> {
|
|
158
|
+
typedef Solve<CwiseUnaryOp<internal::scalar_conjugate_op<typename DecType::Scalar>, const Transpose<const DecType> >,
|
|
159
|
+
RhsType>
|
|
160
|
+
SrcXprType;
|
|
161
|
+
static void run(DstXprType &dst, const SrcXprType &src, const internal::assign_op<Scalar, Scalar> &) {
|
|
175
162
|
Index dstRows = src.rows();
|
|
176
163
|
Index dstCols = src.cols();
|
|
177
|
-
if((dst.rows()!=dstRows) || (dst.cols()!=dstCols))
|
|
178
|
-
|
|
179
|
-
|
|
164
|
+
if ((dst.rows() != dstRows) || (dst.cols() != dstCols)) dst.resize(dstRows, dstCols);
|
|
165
|
+
|
|
180
166
|
src.dec().nestedExpression().nestedExpression().template _solve_impl_transposed<true>(src.rhs(), dst);
|
|
181
167
|
}
|
|
182
168
|
};
|
|
183
169
|
|
|
184
|
-
}
|
|
170
|
+
} // end namespace internal
|
|
185
171
|
|
|
186
|
-
}
|
|
172
|
+
} // end namespace Eigen
|
|
187
173
|
|
|
188
|
-
#endif
|
|
174
|
+
#endif // EIGEN_SOLVE_H
|
|
@@ -10,226 +10,228 @@
|
|
|
10
10
|
#ifndef EIGEN_SOLVETRIANGULAR_H
|
|
11
11
|
#define EIGEN_SOLVETRIANGULAR_H
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
// IWYU pragma: private
|
|
14
|
+
#include "./InternalHeaderCheck.h"
|
|
15
|
+
|
|
16
|
+
namespace Eigen {
|
|
14
17
|
|
|
15
18
|
namespace internal {
|
|
16
19
|
|
|
17
20
|
// Forward declarations:
|
|
18
21
|
// The following two routines are implemented in the products/TriangularSolver*.h files
|
|
19
|
-
template<typename LhsScalar, typename RhsScalar, typename Index, int Side, int Mode, bool Conjugate, int StorageOrder>
|
|
22
|
+
template <typename LhsScalar, typename RhsScalar, typename Index, int Side, int Mode, bool Conjugate, int StorageOrder>
|
|
20
23
|
struct triangular_solve_vector;
|
|
21
24
|
|
|
22
|
-
template <typename Scalar, typename Index, int Side, int Mode, bool Conjugate, int TriStorageOrder,
|
|
25
|
+
template <typename Scalar, typename Index, int Side, int Mode, bool Conjugate, int TriStorageOrder,
|
|
26
|
+
int OtherStorageOrder, int OtherInnerStride>
|
|
23
27
|
struct triangular_solve_matrix;
|
|
24
28
|
|
|
25
29
|
// small helper struct extracting some traits on the underlying solver operation
|
|
26
|
-
template<typename Lhs, typename Rhs, int Side>
|
|
27
|
-
class trsolve_traits
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
};
|
|
30
|
+
template <typename Lhs, typename Rhs, int Side>
|
|
31
|
+
class trsolve_traits {
|
|
32
|
+
private:
|
|
33
|
+
enum { RhsIsVectorAtCompileTime = (Side == OnTheLeft ? Rhs::ColsAtCompileTime : Rhs::RowsAtCompileTime) == 1 };
|
|
34
|
+
|
|
35
|
+
public:
|
|
36
|
+
enum {
|
|
37
|
+
Unrolling = (RhsIsVectorAtCompileTime && Rhs::SizeAtCompileTime != Dynamic && Rhs::SizeAtCompileTime <= 8)
|
|
38
|
+
? CompleteUnrolling
|
|
39
|
+
: NoUnrolling,
|
|
40
|
+
RhsVectors = RhsIsVectorAtCompileTime ? 1 : Dynamic
|
|
41
|
+
};
|
|
39
42
|
};
|
|
40
43
|
|
|
41
|
-
template<typename Lhs, typename Rhs,
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
>
|
|
44
|
+
template <typename Lhs, typename Rhs,
|
|
45
|
+
int Side, // can be OnTheLeft/OnTheRight
|
|
46
|
+
int Mode, // can be Upper/Lower | UnitDiag
|
|
47
|
+
int Unrolling = trsolve_traits<Lhs, Rhs, Side>::Unrolling,
|
|
48
|
+
int RhsVectors = trsolve_traits<Lhs, Rhs, Side>::RhsVectors>
|
|
47
49
|
struct triangular_solver_selector;
|
|
48
50
|
|
|
49
|
-
template<typename Lhs, typename Rhs, int Side, int Mode>
|
|
50
|
-
struct triangular_solver_selector<Lhs,Rhs,Side,Mode,NoUnrolling,1>
|
|
51
|
-
{
|
|
51
|
+
template <typename Lhs, typename Rhs, int Side, int Mode>
|
|
52
|
+
struct triangular_solver_selector<Lhs, Rhs, Side, Mode, NoUnrolling, 1> {
|
|
52
53
|
typedef typename Lhs::Scalar LhsScalar;
|
|
53
54
|
typedef typename Rhs::Scalar RhsScalar;
|
|
54
55
|
typedef blas_traits<Lhs> LhsProductTraits;
|
|
55
56
|
typedef typename LhsProductTraits::ExtractType ActualLhsType;
|
|
56
|
-
typedef Map<Matrix<RhsScalar,Dynamic,1>, Aligned> MappedRhs;
|
|
57
|
-
static void run(const Lhs& lhs, Rhs& rhs)
|
|
58
|
-
{
|
|
57
|
+
typedef Map<Matrix<RhsScalar, Dynamic, 1>, Aligned> MappedRhs;
|
|
58
|
+
static EIGEN_DEVICE_FUNC void run(const Lhs& lhs, Rhs& rhs) {
|
|
59
59
|
ActualLhsType actualLhs = LhsProductTraits::extract(lhs);
|
|
60
60
|
|
|
61
61
|
// FIXME find a way to allow an inner stride if packet_traits<Scalar>::size==1
|
|
62
62
|
|
|
63
|
-
bool useRhsDirectly = Rhs::InnerStrideAtCompileTime==1 || rhs.innerStride()==1;
|
|
63
|
+
bool useRhsDirectly = Rhs::InnerStrideAtCompileTime == 1 || rhs.innerStride() == 1;
|
|
64
|
+
|
|
65
|
+
ei_declare_aligned_stack_constructed_variable(RhsScalar, actualRhs, rhs.size(), (useRhsDirectly ? rhs.data() : 0));
|
|
64
66
|
|
|
65
|
-
|
|
66
|
-
(useRhsDirectly ? rhs.data() : 0));
|
|
67
|
-
|
|
68
|
-
if(!useRhsDirectly)
|
|
69
|
-
MappedRhs(actualRhs,rhs.size()) = rhs;
|
|
67
|
+
if (!useRhsDirectly) MappedRhs(actualRhs, rhs.size()) = rhs;
|
|
70
68
|
|
|
71
69
|
triangular_solve_vector<LhsScalar, RhsScalar, Index, Side, Mode, LhsProductTraits::NeedToConjugate,
|
|
72
|
-
(int(Lhs::Flags) & RowMajorBit) ? RowMajor : ColMajor
|
|
73
|
-
|
|
70
|
+
(int(Lhs::Flags) & RowMajorBit) ? RowMajor : ColMajor>::run(actualLhs.cols(),
|
|
71
|
+
actualLhs.data(),
|
|
72
|
+
actualLhs.outerStride(),
|
|
73
|
+
actualRhs);
|
|
74
74
|
|
|
75
|
-
if(!useRhsDirectly)
|
|
76
|
-
rhs = MappedRhs(actualRhs, rhs.size());
|
|
75
|
+
if (!useRhsDirectly) rhs = MappedRhs(actualRhs, rhs.size());
|
|
77
76
|
}
|
|
78
77
|
};
|
|
79
78
|
|
|
80
79
|
// the rhs is a matrix
|
|
81
|
-
template<typename Lhs, typename Rhs, int Side, int Mode>
|
|
82
|
-
struct triangular_solver_selector<Lhs,Rhs,Side,Mode,NoUnrolling,Dynamic>
|
|
83
|
-
{
|
|
80
|
+
template <typename Lhs, typename Rhs, int Side, int Mode>
|
|
81
|
+
struct triangular_solver_selector<Lhs, Rhs, Side, Mode, NoUnrolling, Dynamic> {
|
|
84
82
|
typedef typename Rhs::Scalar Scalar;
|
|
85
83
|
typedef blas_traits<Lhs> LhsProductTraits;
|
|
86
84
|
typedef typename LhsProductTraits::DirectLinearAccessType ActualLhsType;
|
|
87
85
|
|
|
88
|
-
static void run(const Lhs& lhs, Rhs& rhs)
|
|
89
|
-
|
|
90
|
-
typename internal::add_const_on_value_type<ActualLhsType>::type actualLhs = LhsProductTraits::extract(lhs);
|
|
86
|
+
static EIGEN_DEVICE_FUNC void run(const Lhs& lhs, Rhs& rhs) {
|
|
87
|
+
add_const_on_value_type_t<ActualLhsType> actualLhs = LhsProductTraits::extract(lhs);
|
|
91
88
|
|
|
92
89
|
const Index size = lhs.rows();
|
|
93
|
-
const Index othersize = Side==OnTheLeft? rhs.cols() : rhs.rows();
|
|
90
|
+
const Index othersize = Side == OnTheLeft ? rhs.cols() : rhs.rows();
|
|
91
|
+
|
|
92
|
+
typedef internal::gemm_blocking_space<(Rhs::Flags & RowMajorBit) ? RowMajor : ColMajor, Scalar, Scalar,
|
|
93
|
+
Rhs::MaxRowsAtCompileTime, Rhs::MaxColsAtCompileTime,
|
|
94
|
+
Lhs::MaxRowsAtCompileTime, 4>
|
|
95
|
+
BlockingType;
|
|
94
96
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
+
// Nothing to solve.
|
|
98
|
+
if (actualLhs.size() == 0 || rhs.size() == 0) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
97
101
|
|
|
98
102
|
BlockingType blocking(rhs.rows(), rhs.cols(), size, 1, false);
|
|
99
103
|
|
|
100
|
-
triangular_solve_matrix<Scalar,Index,Side,Mode,LhsProductTraits::NeedToConjugate,
|
|
101
|
-
|
|
102
|
-
|
|
104
|
+
triangular_solve_matrix<Scalar, Index, Side, Mode, LhsProductTraits::NeedToConjugate,
|
|
105
|
+
(int(Lhs::Flags) & RowMajorBit) ? RowMajor : ColMajor,
|
|
106
|
+
(Rhs::Flags & RowMajorBit) ? RowMajor : ColMajor,
|
|
107
|
+
Rhs::InnerStrideAtCompileTime>::run(size, othersize, &actualLhs.coeffRef(0, 0),
|
|
108
|
+
actualLhs.outerStride(), &rhs.coeffRef(0, 0),
|
|
109
|
+
rhs.innerStride(), rhs.outerStride(), blocking);
|
|
103
110
|
}
|
|
104
111
|
};
|
|
105
112
|
|
|
106
113
|
/***************************************************************************
|
|
107
|
-
* meta-unrolling implementation
|
|
108
|
-
***************************************************************************/
|
|
114
|
+
* meta-unrolling implementation
|
|
115
|
+
***************************************************************************/
|
|
109
116
|
|
|
110
|
-
template<typename Lhs, typename Rhs, int Mode, int LoopIndex, int Size,
|
|
111
|
-
bool Stop = LoopIndex==Size>
|
|
117
|
+
template <typename Lhs, typename Rhs, int Mode, int LoopIndex, int Size, bool Stop = LoopIndex == Size>
|
|
112
118
|
struct triangular_solver_unroller;
|
|
113
119
|
|
|
114
|
-
template<typename Lhs, typename Rhs, int Mode, int LoopIndex, int Size>
|
|
115
|
-
struct triangular_solver_unroller<Lhs,Rhs,Mode,LoopIndex,Size,false> {
|
|
120
|
+
template <typename Lhs, typename Rhs, int Mode, int LoopIndex, int Size>
|
|
121
|
+
struct triangular_solver_unroller<Lhs, Rhs, Mode, LoopIndex, Size, false> {
|
|
116
122
|
enum {
|
|
117
|
-
IsLower = ((Mode&Lower)==Lower),
|
|
118
|
-
DiagIndex
|
|
119
|
-
StartIndex = IsLower ? 0
|
|
123
|
+
IsLower = ((Mode & Lower) == Lower),
|
|
124
|
+
DiagIndex = IsLower ? LoopIndex : Size - LoopIndex - 1,
|
|
125
|
+
StartIndex = IsLower ? 0 : DiagIndex + 1
|
|
120
126
|
};
|
|
121
|
-
static void run(const Lhs& lhs, Rhs& rhs)
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
127
|
+
static EIGEN_DEVICE_FUNC void run(const Lhs& lhs, Rhs& rhs) {
|
|
128
|
+
if (LoopIndex > 0)
|
|
129
|
+
rhs.coeffRef(DiagIndex) -= lhs.row(DiagIndex)
|
|
130
|
+
.template segment<LoopIndex>(StartIndex)
|
|
131
|
+
.transpose()
|
|
132
|
+
.cwiseProduct(rhs.template segment<LoopIndex>(StartIndex))
|
|
133
|
+
.sum();
|
|
126
134
|
|
|
127
|
-
if(!(Mode & UnitDiag))
|
|
128
|
-
rhs.coeffRef(DiagIndex) /= lhs.coeff(DiagIndex,DiagIndex);
|
|
135
|
+
if (!(Mode & UnitDiag)) rhs.coeffRef(DiagIndex) /= lhs.coeff(DiagIndex, DiagIndex);
|
|
129
136
|
|
|
130
|
-
triangular_solver_unroller<Lhs,Rhs,Mode,LoopIndex+1,Size>::run(lhs,rhs);
|
|
137
|
+
triangular_solver_unroller<Lhs, Rhs, Mode, LoopIndex + 1, Size>::run(lhs, rhs);
|
|
131
138
|
}
|
|
132
139
|
};
|
|
133
140
|
|
|
134
|
-
template<typename Lhs, typename Rhs, int Mode, int LoopIndex, int Size>
|
|
135
|
-
struct triangular_solver_unroller<Lhs,Rhs,Mode,LoopIndex,Size,true> {
|
|
136
|
-
static void run(const Lhs&, Rhs&) {}
|
|
141
|
+
template <typename Lhs, typename Rhs, int Mode, int LoopIndex, int Size>
|
|
142
|
+
struct triangular_solver_unroller<Lhs, Rhs, Mode, LoopIndex, Size, true> {
|
|
143
|
+
static EIGEN_DEVICE_FUNC void run(const Lhs&, Rhs&) {}
|
|
137
144
|
};
|
|
138
145
|
|
|
139
|
-
template<typename Lhs, typename Rhs, int Mode>
|
|
140
|
-
struct triangular_solver_selector<Lhs,Rhs,OnTheLeft,Mode,CompleteUnrolling,1> {
|
|
141
|
-
static void run(const Lhs& lhs, Rhs& rhs)
|
|
142
|
-
|
|
146
|
+
template <typename Lhs, typename Rhs, int Mode>
|
|
147
|
+
struct triangular_solver_selector<Lhs, Rhs, OnTheLeft, Mode, CompleteUnrolling, 1> {
|
|
148
|
+
static EIGEN_DEVICE_FUNC void run(const Lhs& lhs, Rhs& rhs) {
|
|
149
|
+
triangular_solver_unroller<Lhs, Rhs, Mode, 0, Rhs::SizeAtCompileTime>::run(lhs, rhs);
|
|
150
|
+
}
|
|
143
151
|
};
|
|
144
152
|
|
|
145
|
-
template<typename Lhs, typename Rhs, int Mode>
|
|
146
|
-
struct triangular_solver_selector<Lhs,Rhs,OnTheRight,Mode,CompleteUnrolling,1> {
|
|
147
|
-
static void run(const Lhs& lhs, Rhs& rhs)
|
|
148
|
-
{
|
|
153
|
+
template <typename Lhs, typename Rhs, int Mode>
|
|
154
|
+
struct triangular_solver_selector<Lhs, Rhs, OnTheRight, Mode, CompleteUnrolling, 1> {
|
|
155
|
+
static EIGEN_DEVICE_FUNC void run(const Lhs& lhs, Rhs& rhs) {
|
|
149
156
|
Transpose<const Lhs> trLhs(lhs);
|
|
150
157
|
Transpose<Rhs> trRhs(rhs);
|
|
151
|
-
|
|
152
|
-
triangular_solver_unroller<Transpose<const Lhs>,Transpose<Rhs>,
|
|
153
|
-
|
|
154
|
-
|
|
158
|
+
|
|
159
|
+
triangular_solver_unroller<Transpose<const Lhs>, Transpose<Rhs>,
|
|
160
|
+
((Mode & Upper) == Upper ? Lower : Upper) | (Mode & UnitDiag), 0,
|
|
161
|
+
Rhs::SizeAtCompileTime>::run(trLhs, trRhs);
|
|
155
162
|
}
|
|
156
163
|
};
|
|
157
164
|
|
|
158
|
-
}
|
|
165
|
+
} // end namespace internal
|
|
159
166
|
|
|
160
167
|
/***************************************************************************
|
|
161
|
-
* TriangularView methods
|
|
162
|
-
***************************************************************************/
|
|
168
|
+
* TriangularView methods
|
|
169
|
+
***************************************************************************/
|
|
163
170
|
|
|
164
171
|
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
|
165
|
-
template<typename MatrixType, unsigned int Mode>
|
|
166
|
-
template<int Side, typename OtherDerived>
|
|
167
|
-
void TriangularViewImpl<MatrixType,Mode,Dense>::solveInPlace(
|
|
168
|
-
{
|
|
172
|
+
template <typename MatrixType, unsigned int Mode>
|
|
173
|
+
template <int Side, typename OtherDerived>
|
|
174
|
+
EIGEN_DEVICE_FUNC void TriangularViewImpl<MatrixType, Mode, Dense>::solveInPlace(
|
|
175
|
+
const MatrixBase<OtherDerived>& _other) const {
|
|
169
176
|
OtherDerived& other = _other.const_cast_derived();
|
|
170
|
-
eigen_assert(
|
|
171
|
-
|
|
177
|
+
eigen_assert(derived().cols() == derived().rows() && ((Side == OnTheLeft && derived().cols() == other.rows()) ||
|
|
178
|
+
(Side == OnTheRight && derived().cols() == other.cols())));
|
|
179
|
+
eigen_assert((!(int(Mode) & int(ZeroDiag))) && bool(int(Mode) & (int(Upper) | int(Lower))));
|
|
172
180
|
// If solving for a 0x0 matrix, nothing to do, simply return.
|
|
173
|
-
if (derived().cols() == 0)
|
|
174
|
-
return;
|
|
181
|
+
if (derived().cols() == 0) return;
|
|
175
182
|
|
|
176
|
-
enum {
|
|
177
|
-
|
|
178
|
-
|
|
183
|
+
enum {
|
|
184
|
+
copy = (internal::traits<OtherDerived>::Flags & RowMajorBit) && OtherDerived::IsVectorAtCompileTime &&
|
|
185
|
+
OtherDerived::SizeAtCompileTime != 1
|
|
186
|
+
};
|
|
187
|
+
typedef std::conditional_t<copy, typename internal::plain_matrix_type_column_major<OtherDerived>::type, OtherDerived&>
|
|
188
|
+
OtherCopy;
|
|
179
189
|
OtherCopy otherCopy(other);
|
|
180
190
|
|
|
181
|
-
internal::triangular_solver_selector<MatrixType,
|
|
182
|
-
|
|
191
|
+
internal::triangular_solver_selector<MatrixType, std::remove_reference_t<OtherCopy>, Side, Mode>::run(
|
|
192
|
+
derived().nestedExpression(), otherCopy);
|
|
183
193
|
|
|
184
|
-
if (copy)
|
|
185
|
-
other = otherCopy;
|
|
194
|
+
if (copy) other = otherCopy;
|
|
186
195
|
}
|
|
187
196
|
|
|
188
|
-
template<typename Derived, unsigned int Mode>
|
|
189
|
-
template<int Side, typename Other>
|
|
190
|
-
const internal::triangular_solve_retval<Side,TriangularView<Derived,Mode>,Other>
|
|
191
|
-
TriangularViewImpl<Derived,Mode,Dense>::solve(const MatrixBase<Other>& other) const
|
|
192
|
-
|
|
193
|
-
return internal::triangular_solve_retval<Side,TriangularViewType,Other>(derived(), other.derived());
|
|
197
|
+
template <typename Derived, unsigned int Mode>
|
|
198
|
+
template <int Side, typename Other>
|
|
199
|
+
const internal::triangular_solve_retval<Side, TriangularView<Derived, Mode>, Other>
|
|
200
|
+
TriangularViewImpl<Derived, Mode, Dense>::solve(const MatrixBase<Other>& other) const {
|
|
201
|
+
return internal::triangular_solve_retval<Side, TriangularViewType, Other>(derived(), other.derived());
|
|
194
202
|
}
|
|
195
203
|
#endif
|
|
196
204
|
|
|
197
205
|
namespace internal {
|
|
198
206
|
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
struct traits<triangular_solve_retval<Side, TriangularType, Rhs> >
|
|
202
|
-
{
|
|
207
|
+
template <int Side, typename TriangularType, typename Rhs>
|
|
208
|
+
struct traits<triangular_solve_retval<Side, TriangularType, Rhs> > {
|
|
203
209
|
typedef typename internal::plain_matrix_type_column_major<Rhs>::type ReturnType;
|
|
204
210
|
};
|
|
205
211
|
|
|
206
|
-
template<int Side, typename TriangularType, typename Rhs>
|
|
207
|
-
: public ReturnByValue<triangular_solve_retval<Side, TriangularType, Rhs> >
|
|
208
|
-
|
|
209
|
-
typedef typename remove_all<typename Rhs::Nested>::type RhsNestedCleaned;
|
|
212
|
+
template <int Side, typename TriangularType, typename Rhs>
|
|
213
|
+
struct triangular_solve_retval : public ReturnByValue<triangular_solve_retval<Side, TriangularType, Rhs> > {
|
|
214
|
+
typedef remove_all_t<typename Rhs::Nested> RhsNestedCleaned;
|
|
210
215
|
typedef ReturnByValue<triangular_solve_retval> Base;
|
|
211
216
|
|
|
212
|
-
triangular_solve_retval(const TriangularType& tri, const Rhs& rhs)
|
|
213
|
-
: m_triangularMatrix(tri), m_rhs(rhs)
|
|
214
|
-
{}
|
|
217
|
+
triangular_solve_retval(const TriangularType& tri, const Rhs& rhs) : m_triangularMatrix(tri), m_rhs(rhs) {}
|
|
215
218
|
|
|
216
|
-
|
|
217
|
-
|
|
219
|
+
constexpr Index rows() const noexcept { return m_rhs.rows(); }
|
|
220
|
+
constexpr Index cols() const noexcept { return m_rhs.cols(); }
|
|
218
221
|
|
|
219
|
-
template<typename Dest>
|
|
220
|
-
{
|
|
221
|
-
if(!is_same_dense(dst,m_rhs))
|
|
222
|
-
dst = m_rhs;
|
|
222
|
+
template <typename Dest>
|
|
223
|
+
inline void evalTo(Dest& dst) const {
|
|
224
|
+
if (!is_same_dense(dst, m_rhs)) dst = m_rhs;
|
|
223
225
|
m_triangularMatrix.template solveInPlace<Side>(dst);
|
|
224
226
|
}
|
|
225
227
|
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
228
|
+
protected:
|
|
229
|
+
const TriangularType& m_triangularMatrix;
|
|
230
|
+
typename Rhs::Nested m_rhs;
|
|
229
231
|
};
|
|
230
232
|
|
|
231
|
-
}
|
|
233
|
+
} // namespace internal
|
|
232
234
|
|
|
233
|
-
}
|
|
235
|
+
} // end namespace Eigen
|
|
234
236
|
|
|
235
|
-
#endif
|
|
237
|
+
#endif // EIGEN_SOLVETRIANGULAR_H
|