@smake/eigen 1.1.0 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/eigen/Eigen/AccelerateSupport +52 -0
- package/eigen/Eigen/Cholesky +18 -20
- package/eigen/Eigen/CholmodSupport +28 -28
- package/eigen/Eigen/Core +187 -120
- package/eigen/Eigen/Eigenvalues +16 -13
- package/eigen/Eigen/Geometry +18 -18
- package/eigen/Eigen/Householder +9 -7
- package/eigen/Eigen/IterativeLinearSolvers +8 -4
- package/eigen/Eigen/Jacobi +14 -13
- package/eigen/Eigen/KLUSupport +23 -21
- package/eigen/Eigen/LU +15 -16
- package/eigen/Eigen/MetisSupport +12 -12
- package/eigen/Eigen/OrderingMethods +54 -51
- package/eigen/Eigen/PaStiXSupport +23 -21
- package/eigen/Eigen/PardisoSupport +17 -14
- package/eigen/Eigen/QR +18 -20
- package/eigen/Eigen/QtAlignedMalloc +5 -12
- package/eigen/Eigen/SPQRSupport +21 -14
- package/eigen/Eigen/SVD +23 -17
- package/eigen/Eigen/Sparse +1 -2
- package/eigen/Eigen/SparseCholesky +18 -15
- package/eigen/Eigen/SparseCore +18 -17
- package/eigen/Eigen/SparseLU +9 -9
- package/eigen/Eigen/SparseQR +16 -14
- package/eigen/Eigen/StdDeque +5 -2
- package/eigen/Eigen/StdList +5 -2
- package/eigen/Eigen/StdVector +5 -2
- package/eigen/Eigen/SuperLUSupport +30 -24
- package/eigen/Eigen/ThreadPool +80 -0
- package/eigen/Eigen/UmfPackSupport +19 -17
- package/eigen/Eigen/Version +14 -0
- package/eigen/Eigen/src/AccelerateSupport/AccelerateSupport.h +423 -0
- package/eigen/Eigen/src/AccelerateSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Cholesky/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Cholesky/LDLT.h +366 -405
- package/eigen/Eigen/src/Cholesky/LLT.h +323 -367
- package/eigen/Eigen/src/Cholesky/LLT_LAPACKE.h +81 -56
- package/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +585 -529
- package/eigen/Eigen/src/CholmodSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Core/ArithmeticSequence.h +143 -317
- package/eigen/Eigen/src/Core/Array.h +329 -370
- package/eigen/Eigen/src/Core/ArrayBase.h +190 -203
- package/eigen/Eigen/src/Core/ArrayWrapper.h +126 -170
- package/eigen/Eigen/src/Core/Assign.h +30 -40
- package/eigen/Eigen/src/Core/AssignEvaluator.h +651 -604
- package/eigen/Eigen/src/Core/Assign_MKL.h +125 -120
- package/eigen/Eigen/src/Core/BandMatrix.h +267 -282
- package/eigen/Eigen/src/Core/Block.h +371 -390
- package/eigen/Eigen/src/Core/CommaInitializer.h +85 -100
- package/eigen/Eigen/src/Core/ConditionEstimator.h +51 -53
- package/eigen/Eigen/src/Core/CoreEvaluators.h +1214 -937
- package/eigen/Eigen/src/Core/CoreIterators.h +72 -63
- package/eigen/Eigen/src/Core/CwiseBinaryOp.h +112 -129
- package/eigen/Eigen/src/Core/CwiseNullaryOp.h +676 -702
- package/eigen/Eigen/src/Core/CwiseTernaryOp.h +77 -103
- package/eigen/Eigen/src/Core/CwiseUnaryOp.h +55 -67
- package/eigen/Eigen/src/Core/CwiseUnaryView.h +127 -92
- package/eigen/Eigen/src/Core/DenseBase.h +630 -658
- package/eigen/Eigen/src/Core/DenseCoeffsBase.h +511 -628
- package/eigen/Eigen/src/Core/DenseStorage.h +511 -590
- package/eigen/Eigen/src/Core/DeviceWrapper.h +153 -0
- package/eigen/Eigen/src/Core/Diagonal.h +168 -207
- package/eigen/Eigen/src/Core/DiagonalMatrix.h +346 -317
- package/eigen/Eigen/src/Core/DiagonalProduct.h +12 -10
- package/eigen/Eigen/src/Core/Dot.h +167 -217
- package/eigen/Eigen/src/Core/EigenBase.h +74 -85
- package/eigen/Eigen/src/Core/Fill.h +138 -0
- package/eigen/Eigen/src/Core/FindCoeff.h +464 -0
- package/eigen/Eigen/src/Core/ForceAlignedAccess.h +90 -113
- package/eigen/Eigen/src/Core/Fuzzy.h +82 -105
- package/eigen/Eigen/src/Core/GeneralProduct.h +315 -261
- package/eigen/Eigen/src/Core/GenericPacketMath.h +1182 -520
- package/eigen/Eigen/src/Core/GlobalFunctions.h +193 -157
- package/eigen/Eigen/src/Core/IO.h +131 -156
- package/eigen/Eigen/src/Core/IndexedView.h +209 -125
- package/eigen/Eigen/src/Core/InnerProduct.h +260 -0
- package/eigen/Eigen/src/Core/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Core/Inverse.h +50 -59
- package/eigen/Eigen/src/Core/Map.h +123 -141
- package/eigen/Eigen/src/Core/MapBase.h +255 -282
- package/eigen/Eigen/src/Core/MathFunctions.h +1247 -1201
- package/eigen/Eigen/src/Core/MathFunctionsImpl.h +162 -99
- package/eigen/Eigen/src/Core/Matrix.h +463 -494
- package/eigen/Eigen/src/Core/MatrixBase.h +468 -470
- package/eigen/Eigen/src/Core/NestByValue.h +58 -52
- package/eigen/Eigen/src/Core/NoAlias.h +79 -86
- package/eigen/Eigen/src/Core/NumTraits.h +206 -206
- package/eigen/Eigen/src/Core/PartialReduxEvaluator.h +163 -142
- package/eigen/Eigen/src/Core/PermutationMatrix.h +461 -511
- package/eigen/Eigen/src/Core/PlainObjectBase.h +858 -972
- package/eigen/Eigen/src/Core/Product.h +246 -130
- package/eigen/Eigen/src/Core/ProductEvaluators.h +779 -671
- package/eigen/Eigen/src/Core/Random.h +153 -164
- package/eigen/Eigen/src/Core/RandomImpl.h +262 -0
- package/eigen/Eigen/src/Core/RealView.h +250 -0
- package/eigen/Eigen/src/Core/Redux.h +334 -314
- package/eigen/Eigen/src/Core/Ref.h +259 -257
- package/eigen/Eigen/src/Core/Replicate.h +92 -104
- package/eigen/Eigen/src/Core/Reshaped.h +215 -271
- package/eigen/Eigen/src/Core/ReturnByValue.h +47 -55
- package/eigen/Eigen/src/Core/Reverse.h +133 -148
- package/eigen/Eigen/src/Core/Select.h +68 -140
- package/eigen/Eigen/src/Core/SelfAdjointView.h +254 -290
- package/eigen/Eigen/src/Core/SelfCwiseBinaryOp.h +23 -20
- package/eigen/Eigen/src/Core/SkewSymmetricMatrix3.h +382 -0
- package/eigen/Eigen/src/Core/Solve.h +88 -102
- package/eigen/Eigen/src/Core/SolveTriangular.h +126 -124
- package/eigen/Eigen/src/Core/SolverBase.h +132 -133
- package/eigen/Eigen/src/Core/StableNorm.h +113 -147
- package/eigen/Eigen/src/Core/StlIterators.h +404 -248
- package/eigen/Eigen/src/Core/Stride.h +90 -92
- package/eigen/Eigen/src/Core/Swap.h +70 -39
- package/eigen/Eigen/src/Core/Transpose.h +258 -295
- package/eigen/Eigen/src/Core/Transpositions.h +270 -333
- package/eigen/Eigen/src/Core/TriangularMatrix.h +642 -743
- package/eigen/Eigen/src/Core/VectorBlock.h +59 -72
- package/eigen/Eigen/src/Core/VectorwiseOp.h +653 -704
- package/eigen/Eigen/src/Core/Visitor.h +464 -308
- package/eigen/Eigen/src/Core/arch/AVX/Complex.h +380 -187
- package/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +65 -163
- package/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +2145 -638
- package/eigen/Eigen/src/Core/arch/AVX/Reductions.h +353 -0
- package/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +253 -60
- package/eigen/Eigen/src/Core/arch/AVX512/Complex.h +278 -228
- package/eigen/Eigen/src/Core/arch/AVX512/GemmKernel.h +1245 -0
- package/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +48 -269
- package/eigen/Eigen/src/Core/arch/AVX512/MathFunctionsFP16.h +75 -0
- package/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +1597 -754
- package/eigen/Eigen/src/Core/arch/AVX512/PacketMathFP16.h +1413 -0
- package/eigen/Eigen/src/Core/arch/AVX512/Reductions.h +297 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TrsmKernel.h +1167 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TrsmUnrolls.inc +1219 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TypeCasting.h +229 -41
- package/eigen/Eigen/src/Core/arch/AVX512/TypeCastingFP16.h +130 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +420 -184
- package/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +40 -49
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +2962 -2213
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +196 -212
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +713 -441
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMAbfloat16.h +742 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixVectorProduct.inc +2818 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h +2380 -1362
- package/eigen/Eigen/src/Core/arch/AltiVec/TypeCasting.h +153 -0
- package/eigen/Eigen/src/Core/arch/Default/BFloat16.h +390 -224
- package/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +78 -67
- package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +1784 -799
- package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +167 -50
- package/eigen/Eigen/src/Core/arch/Default/Half.h +528 -379
- package/eigen/Eigen/src/Core/arch/Default/Settings.h +10 -12
- package/eigen/Eigen/src/Core/arch/GPU/Complex.h +244 -0
- package/eigen/Eigen/src/Core/arch/GPU/MathFunctions.h +41 -40
- package/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +550 -523
- package/eigen/Eigen/src/Core/arch/GPU/Tuple.h +268 -0
- package/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +27 -30
- package/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +8 -8
- package/eigen/Eigen/src/Core/arch/HVX/PacketMath.h +1088 -0
- package/eigen/Eigen/src/Core/arch/LSX/Complex.h +520 -0
- package/eigen/Eigen/src/Core/arch/LSX/GeneralBlockPanelKernel.h +23 -0
- package/eigen/Eigen/src/Core/arch/LSX/MathFunctions.h +43 -0
- package/eigen/Eigen/src/Core/arch/LSX/PacketMath.h +2866 -0
- package/eigen/Eigen/src/Core/arch/LSX/TypeCasting.h +526 -0
- package/eigen/Eigen/src/Core/arch/MSA/Complex.h +54 -82
- package/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +84 -92
- package/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +51 -47
- package/eigen/Eigen/src/Core/arch/NEON/Complex.h +454 -306
- package/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +175 -115
- package/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +23 -30
- package/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +4366 -2857
- package/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +616 -393
- package/eigen/Eigen/src/Core/arch/NEON/UnaryFunctors.h +57 -0
- package/eigen/Eigen/src/Core/arch/SSE/Complex.h +350 -198
- package/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +38 -149
- package/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +1791 -912
- package/eigen/Eigen/src/Core/arch/SSE/Reductions.h +324 -0
- package/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +128 -40
- package/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +10 -6
- package/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +156 -234
- package/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +6 -3
- package/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +27 -32
- package/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +119 -117
- package/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +325 -419
- package/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +15 -17
- package/eigen/Eigen/src/Core/arch/ZVector/Complex.h +325 -181
- package/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +94 -83
- package/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +811 -458
- package/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +121 -124
- package/eigen/Eigen/src/Core/functors/BinaryFunctors.h +576 -370
- package/eigen/Eigen/src/Core/functors/NullaryFunctors.h +194 -109
- package/eigen/Eigen/src/Core/functors/StlFunctors.h +95 -112
- package/eigen/Eigen/src/Core/functors/TernaryFunctors.h +34 -7
- package/eigen/Eigen/src/Core/functors/UnaryFunctors.h +1038 -749
- package/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +1883 -1375
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +312 -370
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +189 -176
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +84 -81
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +154 -73
- package/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +292 -337
- package/eigen/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +80 -77
- package/eigen/Eigen/src/Core/products/Parallelizer.h +207 -105
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +327 -388
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +206 -224
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +138 -147
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +58 -61
- package/eigen/Eigen/src/Core/products/SelfadjointProduct.h +71 -71
- package/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h +48 -47
- package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h +294 -369
- package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +246 -238
- package/eigen/Eigen/src/Core/products/TriangularMatrixVector.h +244 -247
- package/eigen/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +212 -192
- package/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h +328 -277
- package/eigen/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +108 -109
- package/eigen/Eigen/src/Core/products/TriangularSolverVector.h +68 -94
- package/eigen/Eigen/src/Core/util/Assert.h +158 -0
- package/eigen/Eigen/src/Core/util/BlasUtil.h +342 -303
- package/eigen/Eigen/src/Core/util/ConfigureVectorization.h +348 -317
- package/eigen/Eigen/src/Core/util/Constants.h +297 -262
- package/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +130 -90
- package/eigen/Eigen/src/Core/util/EmulateArray.h +270 -0
- package/eigen/Eigen/src/Core/util/ForwardDeclarations.h +449 -247
- package/eigen/Eigen/src/Core/util/GpuHipCudaDefines.inc +101 -0
- package/eigen/Eigen/src/Core/util/GpuHipCudaUndefines.inc +45 -0
- package/eigen/Eigen/src/Core/util/IndexedViewHelper.h +417 -116
- package/eigen/Eigen/src/Core/util/IntegralConstant.h +211 -204
- package/eigen/Eigen/src/Core/util/MKL_support.h +39 -37
- package/eigen/Eigen/src/Core/util/Macros.h +655 -773
- package/eigen/Eigen/src/Core/util/MaxSizeVector.h +139 -0
- package/eigen/Eigen/src/Core/util/Memory.h +970 -748
- package/eigen/Eigen/src/Core/util/Meta.h +581 -633
- package/eigen/Eigen/src/Core/util/MoreMeta.h +638 -0
- package/eigen/Eigen/src/Core/util/ReenableStupidWarnings.h +32 -19
- package/eigen/Eigen/src/Core/util/ReshapedHelper.h +17 -17
- package/eigen/Eigen/src/Core/util/Serializer.h +209 -0
- package/eigen/Eigen/src/Core/util/StaticAssert.h +50 -166
- package/eigen/Eigen/src/Core/util/SymbolicIndex.h +377 -225
- package/eigen/Eigen/src/Core/util/XprHelper.h +784 -547
- package/eigen/Eigen/src/Eigenvalues/ComplexEigenSolver.h +246 -277
- package/eigen/Eigen/src/Eigenvalues/ComplexSchur.h +299 -319
- package/eigen/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +52 -48
- package/eigen/Eigen/src/Eigenvalues/EigenSolver.h +413 -456
- package/eigen/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +309 -325
- package/eigen/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +157 -171
- package/eigen/Eigen/src/Eigenvalues/HessenbergDecomposition.h +292 -310
- package/eigen/Eigen/src/Eigenvalues/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +89 -105
- package/eigen/Eigen/src/Eigenvalues/RealQZ.h +537 -607
- package/eigen/Eigen/src/Eigenvalues/RealSchur.h +342 -381
- package/eigen/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +41 -35
- package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +541 -595
- package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +47 -44
- package/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +430 -462
- package/eigen/Eigen/src/Geometry/AlignedBox.h +226 -227
- package/eigen/Eigen/src/Geometry/AngleAxis.h +131 -133
- package/eigen/Eigen/src/Geometry/EulerAngles.h +163 -74
- package/eigen/Eigen/src/Geometry/Homogeneous.h +285 -333
- package/eigen/Eigen/src/Geometry/Hyperplane.h +151 -160
- package/eigen/Eigen/src/Geometry/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Geometry/OrthoMethods.h +168 -146
- package/eigen/Eigen/src/Geometry/ParametrizedLine.h +127 -127
- package/eigen/Eigen/src/Geometry/Quaternion.h +566 -506
- package/eigen/Eigen/src/Geometry/Rotation2D.h +107 -105
- package/eigen/Eigen/src/Geometry/RotationBase.h +148 -145
- package/eigen/Eigen/src/Geometry/Scaling.h +113 -106
- package/eigen/Eigen/src/Geometry/Transform.h +858 -936
- package/eigen/Eigen/src/Geometry/Translation.h +94 -92
- package/eigen/Eigen/src/Geometry/Umeyama.h +79 -84
- package/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +90 -104
- package/eigen/Eigen/src/Householder/BlockHouseholder.h +51 -46
- package/eigen/Eigen/src/Householder/Householder.h +102 -124
- package/eigen/Eigen/src/Householder/HouseholderSequence.h +412 -453
- package/eigen/Eigen/src/Householder/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +149 -162
- package/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +124 -119
- package/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +92 -104
- package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +251 -243
- package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +224 -228
- package/eigen/Eigen/src/IterativeLinearSolvers/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +178 -227
- package/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +79 -84
- package/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +54 -60
- package/eigen/Eigen/src/Jacobi/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Jacobi/Jacobi.h +252 -308
- package/eigen/Eigen/src/KLUSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/KLUSupport/KLUSupport.h +208 -227
- package/eigen/Eigen/src/LU/Determinant.h +50 -69
- package/eigen/Eigen/src/LU/FullPivLU.h +545 -596
- package/eigen/Eigen/src/LU/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/LU/InverseImpl.h +206 -285
- package/eigen/Eigen/src/LU/PartialPivLU.h +390 -428
- package/eigen/Eigen/src/LU/PartialPivLU_LAPACKE.h +54 -40
- package/eigen/Eigen/src/LU/arch/InverseSize4.h +72 -70
- package/eigen/Eigen/src/MetisSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/MetisSupport/MetisSupport.h +81 -93
- package/eigen/Eigen/src/OrderingMethods/Amd.h +243 -265
- package/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +831 -1004
- package/eigen/Eigen/src/OrderingMethods/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/OrderingMethods/Ordering.h +112 -119
- package/eigen/Eigen/src/PaStiXSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/PaStiXSupport/PaStiXSupport.h +524 -570
- package/eigen/Eigen/src/PardisoSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/PardisoSupport/PardisoSupport.h +385 -430
- package/eigen/Eigen/src/QR/ColPivHouseholderQR.h +479 -479
- package/eigen/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +120 -56
- package/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +166 -153
- package/eigen/Eigen/src/QR/FullPivHouseholderQR.h +495 -475
- package/eigen/Eigen/src/QR/HouseholderQR.h +394 -285
- package/eigen/Eigen/src/QR/HouseholderQR_LAPACKE.h +32 -23
- package/eigen/Eigen/src/QR/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SPQRSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +244 -264
- package/eigen/Eigen/src/SVD/BDCSVD.h +817 -713
- package/eigen/Eigen/src/SVD/BDCSVD_LAPACKE.h +174 -0
- package/eigen/Eigen/src/SVD/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SVD/JacobiSVD.h +577 -543
- package/eigen/Eigen/src/SVD/JacobiSVD_LAPACKE.h +85 -49
- package/eigen/Eigen/src/SVD/SVDBase.h +242 -182
- package/eigen/Eigen/src/SVD/UpperBidiagonalization.h +200 -235
- package/eigen/Eigen/src/SparseCholesky/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +765 -594
- package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +308 -94
- package/eigen/Eigen/src/SparseCore/AmbiVector.h +202 -251
- package/eigen/Eigen/src/SparseCore/CompressedStorage.h +184 -252
- package/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +134 -178
- package/eigen/Eigen/src/SparseCore/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseCore/SparseAssign.h +149 -140
- package/eigen/Eigen/src/SparseCore/SparseBlock.h +403 -440
- package/eigen/Eigen/src/SparseCore/SparseColEtree.h +100 -112
- package/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +525 -303
- package/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +555 -339
- package/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +100 -108
- package/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +169 -197
- package/eigen/Eigen/src/SparseCore/SparseDiagonalProduct.h +71 -71
- package/eigen/Eigen/src/SparseCore/SparseDot.h +49 -47
- package/eigen/Eigen/src/SparseCore/SparseFuzzy.h +13 -11
- package/eigen/Eigen/src/SparseCore/SparseMap.h +243 -253
- package/eigen/Eigen/src/SparseCore/SparseMatrix.h +1603 -1245
- package/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +403 -350
- package/eigen/Eigen/src/SparseCore/SparsePermutation.h +186 -115
- package/eigen/Eigen/src/SparseCore/SparseProduct.h +94 -97
- package/eigen/Eigen/src/SparseCore/SparseRedux.h +22 -24
- package/eigen/Eigen/src/SparseCore/SparseRef.h +268 -295
- package/eigen/Eigen/src/SparseCore/SparseSelfAdjointView.h +370 -416
- package/eigen/Eigen/src/SparseCore/SparseSolverBase.h +78 -87
- package/eigen/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +81 -95
- package/eigen/Eigen/src/SparseCore/SparseTranspose.h +62 -71
- package/eigen/Eigen/src/SparseCore/SparseTriangularView.h +132 -144
- package/eigen/Eigen/src/SparseCore/SparseUtil.h +138 -115
- package/eigen/Eigen/src/SparseCore/SparseVector.h +426 -372
- package/eigen/Eigen/src/SparseCore/SparseView.h +164 -193
- package/eigen/Eigen/src/SparseCore/TriangularSolver.h +129 -170
- package/eigen/Eigen/src/SparseLU/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseLU/SparseLU.h +756 -710
- package/eigen/Eigen/src/SparseLU/SparseLUImpl.h +61 -48
- package/eigen/Eigen/src/SparseLU/SparseLU_Memory.h +102 -118
- package/eigen/Eigen/src/SparseLU/SparseLU_Structs.h +38 -35
- package/eigen/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +245 -301
- package/eigen/Eigen/src/SparseLU/SparseLU_Utils.h +44 -49
- package/eigen/Eigen/src/SparseLU/SparseLU_column_bmod.h +104 -108
- package/eigen/Eigen/src/SparseLU/SparseLU_column_dfs.h +89 -100
- package/eigen/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +57 -58
- package/eigen/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +43 -55
- package/eigen/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +74 -71
- package/eigen/Eigen/src/SparseLU/SparseLU_panel_bmod.h +124 -132
- package/eigen/Eigen/src/SparseLU/SparseLU_panel_dfs.h +136 -159
- package/eigen/Eigen/src/SparseLU/SparseLU_pivotL.h +51 -52
- package/eigen/Eigen/src/SparseLU/SparseLU_pruneL.h +67 -73
- package/eigen/Eigen/src/SparseLU/SparseLU_relax_snode.h +24 -26
- package/eigen/Eigen/src/SparseQR/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseQR/SparseQR.h +450 -502
- package/eigen/Eigen/src/StlSupport/StdDeque.h +28 -93
- package/eigen/Eigen/src/StlSupport/StdList.h +28 -84
- package/eigen/Eigen/src/StlSupport/StdVector.h +28 -108
- package/eigen/Eigen/src/StlSupport/details.h +48 -50
- package/eigen/Eigen/src/SuperLUSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SuperLUSupport/SuperLUSupport.h +634 -730
- package/eigen/Eigen/src/ThreadPool/Barrier.h +70 -0
- package/eigen/Eigen/src/ThreadPool/CoreThreadPoolDevice.h +336 -0
- package/eigen/Eigen/src/ThreadPool/EventCount.h +241 -0
- package/eigen/Eigen/src/ThreadPool/ForkJoin.h +140 -0
- package/eigen/Eigen/src/ThreadPool/InternalHeaderCheck.h +4 -0
- package/eigen/Eigen/src/ThreadPool/NonBlockingThreadPool.h +587 -0
- package/eigen/Eigen/src/ThreadPool/RunQueue.h +230 -0
- package/eigen/Eigen/src/ThreadPool/ThreadCancel.h +21 -0
- package/eigen/Eigen/src/ThreadPool/ThreadEnvironment.h +43 -0
- package/eigen/Eigen/src/ThreadPool/ThreadLocal.h +289 -0
- package/eigen/Eigen/src/ThreadPool/ThreadPoolInterface.h +50 -0
- package/eigen/Eigen/src/ThreadPool/ThreadYield.h +16 -0
- package/eigen/Eigen/src/UmfPackSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/UmfPackSupport/UmfPackSupport.h +428 -464
- package/eigen/Eigen/src/misc/Image.h +41 -43
- package/eigen/Eigen/src/misc/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/misc/Kernel.h +39 -41
- package/eigen/Eigen/src/misc/RealSvd2x2.h +19 -21
- package/eigen/Eigen/src/misc/blas.h +83 -426
- package/eigen/Eigen/src/misc/lapacke.h +9972 -16179
- package/eigen/Eigen/src/misc/lapacke_helpers.h +163 -0
- package/eigen/Eigen/src/misc/lapacke_mangling.h +4 -5
- package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.inc +344 -0
- package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.inc +544 -0
- package/eigen/Eigen/src/plugins/{BlockMethods.h → BlockMethods.inc} +434 -506
- package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.inc +116 -0
- package/eigen/Eigen/src/plugins/{CommonCwiseUnaryOps.h → CommonCwiseUnaryOps.inc} +58 -68
- package/eigen/Eigen/src/plugins/IndexedViewMethods.inc +192 -0
- package/eigen/Eigen/src/plugins/InternalHeaderCheck.inc +3 -0
- package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.inc +331 -0
- package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.inc +118 -0
- package/eigen/Eigen/src/plugins/ReshapedMethods.inc +133 -0
- package/package.json +1 -1
- package/eigen/COPYING.APACHE +0 -203
- package/eigen/COPYING.BSD +0 -26
- package/eigen/COPYING.GPL +0 -674
- package/eigen/COPYING.LGPL +0 -502
- package/eigen/COPYING.MINPACK +0 -51
- package/eigen/COPYING.MPL2 +0 -373
- package/eigen/COPYING.README +0 -18
- package/eigen/Eigen/src/Core/BooleanRedux.h +0 -162
- package/eigen/Eigen/src/Core/arch/CUDA/Complex.h +0 -258
- package/eigen/Eigen/src/Core/arch/Default/TypeCasting.h +0 -120
- package/eigen/Eigen/src/Core/arch/SYCL/SyclMemoryModel.h +0 -694
- package/eigen/Eigen/src/Core/util/NonMPL2.h +0 -3
- package/eigen/Eigen/src/SparseCore/MappedSparseMatrix.h +0 -67
- package/eigen/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +0 -280
- package/eigen/Eigen/src/misc/lapack.h +0 -152
- package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h +0 -358
- package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +0 -696
- package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.h +0 -115
- package/eigen/Eigen/src/plugins/IndexedViewMethods.h +0 -262
- package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +0 -152
- package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +0 -95
- package/eigen/Eigen/src/plugins/ReshapedMethods.h +0 -149
- package/eigen/README.md +0 -5
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
// This file is part of Eigen, a lightweight C++ template library
|
|
2
|
+
// for linear algebra.
|
|
3
|
+
//
|
|
4
|
+
// Copyright (C) 2023 Charlie Schlosser <cs.schlosser@gmail.com>
|
|
5
|
+
//
|
|
6
|
+
// This Source Code Form is subject to the terms of the Mozilla
|
|
7
|
+
// Public License v. 2.0. If a copy of the MPL was not distributed
|
|
8
|
+
// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
9
|
+
|
|
10
|
+
#ifndef EIGEN_DEVICEWRAPPER_H
|
|
11
|
+
#define EIGEN_DEVICEWRAPPER_H
|
|
12
|
+
|
|
13
|
+
namespace Eigen {
|
|
14
|
+
template <typename Derived, typename Device>
|
|
15
|
+
struct DeviceWrapper {
|
|
16
|
+
using Base = EigenBase<internal::remove_all_t<Derived>>;
|
|
17
|
+
using Scalar = typename Derived::Scalar;
|
|
18
|
+
|
|
19
|
+
EIGEN_DEVICE_FUNC DeviceWrapper(Base& xpr, Device& device) : m_xpr(xpr.derived()), m_device(device) {}
|
|
20
|
+
EIGEN_DEVICE_FUNC DeviceWrapper(const Base& xpr, Device& device) : m_xpr(xpr.derived()), m_device(device) {}
|
|
21
|
+
|
|
22
|
+
template <typename OtherDerived>
|
|
23
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived& operator=(const EigenBase<OtherDerived>& other) {
|
|
24
|
+
using AssignOp = internal::assign_op<Scalar, typename OtherDerived::Scalar>;
|
|
25
|
+
internal::call_assignment(*this, other.derived(), AssignOp());
|
|
26
|
+
return m_xpr;
|
|
27
|
+
}
|
|
28
|
+
template <typename OtherDerived>
|
|
29
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived& operator+=(const EigenBase<OtherDerived>& other) {
|
|
30
|
+
using AddAssignOp = internal::add_assign_op<Scalar, typename OtherDerived::Scalar>;
|
|
31
|
+
internal::call_assignment(*this, other.derived(), AddAssignOp());
|
|
32
|
+
return m_xpr;
|
|
33
|
+
}
|
|
34
|
+
template <typename OtherDerived>
|
|
35
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived& operator-=(const EigenBase<OtherDerived>& other) {
|
|
36
|
+
using SubAssignOp = internal::sub_assign_op<Scalar, typename OtherDerived::Scalar>;
|
|
37
|
+
internal::call_assignment(*this, other.derived(), SubAssignOp());
|
|
38
|
+
return m_xpr;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived& derived() { return m_xpr; }
|
|
42
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Device& device() { return m_device; }
|
|
43
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE NoAlias<DeviceWrapper, EigenBase> noalias() {
|
|
44
|
+
return NoAlias<DeviceWrapper, EigenBase>(*this);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
Derived& m_xpr;
|
|
48
|
+
Device& m_device;
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
namespace internal {
|
|
52
|
+
|
|
53
|
+
// this is where we differentiate between lazy assignment and specialized kernels (e.g. matrix products)
|
|
54
|
+
template <typename DstXprType, typename SrcXprType, typename Functor, typename Device,
|
|
55
|
+
typename Kind = typename AssignmentKind<typename evaluator_traits<DstXprType>::Shape,
|
|
56
|
+
typename evaluator_traits<SrcXprType>::Shape>::Kind,
|
|
57
|
+
typename EnableIf = void>
|
|
58
|
+
struct AssignmentWithDevice;
|
|
59
|
+
|
|
60
|
+
// unless otherwise specified, use the default product implementation
|
|
61
|
+
template <typename DstXprType, typename Lhs, typename Rhs, int Options, typename Functor, typename Device,
|
|
62
|
+
typename Weak>
|
|
63
|
+
struct AssignmentWithDevice<DstXprType, Product<Lhs, Rhs, Options>, Functor, Device, Dense2Dense, Weak> {
|
|
64
|
+
using SrcXprType = Product<Lhs, Rhs, Options>;
|
|
65
|
+
using Base = Assignment<DstXprType, SrcXprType, Functor>;
|
|
66
|
+
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(DstXprType& dst, const SrcXprType& src, const Functor& func,
|
|
67
|
+
Device&) {
|
|
68
|
+
Base::run(dst, src, func);
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
// specialization for coeffcient-wise assignment
|
|
73
|
+
template <typename DstXprType, typename SrcXprType, typename Functor, typename Device, typename Weak>
|
|
74
|
+
struct AssignmentWithDevice<DstXprType, SrcXprType, Functor, Device, Dense2Dense, Weak> {
|
|
75
|
+
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(DstXprType& dst, const SrcXprType& src, const Functor& func,
|
|
76
|
+
Device& device) {
|
|
77
|
+
#ifndef EIGEN_NO_DEBUG
|
|
78
|
+
internal::check_for_aliasing(dst, src);
|
|
79
|
+
#endif
|
|
80
|
+
|
|
81
|
+
call_dense_assignment_loop(dst, src, func, device);
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
// this allows us to use the default evaluation scheme if it is not specialized for the device
|
|
86
|
+
template <typename Kernel, typename Device, int Traversal = Kernel::AssignmentTraits::Traversal,
|
|
87
|
+
int Unrolling = Kernel::AssignmentTraits::Unrolling>
|
|
88
|
+
struct dense_assignment_loop_with_device {
|
|
89
|
+
using Base = dense_assignment_loop<Kernel, Traversal, Unrolling>;
|
|
90
|
+
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr void run(Kernel& kernel, Device&) { Base::run(kernel); }
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
// entry point for a generic expression with device
|
|
94
|
+
template <typename Dst, typename Src, typename Func, typename Device>
|
|
95
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr void call_assignment_no_alias(DeviceWrapper<Dst, Device> dst,
|
|
96
|
+
const Src& src, const Func& func) {
|
|
97
|
+
enum {
|
|
98
|
+
NeedToTranspose = ((int(Dst::RowsAtCompileTime) == 1 && int(Src::ColsAtCompileTime) == 1) ||
|
|
99
|
+
(int(Dst::ColsAtCompileTime) == 1 && int(Src::RowsAtCompileTime) == 1)) &&
|
|
100
|
+
int(Dst::SizeAtCompileTime) != 1
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
using ActualDstTypeCleaned = std::conditional_t<NeedToTranspose, Transpose<Dst>, Dst>;
|
|
104
|
+
using ActualDstType = std::conditional_t<NeedToTranspose, Transpose<Dst>, Dst&>;
|
|
105
|
+
ActualDstType actualDst(dst.derived());
|
|
106
|
+
|
|
107
|
+
// TODO check whether this is the right place to perform these checks:
|
|
108
|
+
EIGEN_STATIC_ASSERT_LVALUE(Dst)
|
|
109
|
+
EIGEN_STATIC_ASSERT_SAME_MATRIX_SIZE(ActualDstTypeCleaned, Src)
|
|
110
|
+
EIGEN_CHECK_BINARY_COMPATIBILIY(Func, typename ActualDstTypeCleaned::Scalar, typename Src::Scalar);
|
|
111
|
+
|
|
112
|
+
// this provides a mechanism for specializing simple assignments, matrix products, etc
|
|
113
|
+
AssignmentWithDevice<ActualDstTypeCleaned, Src, Func, Device>::run(actualDst, src, func, dst.device());
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
// copy and pasted from AssignEvaluator except forward device to kernel
|
|
117
|
+
template <typename DstXprType, typename SrcXprType, typename Functor, typename Device>
|
|
118
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr void call_dense_assignment_loop(DstXprType& dst, const SrcXprType& src,
|
|
119
|
+
const Functor& func, Device& device) {
|
|
120
|
+
using DstEvaluatorType = evaluator<DstXprType>;
|
|
121
|
+
using SrcEvaluatorType = evaluator<SrcXprType>;
|
|
122
|
+
|
|
123
|
+
SrcEvaluatorType srcEvaluator(src);
|
|
124
|
+
|
|
125
|
+
// NOTE To properly handle A = (A*A.transpose())/s with A rectangular,
|
|
126
|
+
// we need to resize the destination after the source evaluator has been created.
|
|
127
|
+
resize_if_allowed(dst, src, func);
|
|
128
|
+
|
|
129
|
+
DstEvaluatorType dstEvaluator(dst);
|
|
130
|
+
|
|
131
|
+
using Kernel = generic_dense_assignment_kernel<DstEvaluatorType, SrcEvaluatorType, Functor>;
|
|
132
|
+
|
|
133
|
+
Kernel kernel(dstEvaluator, srcEvaluator, func, dst.const_cast_derived());
|
|
134
|
+
|
|
135
|
+
dense_assignment_loop_with_device<Kernel, Device>::run(kernel, device);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
} // namespace internal
|
|
139
|
+
|
|
140
|
+
template <typename Derived>
|
|
141
|
+
template <typename Device>
|
|
142
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE DeviceWrapper<Derived, Device> EigenBase<Derived>::device(Device& device) {
|
|
143
|
+
return DeviceWrapper<Derived, Device>(derived(), device);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
template <typename Derived>
|
|
147
|
+
template <typename Device>
|
|
148
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE DeviceWrapper<const Derived, Device> EigenBase<Derived>::device(
|
|
149
|
+
Device& device) const {
|
|
150
|
+
return DeviceWrapper<const Derived, Device>(derived(), device);
|
|
151
|
+
}
|
|
152
|
+
} // namespace Eigen
|
|
153
|
+
#endif
|
|
@@ -11,248 +11,209 @@
|
|
|
11
11
|
#ifndef EIGEN_DIAGONAL_H
|
|
12
12
|
#define EIGEN_DIAGONAL_H
|
|
13
13
|
|
|
14
|
+
// IWYU pragma: private
|
|
15
|
+
#include "./InternalHeaderCheck.h"
|
|
16
|
+
|
|
14
17
|
namespace Eigen {
|
|
15
18
|
|
|
16
19
|
/** \class Diagonal
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
20
|
+
* \ingroup Core_Module
|
|
21
|
+
*
|
|
22
|
+
* \brief Expression of a diagonal/subdiagonal/superdiagonal in a matrix
|
|
23
|
+
*
|
|
24
|
+
* \tparam MatrixType the type of the object in which we are taking a sub/main/super diagonal
|
|
25
|
+
* \tparam DiagIndex the index of the sub/super diagonal. The default is 0 and it means the main diagonal.
|
|
26
|
+
* A positive value means a superdiagonal, a negative value means a subdiagonal.
|
|
27
|
+
* You can also use DynamicIndex so the index can be set at runtime.
|
|
28
|
+
*
|
|
29
|
+
* The matrix is not required to be square.
|
|
30
|
+
*
|
|
31
|
+
* This class represents an expression of the main diagonal, or any sub/super diagonal
|
|
32
|
+
* of a square matrix. It is the return type of MatrixBase::diagonal() and MatrixBase::diagonal(Index) and most of the
|
|
33
|
+
* time this is the only way it is used.
|
|
34
|
+
*
|
|
35
|
+
* \sa MatrixBase::diagonal(), MatrixBase::diagonal(Index)
|
|
36
|
+
*/
|
|
34
37
|
|
|
35
38
|
namespace internal {
|
|
36
|
-
template<typename MatrixType, int DiagIndex>
|
|
37
|
-
struct traits<Diagonal<MatrixType,DiagIndex> >
|
|
38
|
-
: traits<MatrixType>
|
|
39
|
-
{
|
|
39
|
+
template <typename MatrixType, int DiagIndex>
|
|
40
|
+
struct traits<Diagonal<MatrixType, DiagIndex> > : traits<MatrixType> {
|
|
40
41
|
typedef typename ref_selector<MatrixType>::type MatrixTypeNested;
|
|
41
|
-
typedef
|
|
42
|
+
typedef std::remove_reference_t<MatrixTypeNested> MatrixTypeNested_;
|
|
42
43
|
typedef typename MatrixType::StorageKind StorageKind;
|
|
43
44
|
enum {
|
|
44
|
-
RowsAtCompileTime = (int(DiagIndex) == DynamicIndex || int(MatrixType::SizeAtCompileTime) == Dynamic)
|
|
45
|
-
|
|
46
|
-
|
|
45
|
+
RowsAtCompileTime = (int(DiagIndex) == DynamicIndex || int(MatrixType::SizeAtCompileTime) == Dynamic)
|
|
46
|
+
? Dynamic
|
|
47
|
+
: (plain_enum_min(MatrixType::RowsAtCompileTime - plain_enum_max(-DiagIndex, 0),
|
|
48
|
+
MatrixType::ColsAtCompileTime - plain_enum_max(DiagIndex, 0))),
|
|
47
49
|
ColsAtCompileTime = 1,
|
|
48
|
-
MaxRowsAtCompileTime =
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
50
|
+
MaxRowsAtCompileTime =
|
|
51
|
+
int(MatrixType::MaxSizeAtCompileTime) == Dynamic ? Dynamic
|
|
52
|
+
: DiagIndex == DynamicIndex
|
|
53
|
+
? min_size_prefer_fixed(MatrixType::MaxRowsAtCompileTime, MatrixType::MaxColsAtCompileTime)
|
|
54
|
+
: (plain_enum_min(MatrixType::MaxRowsAtCompileTime - plain_enum_max(-DiagIndex, 0),
|
|
55
|
+
MatrixType::MaxColsAtCompileTime - plain_enum_max(DiagIndex, 0))),
|
|
53
56
|
MaxColsAtCompileTime = 1,
|
|
54
57
|
MaskLvalueBit = is_lvalue<MatrixType>::value ? LvalueBit : 0,
|
|
55
|
-
Flags = (unsigned int)
|
|
58
|
+
Flags = (unsigned int)MatrixTypeNested_::Flags & (RowMajorBit | MaskLvalueBit | DirectAccessBit) &
|
|
59
|
+
~RowMajorBit, // FIXME DirectAccessBit should not be handled by expressions
|
|
56
60
|
MatrixTypeOuterStride = outer_stride_at_compile_time<MatrixType>::ret,
|
|
57
|
-
InnerStrideAtCompileTime = MatrixTypeOuterStride == Dynamic ? Dynamic : MatrixTypeOuterStride+1,
|
|
61
|
+
InnerStrideAtCompileTime = MatrixTypeOuterStride == Dynamic ? Dynamic : MatrixTypeOuterStride + 1,
|
|
58
62
|
OuterStrideAtCompileTime = 0
|
|
59
63
|
};
|
|
60
64
|
};
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
template<typename MatrixType, int
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
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
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
EIGEN_DEVICE_FUNC
|
|
148
|
-
inline const typename internal::remove_all<typename MatrixType::Nested>::type&
|
|
149
|
-
nestedExpression() const
|
|
150
|
-
{
|
|
151
|
-
return m_matrix;
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
EIGEN_DEVICE_FUNC
|
|
155
|
-
inline Index index() const
|
|
156
|
-
{
|
|
157
|
-
return m_index.value();
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
protected:
|
|
161
|
-
typename internal::ref_selector<MatrixType>::non_const_type m_matrix;
|
|
162
|
-
const internal::variable_if_dynamicindex<Index, DiagIndex> m_index;
|
|
163
|
-
|
|
164
|
-
private:
|
|
165
|
-
// some compilers may fail to optimize std::max etc in case of compile-time constants...
|
|
166
|
-
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR
|
|
167
|
-
Index absDiagIndex() const EIGEN_NOEXCEPT { return m_index.value()>0 ? m_index.value() : -m_index.value(); }
|
|
168
|
-
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR
|
|
169
|
-
Index rowOffset() const EIGEN_NOEXCEPT { return m_index.value()>0 ? 0 : -m_index.value(); }
|
|
170
|
-
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR
|
|
171
|
-
Index colOffset() const EIGEN_NOEXCEPT { return m_index.value()>0 ? m_index.value() : 0; }
|
|
172
|
-
// trigger a compile-time error if someone try to call packet
|
|
173
|
-
template<int LoadMode> typename MatrixType::PacketReturnType packet(Index) const;
|
|
174
|
-
template<int LoadMode> typename MatrixType::PacketReturnType packet(Index,Index) const;
|
|
65
|
+
} // namespace internal
|
|
66
|
+
|
|
67
|
+
template <typename MatrixType, int DiagIndex_>
|
|
68
|
+
class Diagonal : public internal::dense_xpr_base<Diagonal<MatrixType, DiagIndex_> >::type {
|
|
69
|
+
public:
|
|
70
|
+
enum { DiagIndex = DiagIndex_ };
|
|
71
|
+
typedef typename internal::dense_xpr_base<Diagonal>::type Base;
|
|
72
|
+
EIGEN_DENSE_PUBLIC_INTERFACE(Diagonal)
|
|
73
|
+
|
|
74
|
+
EIGEN_DEVICE_FUNC explicit inline Diagonal(MatrixType& matrix, Index a_index = DiagIndex)
|
|
75
|
+
: m_matrix(matrix), m_index(a_index) {
|
|
76
|
+
eigen_assert(a_index <= m_matrix.cols() && -a_index <= m_matrix.rows());
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
EIGEN_INHERIT_ASSIGNMENT_OPERATORS(Diagonal)
|
|
80
|
+
|
|
81
|
+
EIGEN_DEVICE_FUNC inline Index rows() const {
|
|
82
|
+
return m_index.value() < 0 ? numext::mini<Index>(m_matrix.cols(), m_matrix.rows() + m_index.value())
|
|
83
|
+
: numext::mini<Index>(m_matrix.rows(), m_matrix.cols() - m_index.value());
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
EIGEN_DEVICE_FUNC constexpr Index cols() const noexcept { return 1; }
|
|
87
|
+
|
|
88
|
+
EIGEN_DEVICE_FUNC constexpr Index innerStride() const noexcept { return m_matrix.outerStride() + 1; }
|
|
89
|
+
|
|
90
|
+
EIGEN_DEVICE_FUNC constexpr Index outerStride() const noexcept { return 0; }
|
|
91
|
+
|
|
92
|
+
typedef std::conditional_t<internal::is_lvalue<MatrixType>::value, Scalar, const Scalar> ScalarWithConstIfNotLvalue;
|
|
93
|
+
|
|
94
|
+
EIGEN_DEVICE_FUNC inline ScalarWithConstIfNotLvalue* data() { return &(m_matrix.coeffRef(rowOffset(), colOffset())); }
|
|
95
|
+
EIGEN_DEVICE_FUNC inline const Scalar* data() const { return &(m_matrix.coeffRef(rowOffset(), colOffset())); }
|
|
96
|
+
|
|
97
|
+
EIGEN_DEVICE_FUNC inline Scalar& coeffRef(Index row, Index) {
|
|
98
|
+
EIGEN_STATIC_ASSERT_LVALUE(MatrixType)
|
|
99
|
+
return m_matrix.coeffRef(row + rowOffset(), row + colOffset());
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
EIGEN_DEVICE_FUNC inline const Scalar& coeffRef(Index row, Index) const {
|
|
103
|
+
return m_matrix.coeffRef(row + rowOffset(), row + colOffset());
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
EIGEN_DEVICE_FUNC inline CoeffReturnType coeff(Index row, Index) const {
|
|
107
|
+
return m_matrix.coeff(row + rowOffset(), row + colOffset());
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
EIGEN_DEVICE_FUNC inline Scalar& coeffRef(Index idx) {
|
|
111
|
+
EIGEN_STATIC_ASSERT_LVALUE(MatrixType)
|
|
112
|
+
return m_matrix.coeffRef(idx + rowOffset(), idx + colOffset());
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
EIGEN_DEVICE_FUNC inline const Scalar& coeffRef(Index idx) const {
|
|
116
|
+
return m_matrix.coeffRef(idx + rowOffset(), idx + colOffset());
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
EIGEN_DEVICE_FUNC inline CoeffReturnType coeff(Index idx) const {
|
|
120
|
+
return m_matrix.coeff(idx + rowOffset(), idx + colOffset());
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
EIGEN_DEVICE_FUNC inline const internal::remove_all_t<typename MatrixType::Nested>& nestedExpression() const {
|
|
124
|
+
return m_matrix;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
EIGEN_DEVICE_FUNC inline Index index() const { return m_index.value(); }
|
|
128
|
+
|
|
129
|
+
protected:
|
|
130
|
+
typename internal::ref_selector<MatrixType>::non_const_type m_matrix;
|
|
131
|
+
const internal::variable_if_dynamicindex<Index, DiagIndex> m_index;
|
|
132
|
+
|
|
133
|
+
private:
|
|
134
|
+
// some compilers may fail to optimize std::max etc in case of compile-time constants...
|
|
135
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr Index absDiagIndex() const noexcept {
|
|
136
|
+
return m_index.value() > 0 ? m_index.value() : -m_index.value();
|
|
137
|
+
}
|
|
138
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr Index rowOffset() const noexcept {
|
|
139
|
+
return m_index.value() > 0 ? 0 : -m_index.value();
|
|
140
|
+
}
|
|
141
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr Index colOffset() const noexcept {
|
|
142
|
+
return m_index.value() > 0 ? m_index.value() : 0;
|
|
143
|
+
}
|
|
144
|
+
// trigger a compile-time error if someone try to call packet
|
|
145
|
+
template <int LoadMode>
|
|
146
|
+
typename MatrixType::PacketReturnType packet(Index) const;
|
|
147
|
+
template <int LoadMode>
|
|
148
|
+
typename MatrixType::PacketReturnType packet(Index, Index) const;
|
|
175
149
|
};
|
|
176
150
|
|
|
177
151
|
/** \returns an expression of the main diagonal of the matrix \c *this
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
template<typename Derived>
|
|
186
|
-
EIGEN_DEVICE_FUNC inline typename MatrixBase<Derived>::DiagonalReturnType
|
|
187
|
-
MatrixBase<Derived>::diagonal()
|
|
188
|
-
{
|
|
152
|
+
*
|
|
153
|
+
* \c *this is not required to be square.
|
|
154
|
+
*
|
|
155
|
+
* Example: \include MatrixBase_diagonal.cpp
|
|
156
|
+
* Output: \verbinclude MatrixBase_diagonal.out
|
|
157
|
+
*
|
|
158
|
+
* \sa class Diagonal */
|
|
159
|
+
template <typename Derived>
|
|
160
|
+
EIGEN_DEVICE_FUNC inline typename MatrixBase<Derived>::DiagonalReturnType MatrixBase<Derived>::diagonal() {
|
|
189
161
|
return DiagonalReturnType(derived());
|
|
190
162
|
}
|
|
191
163
|
|
|
192
164
|
/** This is the const version of diagonal(). */
|
|
193
|
-
template<typename Derived>
|
|
194
|
-
EIGEN_DEVICE_FUNC inline typename MatrixBase<Derived>::ConstDiagonalReturnType
|
|
195
|
-
|
|
196
|
-
{
|
|
165
|
+
template <typename Derived>
|
|
166
|
+
EIGEN_DEVICE_FUNC inline const typename MatrixBase<Derived>::ConstDiagonalReturnType MatrixBase<Derived>::diagonal()
|
|
167
|
+
const {
|
|
197
168
|
return ConstDiagonalReturnType(derived());
|
|
198
169
|
}
|
|
199
170
|
|
|
200
171
|
/** \returns an expression of the \a DiagIndex-th sub or super diagonal of the matrix \c *this
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
template<typename Derived>
|
|
212
|
-
EIGEN_DEVICE_FUNC inline
|
|
213
|
-
|
|
214
|
-
{
|
|
215
|
-
return DiagonalDynamicIndexReturnType(derived(), index);
|
|
172
|
+
*
|
|
173
|
+
* \c *this is not required to be square.
|
|
174
|
+
*
|
|
175
|
+
* The template parameter \a DiagIndex represent a super diagonal if \a DiagIndex > 0
|
|
176
|
+
* and a sub diagonal otherwise. \a DiagIndex == 0 is equivalent to the main diagonal.
|
|
177
|
+
*
|
|
178
|
+
* Example: \include MatrixBase_diagonal_int.cpp
|
|
179
|
+
* Output: \verbinclude MatrixBase_diagonal_int.out
|
|
180
|
+
*
|
|
181
|
+
* \sa MatrixBase::diagonal(), class Diagonal */
|
|
182
|
+
template <typename Derived>
|
|
183
|
+
EIGEN_DEVICE_FUNC inline Diagonal<Derived, DynamicIndex> MatrixBase<Derived>::diagonal(Index index) {
|
|
184
|
+
return Diagonal<Derived, DynamicIndex>(derived(), index);
|
|
216
185
|
}
|
|
217
186
|
|
|
218
187
|
/** This is the const version of diagonal(Index). */
|
|
219
|
-
template<typename Derived>
|
|
220
|
-
EIGEN_DEVICE_FUNC inline
|
|
221
|
-
|
|
222
|
-
{
|
|
223
|
-
return ConstDiagonalDynamicIndexReturnType(derived(), index);
|
|
188
|
+
template <typename Derived>
|
|
189
|
+
EIGEN_DEVICE_FUNC inline const Diagonal<const Derived, DynamicIndex> MatrixBase<Derived>::diagonal(Index index) const {
|
|
190
|
+
return Diagonal<const Derived, DynamicIndex>(derived(), index);
|
|
224
191
|
}
|
|
225
192
|
|
|
226
193
|
/** \returns an expression of the \a DiagIndex-th sub or super diagonal of the matrix \c *this
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
template<typename Derived>
|
|
238
|
-
template<int Index_>
|
|
239
|
-
EIGEN_DEVICE_FUNC
|
|
240
|
-
|
|
241
|
-
MatrixBase<Derived>::diagonal()
|
|
242
|
-
{
|
|
243
|
-
return typename DiagonalIndexReturnType<Index_>::Type(derived());
|
|
194
|
+
*
|
|
195
|
+
* \c *this is not required to be square.
|
|
196
|
+
*
|
|
197
|
+
* The template parameter \a DiagIndex represent a super diagonal if \a DiagIndex > 0
|
|
198
|
+
* and a sub diagonal otherwise. \a DiagIndex == 0 is equivalent to the main diagonal.
|
|
199
|
+
*
|
|
200
|
+
* Example: \include MatrixBase_diagonal_template_int.cpp
|
|
201
|
+
* Output: \verbinclude MatrixBase_diagonal_template_int.out
|
|
202
|
+
*
|
|
203
|
+
* \sa MatrixBase::diagonal(), class Diagonal */
|
|
204
|
+
template <typename Derived>
|
|
205
|
+
template <int Index_>
|
|
206
|
+
EIGEN_DEVICE_FUNC inline Diagonal<Derived, Index_> MatrixBase<Derived>::diagonal() {
|
|
207
|
+
return Diagonal<Derived, Index_>(derived());
|
|
244
208
|
}
|
|
245
209
|
|
|
246
210
|
/** This is the const version of diagonal<int>(). */
|
|
247
|
-
template<typename Derived>
|
|
248
|
-
template<int Index_>
|
|
249
|
-
EIGEN_DEVICE_FUNC
|
|
250
|
-
|
|
251
|
-
MatrixBase<Derived>::diagonal() const
|
|
252
|
-
{
|
|
253
|
-
return typename ConstDiagonalIndexReturnType<Index_>::Type(derived());
|
|
211
|
+
template <typename Derived>
|
|
212
|
+
template <int Index_>
|
|
213
|
+
EIGEN_DEVICE_FUNC inline const Diagonal<const Derived, Index_> MatrixBase<Derived>::diagonal() const {
|
|
214
|
+
return Diagonal<const Derived, Index_>(derived());
|
|
254
215
|
}
|
|
255
216
|
|
|
256
|
-
}
|
|
217
|
+
} // end namespace Eigen
|
|
257
218
|
|
|
258
|
-
#endif
|
|
219
|
+
#endif // EIGEN_DIAGONAL_H
|