@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,341 +10,338 @@
|
|
|
10
10
|
#ifndef EIGEN_TRIANGULARMATRIXVECTOR_H
|
|
11
11
|
#define EIGEN_TRIANGULARMATRIXVECTOR_H
|
|
12
12
|
|
|
13
|
+
// IWYU pragma: private
|
|
14
|
+
#include "../InternalHeaderCheck.h"
|
|
15
|
+
|
|
13
16
|
namespace Eigen {
|
|
14
17
|
|
|
15
18
|
namespace internal {
|
|
16
19
|
|
|
17
|
-
template<typename Index, int Mode, typename LhsScalar, bool ConjLhs, typename RhsScalar, bool ConjRhs,
|
|
20
|
+
template <typename Index, int Mode, typename LhsScalar, bool ConjLhs, typename RhsScalar, bool ConjRhs,
|
|
21
|
+
int StorageOrder, int Version = Specialized>
|
|
18
22
|
struct triangular_matrix_vector_product;
|
|
19
23
|
|
|
20
|
-
template<typename Index, int Mode, typename LhsScalar, bool ConjLhs, typename RhsScalar, bool ConjRhs, int Version>
|
|
21
|
-
struct triangular_matrix_vector_product<Index,Mode,LhsScalar,ConjLhs,RhsScalar,ConjRhs,ColMajor,Version>
|
|
22
|
-
{
|
|
24
|
+
template <typename Index, int Mode, typename LhsScalar, bool ConjLhs, typename RhsScalar, bool ConjRhs, int Version>
|
|
25
|
+
struct triangular_matrix_vector_product<Index, Mode, LhsScalar, ConjLhs, RhsScalar, ConjRhs, ColMajor, Version> {
|
|
23
26
|
typedef typename ScalarBinaryOpTraits<LhsScalar, RhsScalar>::ReturnType ResScalar;
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
const RhsScalar* _rhs, Index rhsIncr, ResScalar* _res, Index resIncr, const RhsScalar& alpha);
|
|
27
|
+
static constexpr bool IsLower = ((Mode & Lower) == Lower);
|
|
28
|
+
static constexpr bool HasUnitDiag = (Mode & UnitDiag) == UnitDiag;
|
|
29
|
+
static constexpr bool HasZeroDiag = (Mode & ZeroDiag) == ZeroDiag;
|
|
30
|
+
static EIGEN_DONT_INLINE void run(Index _rows, Index _cols, const LhsScalar* lhs_, Index lhsStride,
|
|
31
|
+
const RhsScalar* rhs_, Index rhsIncr, ResScalar* res_, Index resIncr,
|
|
32
|
+
const RhsScalar& alpha);
|
|
31
33
|
};
|
|
32
34
|
|
|
33
|
-
template<typename Index, int Mode, typename LhsScalar, bool ConjLhs, typename RhsScalar, bool ConjRhs, int Version>
|
|
34
|
-
EIGEN_DONT_INLINE void triangular_matrix_vector_product<Index,Mode,LhsScalar,ConjLhs,RhsScalar,ConjRhs,ColMajor,
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
if (HasUnitDiag)
|
|
68
|
-
res.coeffRef(i) += alpha * cjRhs.coeff(i);
|
|
69
|
-
}
|
|
70
|
-
Index r = IsLower ? rows - pi - actualPanelWidth : pi;
|
|
71
|
-
if (r>0)
|
|
72
|
-
{
|
|
73
|
-
Index s = IsLower ? pi+actualPanelWidth : 0;
|
|
74
|
-
general_matrix_vector_product<Index,LhsScalar,LhsMapper,ColMajor,ConjLhs,RhsScalar,RhsMapper,ConjRhs,BuiltIn>::run(
|
|
75
|
-
r, actualPanelWidth,
|
|
76
|
-
LhsMapper(&lhs.coeffRef(s,pi), lhsStride),
|
|
77
|
-
RhsMapper(&rhs.coeffRef(pi), rhsIncr),
|
|
78
|
-
&res.coeffRef(s), resIncr, alpha);
|
|
79
|
-
}
|
|
35
|
+
template <typename Index, int Mode, typename LhsScalar, bool ConjLhs, typename RhsScalar, bool ConjRhs, int Version>
|
|
36
|
+
EIGEN_DONT_INLINE void triangular_matrix_vector_product<Index, Mode, LhsScalar, ConjLhs, RhsScalar, ConjRhs, ColMajor,
|
|
37
|
+
Version>::run(Index _rows, Index _cols, const LhsScalar* lhs_,
|
|
38
|
+
Index lhsStride, const RhsScalar* rhs_,
|
|
39
|
+
Index rhsIncr, ResScalar* res_, Index resIncr,
|
|
40
|
+
const RhsScalar& alpha) {
|
|
41
|
+
static const Index PanelWidth = EIGEN_TUNE_TRIANGULAR_PANEL_WIDTH;
|
|
42
|
+
Index size = (std::min)(_rows, _cols);
|
|
43
|
+
Index rows = IsLower ? _rows : (std::min)(_rows, _cols);
|
|
44
|
+
Index cols = IsLower ? (std::min)(_rows, _cols) : _cols;
|
|
45
|
+
|
|
46
|
+
typedef Map<const Matrix<LhsScalar, Dynamic, Dynamic, ColMajor>, 0, OuterStride<> > LhsMap;
|
|
47
|
+
const LhsMap lhs(lhs_, rows, cols, OuterStride<>(lhsStride));
|
|
48
|
+
typename conj_expr_if<ConjLhs, LhsMap>::type cjLhs(lhs);
|
|
49
|
+
|
|
50
|
+
typedef Map<const Matrix<RhsScalar, Dynamic, 1>, 0, InnerStride<> > RhsMap;
|
|
51
|
+
const RhsMap rhs(rhs_, cols, InnerStride<>(rhsIncr));
|
|
52
|
+
typename conj_expr_if<ConjRhs, RhsMap>::type cjRhs(rhs);
|
|
53
|
+
|
|
54
|
+
typedef Map<Matrix<ResScalar, Dynamic, 1> > ResMap;
|
|
55
|
+
ResMap res(res_, rows);
|
|
56
|
+
|
|
57
|
+
typedef const_blas_data_mapper<LhsScalar, Index, ColMajor> LhsMapper;
|
|
58
|
+
typedef const_blas_data_mapper<RhsScalar, Index, RowMajor> RhsMapper;
|
|
59
|
+
|
|
60
|
+
for (Index pi = 0; pi < size; pi += PanelWidth) {
|
|
61
|
+
Index actualPanelWidth = (std::min)(PanelWidth, size - pi);
|
|
62
|
+
for (Index k = 0; k < actualPanelWidth; ++k) {
|
|
63
|
+
Index i = pi + k;
|
|
64
|
+
Index s = IsLower ? ((HasUnitDiag || HasZeroDiag) ? i + 1 : i) : pi;
|
|
65
|
+
Index r = IsLower ? actualPanelWidth - k : k + 1;
|
|
66
|
+
if ((!(HasUnitDiag || HasZeroDiag)) || (--r) > 0)
|
|
67
|
+
res.segment(s, r) += (alpha * cjRhs.coeff(i)) * cjLhs.col(i).segment(s, r);
|
|
68
|
+
if (HasUnitDiag) res.coeffRef(i) += alpha * cjRhs.coeff(i);
|
|
80
69
|
}
|
|
81
|
-
|
|
82
|
-
{
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
70
|
+
Index r = IsLower ? rows - pi - actualPanelWidth : pi;
|
|
71
|
+
if (r > 0) {
|
|
72
|
+
Index s = IsLower ? pi + actualPanelWidth : 0;
|
|
73
|
+
general_matrix_vector_product<Index, LhsScalar, LhsMapper, ColMajor, ConjLhs, RhsScalar, RhsMapper, ConjRhs,
|
|
74
|
+
BuiltIn>::run(r, actualPanelWidth, LhsMapper(&lhs.coeffRef(s, pi), lhsStride),
|
|
75
|
+
RhsMapper(&rhs.coeffRef(pi), rhsIncr), &res.coeffRef(s), resIncr,
|
|
76
|
+
alpha);
|
|
88
77
|
}
|
|
89
78
|
}
|
|
79
|
+
if ((!IsLower) && cols > size) {
|
|
80
|
+
general_matrix_vector_product<Index, LhsScalar, LhsMapper, ColMajor, ConjLhs, RhsScalar, RhsMapper, ConjRhs>::run(
|
|
81
|
+
rows, cols - size, LhsMapper(&lhs.coeffRef(0, size), lhsStride), RhsMapper(&rhs.coeffRef(size), rhsIncr), res_,
|
|
82
|
+
resIncr, alpha);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
90
85
|
|
|
91
|
-
template<typename Index, int Mode, typename LhsScalar, bool ConjLhs, typename RhsScalar, bool ConjRhs,int Version>
|
|
92
|
-
struct triangular_matrix_vector_product<Index,Mode,LhsScalar,ConjLhs,RhsScalar,ConjRhs,RowMajor,Version>
|
|
93
|
-
{
|
|
86
|
+
template <typename Index, int Mode, typename LhsScalar, bool ConjLhs, typename RhsScalar, bool ConjRhs, int Version>
|
|
87
|
+
struct triangular_matrix_vector_product<Index, Mode, LhsScalar, ConjLhs, RhsScalar, ConjRhs, RowMajor, Version> {
|
|
94
88
|
typedef typename ScalarBinaryOpTraits<LhsScalar, RhsScalar>::ReturnType ResScalar;
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
const RhsScalar* _rhs, Index rhsIncr, ResScalar* _res, Index resIncr, const ResScalar& alpha);
|
|
89
|
+
static constexpr bool IsLower = ((Mode & Lower) == Lower);
|
|
90
|
+
static constexpr bool HasUnitDiag = (Mode & UnitDiag) == UnitDiag;
|
|
91
|
+
static constexpr bool HasZeroDiag = (Mode & ZeroDiag) == ZeroDiag;
|
|
92
|
+
static EIGEN_DONT_INLINE void run(Index _rows, Index _cols, const LhsScalar* lhs_, Index lhsStride,
|
|
93
|
+
const RhsScalar* rhs_, Index rhsIncr, ResScalar* res_, Index resIncr,
|
|
94
|
+
const ResScalar& alpha);
|
|
102
95
|
};
|
|
103
96
|
|
|
104
|
-
template<typename Index, int Mode, typename LhsScalar, bool ConjLhs, typename RhsScalar, bool ConjRhs,int Version>
|
|
105
|
-
EIGEN_DONT_INLINE void triangular_matrix_vector_product<Index,Mode,LhsScalar,ConjLhs,RhsScalar,ConjRhs,RowMajor,
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
if (HasUnitDiag)
|
|
139
|
-
res.coeffRef(i) += alpha * cjRhs.coeff(i);
|
|
140
|
-
}
|
|
141
|
-
Index r = IsLower ? pi : cols - pi - actualPanelWidth;
|
|
142
|
-
if (r>0)
|
|
143
|
-
{
|
|
144
|
-
Index s = IsLower ? 0 : pi + actualPanelWidth;
|
|
145
|
-
general_matrix_vector_product<Index,LhsScalar,LhsMapper,RowMajor,ConjLhs,RhsScalar,RhsMapper,ConjRhs,BuiltIn>::run(
|
|
146
|
-
actualPanelWidth, r,
|
|
147
|
-
LhsMapper(&lhs.coeffRef(pi,s), lhsStride),
|
|
148
|
-
RhsMapper(&rhs.coeffRef(s), rhsIncr),
|
|
149
|
-
&res.coeffRef(pi), resIncr, alpha);
|
|
150
|
-
}
|
|
97
|
+
template <typename Index, int Mode, typename LhsScalar, bool ConjLhs, typename RhsScalar, bool ConjRhs, int Version>
|
|
98
|
+
EIGEN_DONT_INLINE void triangular_matrix_vector_product<Index, Mode, LhsScalar, ConjLhs, RhsScalar, ConjRhs, RowMajor,
|
|
99
|
+
Version>::run(Index _rows, Index _cols, const LhsScalar* lhs_,
|
|
100
|
+
Index lhsStride, const RhsScalar* rhs_,
|
|
101
|
+
Index rhsIncr, ResScalar* res_, Index resIncr,
|
|
102
|
+
const ResScalar& alpha) {
|
|
103
|
+
static const Index PanelWidth = EIGEN_TUNE_TRIANGULAR_PANEL_WIDTH;
|
|
104
|
+
Index diagSize = (std::min)(_rows, _cols);
|
|
105
|
+
Index rows = IsLower ? _rows : diagSize;
|
|
106
|
+
Index cols = IsLower ? diagSize : _cols;
|
|
107
|
+
|
|
108
|
+
typedef Map<const Matrix<LhsScalar, Dynamic, Dynamic, RowMajor>, 0, OuterStride<> > LhsMap;
|
|
109
|
+
const LhsMap lhs(lhs_, rows, cols, OuterStride<>(lhsStride));
|
|
110
|
+
typename conj_expr_if<ConjLhs, LhsMap>::type cjLhs(lhs);
|
|
111
|
+
|
|
112
|
+
typedef Map<const Matrix<RhsScalar, Dynamic, 1> > RhsMap;
|
|
113
|
+
const RhsMap rhs(rhs_, cols);
|
|
114
|
+
typename conj_expr_if<ConjRhs, RhsMap>::type cjRhs(rhs);
|
|
115
|
+
|
|
116
|
+
typedef Map<Matrix<ResScalar, Dynamic, 1>, 0, InnerStride<> > ResMap;
|
|
117
|
+
ResMap res(res_, rows, InnerStride<>(resIncr));
|
|
118
|
+
|
|
119
|
+
typedef const_blas_data_mapper<LhsScalar, Index, RowMajor> LhsMapper;
|
|
120
|
+
typedef const_blas_data_mapper<RhsScalar, Index, RowMajor> RhsMapper;
|
|
121
|
+
|
|
122
|
+
for (Index pi = 0; pi < diagSize; pi += PanelWidth) {
|
|
123
|
+
Index actualPanelWidth = (std::min)(PanelWidth, diagSize - pi);
|
|
124
|
+
for (Index k = 0; k < actualPanelWidth; ++k) {
|
|
125
|
+
Index i = pi + k;
|
|
126
|
+
Index s = IsLower ? pi : ((HasUnitDiag || HasZeroDiag) ? i + 1 : i);
|
|
127
|
+
Index r = IsLower ? k + 1 : actualPanelWidth - k;
|
|
128
|
+
if ((!(HasUnitDiag || HasZeroDiag)) || (--r) > 0)
|
|
129
|
+
res.coeffRef(i) += alpha * (cjLhs.row(i).segment(s, r).cwiseProduct(cjRhs.segment(s, r).transpose())).sum();
|
|
130
|
+
if (HasUnitDiag) res.coeffRef(i) += alpha * cjRhs.coeff(i);
|
|
151
131
|
}
|
|
152
|
-
|
|
153
|
-
{
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
132
|
+
Index r = IsLower ? pi : cols - pi - actualPanelWidth;
|
|
133
|
+
if (r > 0) {
|
|
134
|
+
Index s = IsLower ? 0 : pi + actualPanelWidth;
|
|
135
|
+
general_matrix_vector_product<Index, LhsScalar, LhsMapper, RowMajor, ConjLhs, RhsScalar, RhsMapper, ConjRhs,
|
|
136
|
+
BuiltIn>::run(actualPanelWidth, r, LhsMapper(&lhs.coeffRef(pi, s), lhsStride),
|
|
137
|
+
RhsMapper(&rhs.coeffRef(s), rhsIncr), &res.coeffRef(pi), resIncr,
|
|
138
|
+
alpha);
|
|
159
139
|
}
|
|
160
140
|
}
|
|
141
|
+
if (IsLower && rows > diagSize) {
|
|
142
|
+
general_matrix_vector_product<Index, LhsScalar, LhsMapper, RowMajor, ConjLhs, RhsScalar, RhsMapper, ConjRhs>::run(
|
|
143
|
+
rows - diagSize, cols, LhsMapper(&lhs.coeffRef(diagSize, 0), lhsStride), RhsMapper(&rhs.coeffRef(0), rhsIncr),
|
|
144
|
+
&res.coeffRef(diagSize), resIncr, alpha);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
161
147
|
|
|
162
148
|
/***************************************************************************
|
|
163
|
-
* Wrapper to product_triangular_vector
|
|
164
|
-
***************************************************************************/
|
|
149
|
+
* Wrapper to product_triangular_vector
|
|
150
|
+
***************************************************************************/
|
|
165
151
|
|
|
166
|
-
template<int Mode,int StorageOrder>
|
|
152
|
+
template <int Mode, int StorageOrder>
|
|
167
153
|
struct trmv_selector;
|
|
168
154
|
|
|
169
|
-
}
|
|
155
|
+
} // end namespace internal
|
|
170
156
|
|
|
171
157
|
namespace internal {
|
|
172
158
|
|
|
173
|
-
template<int Mode, typename Lhs, typename Rhs>
|
|
174
|
-
struct triangular_product_impl<Mode,true,Lhs,false,Rhs,true>
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
159
|
+
template <int Mode, typename Lhs, typename Rhs>
|
|
160
|
+
struct triangular_product_impl<Mode, true, Lhs, false, Rhs, true> {
|
|
161
|
+
template <typename Dest>
|
|
162
|
+
static void run(Dest& dst, const Lhs& lhs, const Rhs& rhs, const typename Dest::Scalar& alpha) {
|
|
163
|
+
eigen_assert(dst.rows() == lhs.rows() && dst.cols() == rhs.cols());
|
|
164
|
+
|
|
165
|
+
internal::trmv_selector<Mode, (int(internal::traits<Lhs>::Flags) & RowMajorBit) ? RowMajor : ColMajor>::run(
|
|
166
|
+
lhs, rhs, dst, alpha);
|
|
181
167
|
}
|
|
182
168
|
};
|
|
183
169
|
|
|
184
|
-
template<int Mode, typename Lhs, typename Rhs>
|
|
185
|
-
struct triangular_product_impl<Mode,false,Lhs,true,Rhs,false>
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
eigen_assert(dst.rows()==lhs.rows() && dst.cols()==rhs.cols());
|
|
170
|
+
template <int Mode, typename Lhs, typename Rhs>
|
|
171
|
+
struct triangular_product_impl<Mode, false, Lhs, true, Rhs, false> {
|
|
172
|
+
template <typename Dest>
|
|
173
|
+
static void run(Dest& dst, const Lhs& lhs, const Rhs& rhs, const typename Dest::Scalar& alpha) {
|
|
174
|
+
eigen_assert(dst.rows() == lhs.rows() && dst.cols() == rhs.cols());
|
|
190
175
|
|
|
191
176
|
Transpose<Dest> dstT(dst);
|
|
192
|
-
internal::trmv_selector<(Mode & (UnitDiag|ZeroDiag)) | ((Mode & Lower) ? Upper : Lower),
|
|
193
|
-
(int(internal::traits<Rhs>::Flags)&RowMajorBit) ? ColMajor
|
|
194
|
-
|
|
177
|
+
internal::trmv_selector<(Mode & (UnitDiag | ZeroDiag)) | ((Mode & Lower) ? Upper : Lower),
|
|
178
|
+
(int(internal::traits<Rhs>::Flags) & RowMajorBit) ? ColMajor
|
|
179
|
+
: RowMajor>::run(rhs.transpose(),
|
|
180
|
+
lhs.transpose(), dstT,
|
|
181
|
+
alpha);
|
|
195
182
|
}
|
|
196
183
|
};
|
|
197
184
|
|
|
198
|
-
}
|
|
185
|
+
} // end namespace internal
|
|
199
186
|
|
|
200
187
|
namespace internal {
|
|
201
188
|
|
|
202
189
|
// TODO: find a way to factorize this piece of code with gemv_selector since the logic is exactly the same.
|
|
203
|
-
|
|
204
|
-
template<int Mode>
|
|
205
|
-
{
|
|
206
|
-
template<typename Lhs, typename Rhs, typename Dest>
|
|
207
|
-
static void run(const Lhs
|
|
208
|
-
|
|
209
|
-
typedef typename
|
|
210
|
-
typedef typename
|
|
211
|
-
|
|
212
|
-
typedef typename Dest::RealScalar RealScalar;
|
|
213
|
-
|
|
190
|
+
|
|
191
|
+
template <int Mode>
|
|
192
|
+
struct trmv_selector<Mode, ColMajor> {
|
|
193
|
+
template <typename Lhs, typename Rhs, typename Dest>
|
|
194
|
+
static void run(const Lhs& lhs, const Rhs& rhs, Dest& dest, const typename Dest::Scalar& alpha) {
|
|
195
|
+
typedef typename Lhs::Scalar LhsScalar;
|
|
196
|
+
typedef typename Rhs::Scalar RhsScalar;
|
|
197
|
+
typedef typename Dest::Scalar ResScalar;
|
|
198
|
+
|
|
214
199
|
typedef internal::blas_traits<Lhs> LhsBlasTraits;
|
|
215
200
|
typedef typename LhsBlasTraits::DirectLinearAccessType ActualLhsType;
|
|
216
201
|
typedef internal::blas_traits<Rhs> RhsBlasTraits;
|
|
217
202
|
typedef typename RhsBlasTraits::DirectLinearAccessType ActualRhsType;
|
|
218
|
-
|
|
219
|
-
typedef Map<Matrix<ResScalar,Dynamic,1>, EIGEN_PLAIN_ENUM_MIN(AlignedMax,internal::packet_traits<ResScalar>::size)> MappedDest;
|
|
203
|
+
constexpr int Alignment = (std::min)(int(AlignedMax), int(internal::packet_traits<ResScalar>::size));
|
|
220
204
|
|
|
221
|
-
|
|
222
|
-
|
|
205
|
+
typedef Map<Matrix<ResScalar, Dynamic, 1>, Alignment> MappedDest;
|
|
206
|
+
|
|
207
|
+
add_const_on_value_type_t<ActualLhsType> actualLhs = LhsBlasTraits::extract(lhs);
|
|
208
|
+
add_const_on_value_type_t<ActualRhsType> actualRhs = RhsBlasTraits::extract(rhs);
|
|
223
209
|
|
|
224
210
|
LhsScalar lhs_alpha = LhsBlasTraits::extractScalarFactor(lhs);
|
|
225
211
|
RhsScalar rhs_alpha = RhsBlasTraits::extractScalarFactor(rhs);
|
|
226
212
|
ResScalar actualAlpha = alpha * lhs_alpha * rhs_alpha;
|
|
227
213
|
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
MightCannotUseDest = (Dest::InnerStrideAtCompileTime!=1) || ComplexByReal
|
|
234
|
-
};
|
|
214
|
+
// FIXME find a way to allow an inner stride on the result if packet_traits<Scalar>::size==1
|
|
215
|
+
// on, the other hand it is good for the cache to pack the vector anyways...
|
|
216
|
+
constexpr bool EvalToDestAtCompileTime = Dest::InnerStrideAtCompileTime == 1;
|
|
217
|
+
constexpr bool ComplexByReal = (NumTraits<LhsScalar>::IsComplex) && (!NumTraits<RhsScalar>::IsComplex);
|
|
218
|
+
constexpr bool MightCannotUseDest = (Dest::InnerStrideAtCompileTime != 1) || ComplexByReal;
|
|
235
219
|
|
|
236
|
-
gemv_static_vector_if<ResScalar,Dest::SizeAtCompileTime,Dest::MaxSizeAtCompileTime,MightCannotUseDest>
|
|
220
|
+
gemv_static_vector_if<ResScalar, Dest::SizeAtCompileTime, Dest::MaxSizeAtCompileTime, MightCannotUseDest>
|
|
221
|
+
static_dest;
|
|
237
222
|
|
|
238
|
-
bool alphaIsCompatible = (!ComplexByReal) || (numext::imag(actualAlpha)
|
|
223
|
+
bool alphaIsCompatible = (!ComplexByReal) || numext::is_exactly_zero(numext::imag(actualAlpha));
|
|
239
224
|
bool evalToDest = EvalToDestAtCompileTime && alphaIsCompatible;
|
|
240
225
|
|
|
241
|
-
RhsScalar compatibleAlpha = get_factor<ResScalar,RhsScalar>::run(actualAlpha);
|
|
226
|
+
RhsScalar compatibleAlpha = get_factor<ResScalar, RhsScalar>::run(actualAlpha);
|
|
242
227
|
|
|
243
|
-
ei_declare_aligned_stack_constructed_variable(ResScalar,actualDestPtr,dest.size(),
|
|
228
|
+
ei_declare_aligned_stack_constructed_variable(ResScalar, actualDestPtr, dest.size(),
|
|
244
229
|
evalToDest ? dest.data() : static_dest.data());
|
|
245
230
|
|
|
246
|
-
if(!evalToDest)
|
|
247
|
-
|
|
248
|
-
|
|
231
|
+
if (!evalToDest) {
|
|
232
|
+
#ifdef EIGEN_DENSE_STORAGE_CTOR_PLUGIN
|
|
233
|
+
constexpr int Size = Dest::SizeAtCompileTime;
|
|
249
234
|
Index size = dest.size();
|
|
250
235
|
EIGEN_DENSE_STORAGE_CTOR_PLUGIN
|
|
251
|
-
|
|
252
|
-
if(!alphaIsCompatible)
|
|
253
|
-
{
|
|
236
|
+
#endif
|
|
237
|
+
if (!alphaIsCompatible) {
|
|
254
238
|
MappedDest(actualDestPtr, dest.size()).setZero();
|
|
255
239
|
compatibleAlpha = RhsScalar(1);
|
|
256
|
-
}
|
|
257
|
-
else
|
|
240
|
+
} else
|
|
258
241
|
MappedDest(actualDestPtr, dest.size()) = dest;
|
|
259
242
|
}
|
|
260
243
|
|
|
261
|
-
internal::triangular_matrix_vector_product
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
if (!evalToDest)
|
|
272
|
-
|
|
273
|
-
if(!alphaIsCompatible)
|
|
244
|
+
internal::triangular_matrix_vector_product<Index, Mode, LhsScalar, LhsBlasTraits::NeedToConjugate, RhsScalar,
|
|
245
|
+
RhsBlasTraits::NeedToConjugate, ColMajor>::run(actualLhs.rows(),
|
|
246
|
+
actualLhs.cols(),
|
|
247
|
+
actualLhs.data(),
|
|
248
|
+
actualLhs.outerStride(),
|
|
249
|
+
actualRhs.data(),
|
|
250
|
+
actualRhs.innerStride(),
|
|
251
|
+
actualDestPtr, 1,
|
|
252
|
+
compatibleAlpha);
|
|
253
|
+
|
|
254
|
+
if (!evalToDest) {
|
|
255
|
+
if (!alphaIsCompatible)
|
|
274
256
|
dest += actualAlpha * MappedDest(actualDestPtr, dest.size());
|
|
275
257
|
else
|
|
276
258
|
dest = MappedDest(actualDestPtr, dest.size());
|
|
277
259
|
}
|
|
278
260
|
|
|
279
|
-
if (
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
dest.head(diagSize) -= (lhs_alpha-LhsScalar(1))*rhs.head(diagSize);
|
|
261
|
+
if (((Mode & UnitDiag) == UnitDiag) && !numext::is_exactly_one(lhs_alpha)) {
|
|
262
|
+
Index diagSize = (std::min)(lhs.rows(), lhs.cols());
|
|
263
|
+
dest.head(diagSize) -= (lhs_alpha - LhsScalar(1)) * rhs.head(diagSize);
|
|
283
264
|
}
|
|
284
265
|
}
|
|
285
266
|
};
|
|
286
267
|
|
|
287
|
-
template<int Mode>
|
|
288
|
-
{
|
|
289
|
-
template<typename Lhs, typename Rhs, typename Dest>
|
|
290
|
-
static void run(const Lhs
|
|
291
|
-
|
|
292
|
-
typedef typename
|
|
293
|
-
typedef typename
|
|
294
|
-
|
|
295
|
-
|
|
268
|
+
template <int Mode>
|
|
269
|
+
struct trmv_selector<Mode, RowMajor> {
|
|
270
|
+
template <typename Lhs, typename Rhs, typename Dest>
|
|
271
|
+
static void run(const Lhs& lhs, const Rhs& rhs, Dest& dest, const typename Dest::Scalar& alpha) {
|
|
272
|
+
typedef typename Lhs::Scalar LhsScalar;
|
|
273
|
+
typedef typename Rhs::Scalar RhsScalar;
|
|
274
|
+
typedef typename Dest::Scalar ResScalar;
|
|
275
|
+
|
|
296
276
|
typedef internal::blas_traits<Lhs> LhsBlasTraits;
|
|
297
277
|
typedef typename LhsBlasTraits::DirectLinearAccessType ActualLhsType;
|
|
298
278
|
typedef internal::blas_traits<Rhs> RhsBlasTraits;
|
|
299
279
|
typedef typename RhsBlasTraits::DirectLinearAccessType ActualRhsType;
|
|
300
|
-
typedef
|
|
280
|
+
typedef internal::remove_all_t<ActualRhsType> ActualRhsTypeCleaned;
|
|
301
281
|
|
|
302
|
-
|
|
303
|
-
|
|
282
|
+
std::add_const_t<ActualLhsType> actualLhs = LhsBlasTraits::extract(lhs);
|
|
283
|
+
std::add_const_t<ActualRhsType> actualRhs = RhsBlasTraits::extract(rhs);
|
|
304
284
|
|
|
305
285
|
LhsScalar lhs_alpha = LhsBlasTraits::extractScalarFactor(lhs);
|
|
306
286
|
RhsScalar rhs_alpha = RhsBlasTraits::extractScalarFactor(rhs);
|
|
307
287
|
ResScalar actualAlpha = alpha * lhs_alpha * rhs_alpha;
|
|
308
288
|
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
if(!DirectlyUseRhs)
|
|
319
|
-
|
|
320
|
-
|
|
289
|
+
constexpr bool DirectlyUseRhs = ActualRhsTypeCleaned::InnerStrideAtCompileTime == 1;
|
|
290
|
+
|
|
291
|
+
const RhsScalar* actualRhsPtr = actualRhs.data();
|
|
292
|
+
|
|
293
|
+
// Potentially create a temporary buffer to copy RHS to contiguous memory.
|
|
294
|
+
gemv_static_vector_if<RhsScalar, ActualRhsTypeCleaned::SizeAtCompileTime,
|
|
295
|
+
ActualRhsTypeCleaned::MaxSizeAtCompileTime, !DirectlyUseRhs>
|
|
296
|
+
static_rhs; // Fixed-sized array.
|
|
297
|
+
RhsScalar* buffer = nullptr;
|
|
298
|
+
if (!DirectlyUseRhs) {
|
|
299
|
+
// Maybe used fixed-sized buffer, otherwise allocate.
|
|
300
|
+
if (static_rhs.data() != nullptr) {
|
|
301
|
+
buffer = static_rhs.data();
|
|
302
|
+
} else {
|
|
303
|
+
// Allocate either with alloca or malloc.
|
|
304
|
+
Eigen::internal::check_size_for_overflow<RhsScalar>(actualRhs.size());
|
|
305
|
+
#ifdef EIGEN_ALLOCA
|
|
306
|
+
buffer = static_cast<RhsScalar*>((sizeof(RhsScalar) * actualRhs.size() <= EIGEN_STACK_ALLOCATION_LIMIT)
|
|
307
|
+
? EIGEN_ALIGNED_ALLOCA(sizeof(RhsScalar) * actualRhs.size())
|
|
308
|
+
: Eigen::internal::aligned_malloc(sizeof(RhsScalar) * actualRhs.size()));
|
|
309
|
+
#else
|
|
310
|
+
buffer = static_cast<RhsScalar*>(Eigen::internal::aligned_malloc(sizeof(RhsScalar) * actualRhs.size()));
|
|
311
|
+
#endif
|
|
312
|
+
}
|
|
313
|
+
#ifdef EIGEN_DENSE_STORAGE_CTOR_PLUGIN
|
|
314
|
+
constexpr int Size = ActualRhsTypeCleaned::SizeAtCompileTime;
|
|
321
315
|
Index size = actualRhs.size();
|
|
322
316
|
EIGEN_DENSE_STORAGE_CTOR_PLUGIN
|
|
323
|
-
|
|
324
|
-
Map<typename ActualRhsTypeCleaned::PlainObject>(
|
|
317
|
+
#endif
|
|
318
|
+
Map<typename ActualRhsTypeCleaned::PlainObject, Eigen::AlignedMax>(buffer, actualRhs.size()) = actualRhs;
|
|
319
|
+
actualRhsPtr = buffer;
|
|
325
320
|
}
|
|
326
|
-
|
|
327
|
-
internal::
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
321
|
+
// Deallocate only if malloced.
|
|
322
|
+
Eigen::internal::aligned_stack_memory_handler<RhsScalar> buffer_stack_memory_destructor(
|
|
323
|
+
buffer, actualRhs.size(),
|
|
324
|
+
!DirectlyUseRhs && static_rhs.data() == nullptr && actualRhs.size() > EIGEN_STACK_ALLOCATION_LIMIT);
|
|
325
|
+
|
|
326
|
+
internal::triangular_matrix_vector_product<Index, Mode, LhsScalar, LhsBlasTraits::NeedToConjugate, RhsScalar,
|
|
327
|
+
RhsBlasTraits::NeedToConjugate, RowMajor>::run(actualLhs.rows(),
|
|
328
|
+
actualLhs.cols(),
|
|
329
|
+
actualLhs.data(),
|
|
330
|
+
actualLhs.outerStride(),
|
|
331
|
+
actualRhsPtr, 1,
|
|
332
|
+
dest.data(),
|
|
333
|
+
dest.innerStride(),
|
|
334
|
+
actualAlpha);
|
|
335
|
+
|
|
336
|
+
if (((Mode & UnitDiag) == UnitDiag) && !numext::is_exactly_one(lhs_alpha)) {
|
|
337
|
+
Index diagSize = (std::min)(lhs.rows(), lhs.cols());
|
|
338
|
+
dest.head(diagSize) -= (lhs_alpha - LhsScalar(1)) * rhs.head(diagSize);
|
|
342
339
|
}
|
|
343
340
|
}
|
|
344
341
|
};
|
|
345
342
|
|
|
346
|
-
}
|
|
343
|
+
} // end namespace internal
|
|
347
344
|
|
|
348
|
-
}
|
|
345
|
+
} // end namespace Eigen
|
|
349
346
|
|
|
350
|
-
#endif
|
|
347
|
+
#endif // EIGEN_TRIANGULARMATRIXVECTOR_H
|