@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
|
@@ -10,130 +10,158 @@
|
|
|
10
10
|
#ifndef EIGEN_INDEXED_VIEW_H
|
|
11
11
|
#define EIGEN_INDEXED_VIEW_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 XprType, typename RowIndices, typename ColIndices>
|
|
18
|
-
struct traits<IndexedView<XprType, RowIndices, ColIndices>
|
|
19
|
-
: traits<XprType>
|
|
20
|
-
{
|
|
20
|
+
template <typename XprType, typename RowIndices, typename ColIndices>
|
|
21
|
+
struct traits<IndexedView<XprType, RowIndices, ColIndices>> : traits<XprType> {
|
|
21
22
|
enum {
|
|
22
|
-
RowsAtCompileTime = int(
|
|
23
|
-
ColsAtCompileTime = int(
|
|
24
|
-
MaxRowsAtCompileTime = RowsAtCompileTime
|
|
25
|
-
MaxColsAtCompileTime = ColsAtCompileTime
|
|
26
|
-
|
|
27
|
-
XprTypeIsRowMajor = (int(traits<XprType>::Flags)&RowMajorBit) != 0,
|
|
28
|
-
IsRowMajor = (MaxRowsAtCompileTime==1&&MaxColsAtCompileTime!=1)
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
RowIncr = int(
|
|
33
|
-
ColIncr = int(
|
|
23
|
+
RowsAtCompileTime = int(IndexedViewHelper<RowIndices>::SizeAtCompileTime),
|
|
24
|
+
ColsAtCompileTime = int(IndexedViewHelper<ColIndices>::SizeAtCompileTime),
|
|
25
|
+
MaxRowsAtCompileTime = RowsAtCompileTime,
|
|
26
|
+
MaxColsAtCompileTime = ColsAtCompileTime,
|
|
27
|
+
|
|
28
|
+
XprTypeIsRowMajor = (int(traits<XprType>::Flags) & RowMajorBit) != 0,
|
|
29
|
+
IsRowMajor = (MaxRowsAtCompileTime == 1 && MaxColsAtCompileTime != 1) ? 1
|
|
30
|
+
: (MaxColsAtCompileTime == 1 && MaxRowsAtCompileTime != 1) ? 0
|
|
31
|
+
: XprTypeIsRowMajor,
|
|
32
|
+
|
|
33
|
+
RowIncr = int(IndexedViewHelper<RowIndices>::IncrAtCompileTime),
|
|
34
|
+
ColIncr = int(IndexedViewHelper<ColIndices>::IncrAtCompileTime),
|
|
34
35
|
InnerIncr = IsRowMajor ? ColIncr : RowIncr,
|
|
35
36
|
OuterIncr = IsRowMajor ? RowIncr : ColIncr,
|
|
36
37
|
|
|
37
38
|
HasSameStorageOrderAsXprType = (IsRowMajor == XprTypeIsRowMajor),
|
|
38
|
-
XprInnerStride = HasSameStorageOrderAsXprType ? int(inner_stride_at_compile_time<XprType>::ret)
|
|
39
|
-
|
|
39
|
+
XprInnerStride = HasSameStorageOrderAsXprType ? int(inner_stride_at_compile_time<XprType>::ret)
|
|
40
|
+
: int(outer_stride_at_compile_time<XprType>::ret),
|
|
41
|
+
XprOuterstride = HasSameStorageOrderAsXprType ? int(outer_stride_at_compile_time<XprType>::ret)
|
|
42
|
+
: int(inner_stride_at_compile_time<XprType>::ret),
|
|
40
43
|
|
|
41
44
|
InnerSize = XprTypeIsRowMajor ? ColsAtCompileTime : RowsAtCompileTime,
|
|
42
|
-
IsBlockAlike = InnerIncr==1 && OuterIncr==1,
|
|
43
|
-
IsInnerPannel = HasSameStorageOrderAsXprType &&
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
45
|
+
IsBlockAlike = InnerIncr == 1 && OuterIncr == 1,
|
|
46
|
+
IsInnerPannel = HasSameStorageOrderAsXprType &&
|
|
47
|
+
is_same<AllRange<InnerSize>, std::conditional_t<XprTypeIsRowMajor, ColIndices, RowIndices>>::value,
|
|
48
|
+
|
|
49
|
+
InnerStrideAtCompileTime =
|
|
50
|
+
InnerIncr < 0 || InnerIncr == DynamicIndex || XprInnerStride == Dynamic || InnerIncr == Undefined
|
|
51
|
+
? Dynamic
|
|
52
|
+
: XprInnerStride * InnerIncr,
|
|
53
|
+
OuterStrideAtCompileTime =
|
|
54
|
+
OuterIncr < 0 || OuterIncr == DynamicIndex || XprOuterstride == Dynamic || OuterIncr == Undefined
|
|
55
|
+
? Dynamic
|
|
56
|
+
: XprOuterstride * OuterIncr,
|
|
57
|
+
|
|
58
|
+
ReturnAsScalar = is_single_range<RowIndices>::value && is_single_range<ColIndices>::value,
|
|
49
59
|
ReturnAsBlock = (!ReturnAsScalar) && IsBlockAlike,
|
|
50
60
|
ReturnAsIndexedView = (!ReturnAsScalar) && (!ReturnAsBlock),
|
|
51
61
|
|
|
52
62
|
// FIXME we deal with compile-time strides if and only if we have DirectAccessBit flag,
|
|
53
63
|
// but this is too strict regarding negative strides...
|
|
54
|
-
DirectAccessMask = (int(InnerIncr)!=
|
|
64
|
+
DirectAccessMask = (int(InnerIncr) != Undefined && int(OuterIncr) != Undefined && InnerIncr >= 0 && OuterIncr >= 0)
|
|
65
|
+
? DirectAccessBit
|
|
66
|
+
: 0,
|
|
55
67
|
FlagsRowMajorBit = IsRowMajor ? RowMajorBit : 0,
|
|
56
68
|
FlagsLvalueBit = is_lvalue<XprType>::value ? LvalueBit : 0,
|
|
57
69
|
FlagsLinearAccessBit = (RowsAtCompileTime == 1 || ColsAtCompileTime == 1) ? LinearAccessBit : 0,
|
|
58
|
-
Flags = (traits<XprType>::Flags & (HereditaryBits | DirectAccessMask
|
|
70
|
+
Flags = (traits<XprType>::Flags & (HereditaryBits | DirectAccessMask)) | FlagsLvalueBit | FlagsRowMajorBit |
|
|
71
|
+
FlagsLinearAccessBit
|
|
59
72
|
};
|
|
60
73
|
|
|
61
|
-
typedef Block<XprType,RowsAtCompileTime,ColsAtCompileTime,IsInnerPannel> BlockType;
|
|
74
|
+
typedef Block<XprType, RowsAtCompileTime, ColsAtCompileTime, IsInnerPannel> BlockType;
|
|
62
75
|
};
|
|
63
76
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
template<typename XprType, typename RowIndices, typename ColIndices, typename StorageKind>
|
|
77
|
+
template <typename XprType, typename RowIndices, typename ColIndices, typename StorageKind, bool DirectAccess>
|
|
67
78
|
class IndexedViewImpl;
|
|
68
79
|
|
|
80
|
+
} // namespace internal
|
|
69
81
|
|
|
70
82
|
/** \class IndexedView
|
|
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
|
-
template<typename XprType, typename RowIndices, typename ColIndices>
|
|
109
|
-
class IndexedView
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
83
|
+
* \ingroup Core_Module
|
|
84
|
+
*
|
|
85
|
+
* \brief Expression of a non-sequential sub-matrix defined by arbitrary sequences of row and column indices
|
|
86
|
+
*
|
|
87
|
+
* \tparam XprType the type of the expression in which we are taking the intersections of sub-rows and sub-columns
|
|
88
|
+
* \tparam RowIndices the type of the object defining the sequence of row indices
|
|
89
|
+
* \tparam ColIndices the type of the object defining the sequence of column indices
|
|
90
|
+
*
|
|
91
|
+
* This class represents an expression of a sub-matrix (or sub-vector) defined as the intersection
|
|
92
|
+
* of sub-sets of rows and columns, that are themself defined by generic sequences of row indices \f$
|
|
93
|
+
* \{r_0,r_1,..r_{m-1}\} \f$ and column indices \f$ \{c_0,c_1,..c_{n-1} \}\f$. Let \f$ A \f$ be the nested matrix, then
|
|
94
|
+
* the resulting matrix \f$ B \f$ has \c m rows and \c n columns, and its entries are given by: \f$ B(i,j) = A(r_i,c_j)
|
|
95
|
+
* \f$.
|
|
96
|
+
*
|
|
97
|
+
* The \c RowIndices and \c ColIndices types must be compatible with the following API:
|
|
98
|
+
* \code
|
|
99
|
+
* <integral type> operator[](Index) const;
|
|
100
|
+
* Index size() const;
|
|
101
|
+
* \endcode
|
|
102
|
+
*
|
|
103
|
+
* Typical supported types thus include:
|
|
104
|
+
* - std::vector<int>
|
|
105
|
+
* - std::valarray<int>
|
|
106
|
+
* - std::array<int>
|
|
107
|
+
* - Eigen::ArrayXi
|
|
108
|
+
* - decltype(ArrayXi::LinSpaced(...))
|
|
109
|
+
* - Any view/expressions of the previous types
|
|
110
|
+
* - Eigen::ArithmeticSequence
|
|
111
|
+
* - Eigen::internal::AllRange (helper for Eigen::placeholders::all)
|
|
112
|
+
* - Eigen::internal::SingleRange (helper for single index)
|
|
113
|
+
* - etc.
|
|
114
|
+
*
|
|
115
|
+
* In typical usages of %Eigen, this class should never be used directly. It is the return type of
|
|
116
|
+
* DenseBase::operator()(const RowIndices&, const ColIndices&).
|
|
117
|
+
*
|
|
118
|
+
* \sa class Block
|
|
119
|
+
*/
|
|
120
|
+
template <typename XprType, typename RowIndices, typename ColIndices>
|
|
121
|
+
class IndexedView
|
|
122
|
+
: public internal::IndexedViewImpl<XprType, RowIndices, ColIndices, typename internal::traits<XprType>::StorageKind,
|
|
123
|
+
(internal::traits<IndexedView<XprType, RowIndices, ColIndices>>::Flags &
|
|
124
|
+
DirectAccessBit) != 0> {
|
|
125
|
+
public:
|
|
126
|
+
typedef typename internal::IndexedViewImpl<
|
|
127
|
+
XprType, RowIndices, ColIndices, typename internal::traits<XprType>::StorageKind,
|
|
128
|
+
(internal::traits<IndexedView<XprType, RowIndices, ColIndices>>::Flags & DirectAccessBit) != 0>
|
|
129
|
+
Base;
|
|
113
130
|
EIGEN_GENERIC_PUBLIC_INTERFACE(IndexedView)
|
|
114
131
|
EIGEN_INHERIT_ASSIGNMENT_OPERATORS(IndexedView)
|
|
115
132
|
|
|
133
|
+
template <typename T0, typename T1>
|
|
134
|
+
IndexedView(XprType& xpr, const T0& rowIndices, const T1& colIndices) : Base(xpr, rowIndices, colIndices) {}
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
namespace internal {
|
|
138
|
+
|
|
139
|
+
// Generic API dispatcher
|
|
140
|
+
template <typename XprType, typename RowIndices, typename ColIndices, typename StorageKind, bool DirectAccess>
|
|
141
|
+
class IndexedViewImpl : public internal::generic_xpr_base<IndexedView<XprType, RowIndices, ColIndices>>::type {
|
|
142
|
+
public:
|
|
143
|
+
typedef typename internal::generic_xpr_base<IndexedView<XprType, RowIndices, ColIndices>>::type Base;
|
|
116
144
|
typedef typename internal::ref_selector<XprType>::non_const_type MatrixTypeNested;
|
|
117
|
-
typedef
|
|
145
|
+
typedef internal::remove_all_t<XprType> NestedExpression;
|
|
146
|
+
typedef typename XprType::Scalar Scalar;
|
|
147
|
+
|
|
148
|
+
EIGEN_INHERIT_ASSIGNMENT_OPERATORS(IndexedViewImpl)
|
|
118
149
|
|
|
119
|
-
template<typename T0, typename T1>
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
{}
|
|
150
|
+
template <typename T0, typename T1>
|
|
151
|
+
IndexedViewImpl(XprType& xpr, const T0& rowIndices, const T1& colIndices)
|
|
152
|
+
: m_xpr(xpr), m_rowIndices(rowIndices), m_colIndices(colIndices) {}
|
|
123
153
|
|
|
124
154
|
/** \returns number of rows */
|
|
125
|
-
Index rows() const { return
|
|
155
|
+
Index rows() const { return IndexedViewHelper<RowIndices>::size(m_rowIndices); }
|
|
126
156
|
|
|
127
157
|
/** \returns number of columns */
|
|
128
|
-
Index cols() const { return
|
|
158
|
+
Index cols() const { return IndexedViewHelper<ColIndices>::size(m_colIndices); }
|
|
129
159
|
|
|
130
160
|
/** \returns the nested expression */
|
|
131
|
-
const
|
|
132
|
-
nestedExpression() const { return m_xpr; }
|
|
161
|
+
const internal::remove_all_t<XprType>& nestedExpression() const { return m_xpr; }
|
|
133
162
|
|
|
134
163
|
/** \returns the nested expression */
|
|
135
|
-
|
|
136
|
-
nestedExpression() { return m_xpr; }
|
|
164
|
+
std::remove_reference_t<XprType>& nestedExpression() { return m_xpr; }
|
|
137
165
|
|
|
138
166
|
/** \returns a const reference to the object storing/generating the row indices */
|
|
139
167
|
const RowIndices& rowIndices() const { return m_rowIndices; }
|
|
@@ -141,97 +169,153 @@ public:
|
|
|
141
169
|
/** \returns a const reference to the object storing/generating the column indices */
|
|
142
170
|
const ColIndices& colIndices() const { return m_colIndices; }
|
|
143
171
|
|
|
144
|
-
|
|
172
|
+
constexpr Scalar& coeffRef(Index rowId, Index colId) {
|
|
173
|
+
return nestedExpression().coeffRef(m_rowIndices[rowId], m_colIndices[colId]);
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
constexpr const Scalar& coeffRef(Index rowId, Index colId) const {
|
|
177
|
+
return nestedExpression().coeffRef(m_rowIndices[rowId], m_colIndices[colId]);
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
protected:
|
|
145
181
|
MatrixTypeNested m_xpr;
|
|
146
182
|
RowIndices m_rowIndices;
|
|
147
183
|
ColIndices m_colIndices;
|
|
148
184
|
};
|
|
149
185
|
|
|
186
|
+
template <typename XprType, typename RowIndices, typename ColIndices, typename StorageKind>
|
|
187
|
+
class IndexedViewImpl<XprType, RowIndices, ColIndices, StorageKind, true>
|
|
188
|
+
: public IndexedViewImpl<XprType, RowIndices, ColIndices, StorageKind, false> {
|
|
189
|
+
public:
|
|
190
|
+
using Base = internal::IndexedViewImpl<XprType, RowIndices, ColIndices,
|
|
191
|
+
typename internal::traits<XprType>::StorageKind, false>;
|
|
192
|
+
using Derived = IndexedView<XprType, RowIndices, ColIndices>;
|
|
150
193
|
|
|
151
|
-
|
|
152
|
-
template<typename XprType, typename RowIndices, typename ColIndices, typename StorageKind>
|
|
153
|
-
class IndexedViewImpl
|
|
154
|
-
: public internal::generic_xpr_base<IndexedView<XprType, RowIndices, ColIndices> >::type
|
|
155
|
-
{
|
|
156
|
-
public:
|
|
157
|
-
typedef typename internal::generic_xpr_base<IndexedView<XprType, RowIndices, ColIndices> >::type Base;
|
|
158
|
-
};
|
|
194
|
+
EIGEN_INHERIT_ASSIGNMENT_OPERATORS(IndexedViewImpl)
|
|
159
195
|
|
|
160
|
-
|
|
196
|
+
template <typename T0, typename T1>
|
|
197
|
+
IndexedViewImpl(XprType& xpr, const T0& rowIndices, const T1& colIndices) : Base(xpr, rowIndices, colIndices) {}
|
|
161
198
|
|
|
199
|
+
Index rowIncrement() const {
|
|
200
|
+
if (traits<Derived>::RowIncr != DynamicIndex && traits<Derived>::RowIncr != Undefined) {
|
|
201
|
+
return traits<Derived>::RowIncr;
|
|
202
|
+
}
|
|
203
|
+
return IndexedViewHelper<RowIndices>::incr(this->rowIndices());
|
|
204
|
+
}
|
|
205
|
+
Index colIncrement() const {
|
|
206
|
+
if (traits<Derived>::ColIncr != DynamicIndex && traits<Derived>::ColIncr != Undefined) {
|
|
207
|
+
return traits<Derived>::ColIncr;
|
|
208
|
+
}
|
|
209
|
+
return IndexedViewHelper<ColIndices>::incr(this->colIndices());
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
Index innerIncrement() const { return traits<Derived>::IsRowMajor ? colIncrement() : rowIncrement(); }
|
|
213
|
+
|
|
214
|
+
Index outerIncrement() const { return traits<Derived>::IsRowMajor ? rowIncrement() : colIncrement(); }
|
|
215
|
+
|
|
216
|
+
std::decay_t<typename XprType::Scalar>* data() {
|
|
217
|
+
Index row_offset = this->rowIndices()[0] * this->nestedExpression().rowStride();
|
|
218
|
+
Index col_offset = this->colIndices()[0] * this->nestedExpression().colStride();
|
|
219
|
+
return this->nestedExpression().data() + row_offset + col_offset;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
const std::decay_t<typename XprType::Scalar>* data() const {
|
|
223
|
+
Index row_offset = this->rowIndices()[0] * this->nestedExpression().rowStride();
|
|
224
|
+
Index col_offset = this->colIndices()[0] * this->nestedExpression().colStride();
|
|
225
|
+
return this->nestedExpression().data() + row_offset + col_offset;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
EIGEN_DEVICE_FUNC constexpr Index innerStride() const noexcept {
|
|
229
|
+
if (traits<Derived>::InnerStrideAtCompileTime != Dynamic) {
|
|
230
|
+
return traits<Derived>::InnerStrideAtCompileTime;
|
|
231
|
+
}
|
|
232
|
+
return innerIncrement() * this->nestedExpression().innerStride();
|
|
233
|
+
}
|
|
162
234
|
|
|
163
|
-
|
|
235
|
+
EIGEN_DEVICE_FUNC constexpr Index outerStride() const noexcept {
|
|
236
|
+
if (traits<Derived>::OuterStrideAtCompileTime != Dynamic) {
|
|
237
|
+
return traits<Derived>::OuterStrideAtCompileTime;
|
|
238
|
+
}
|
|
239
|
+
return outerIncrement() * this->nestedExpression().outerStride();
|
|
240
|
+
}
|
|
241
|
+
};
|
|
242
|
+
|
|
243
|
+
template <typename ArgType, typename RowIndices, typename ColIndices>
|
|
164
244
|
struct unary_evaluator<IndexedView<ArgType, RowIndices, ColIndices>, IndexBased>
|
|
165
|
-
|
|
166
|
-
{
|
|
245
|
+
: evaluator_base<IndexedView<ArgType, RowIndices, ColIndices>> {
|
|
167
246
|
typedef IndexedView<ArgType, RowIndices, ColIndices> XprType;
|
|
168
247
|
|
|
169
248
|
enum {
|
|
170
249
|
CoeffReadCost = evaluator<ArgType>::CoeffReadCost /* TODO + cost of row/col index */,
|
|
171
250
|
|
|
172
|
-
FlagsLinearAccessBit =
|
|
251
|
+
FlagsLinearAccessBit =
|
|
252
|
+
(traits<XprType>::RowsAtCompileTime == 1 || traits<XprType>::ColsAtCompileTime == 1) ? LinearAccessBit : 0,
|
|
173
253
|
|
|
174
|
-
FlagsRowMajorBit = traits<XprType>::FlagsRowMajorBit,
|
|
254
|
+
FlagsRowMajorBit = traits<XprType>::FlagsRowMajorBit,
|
|
175
255
|
|
|
176
|
-
Flags = (evaluator<ArgType>::Flags & (HereditaryBits & ~RowMajorBit /*| LinearAccessBit | DirectAccessBit*/)) |
|
|
256
|
+
Flags = (evaluator<ArgType>::Flags & (HereditaryBits & ~RowMajorBit /*| LinearAccessBit | DirectAccessBit*/)) |
|
|
257
|
+
FlagsLinearAccessBit | FlagsRowMajorBit,
|
|
177
258
|
|
|
178
259
|
Alignment = 0
|
|
179
260
|
};
|
|
180
261
|
|
|
181
|
-
EIGEN_DEVICE_FUNC explicit unary_evaluator(const XprType& xpr) : m_argImpl(xpr.nestedExpression()), m_xpr(xpr)
|
|
182
|
-
{
|
|
262
|
+
EIGEN_DEVICE_FUNC explicit unary_evaluator(const XprType& xpr) : m_argImpl(xpr.nestedExpression()), m_xpr(xpr) {
|
|
183
263
|
EIGEN_INTERNAL_CHECK_COST_VALUE(CoeffReadCost);
|
|
184
264
|
}
|
|
185
265
|
|
|
186
266
|
typedef typename XprType::Scalar Scalar;
|
|
187
267
|
typedef typename XprType::CoeffReturnType CoeffReturnType;
|
|
188
268
|
|
|
189
|
-
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
|
190
|
-
|
|
191
|
-
|
|
269
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(Index row, Index col) const {
|
|
270
|
+
eigen_assert(m_xpr.rowIndices()[row] >= 0 && m_xpr.rowIndices()[row] < m_xpr.nestedExpression().rows() &&
|
|
271
|
+
m_xpr.colIndices()[col] >= 0 && m_xpr.colIndices()[col] < m_xpr.nestedExpression().cols());
|
|
192
272
|
return m_argImpl.coeff(m_xpr.rowIndices()[row], m_xpr.colIndices()[col]);
|
|
193
273
|
}
|
|
194
274
|
|
|
195
|
-
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
|
196
|
-
|
|
197
|
-
|
|
275
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar& coeffRef(Index row, Index col) {
|
|
276
|
+
eigen_assert(m_xpr.rowIndices()[row] >= 0 && m_xpr.rowIndices()[row] < m_xpr.nestedExpression().rows() &&
|
|
277
|
+
m_xpr.colIndices()[col] >= 0 && m_xpr.colIndices()[col] < m_xpr.nestedExpression().cols());
|
|
198
278
|
return m_argImpl.coeffRef(m_xpr.rowIndices()[row], m_xpr.colIndices()[col]);
|
|
199
279
|
}
|
|
200
280
|
|
|
201
|
-
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
|
202
|
-
Scalar& coeffRef(Index index)
|
|
203
|
-
{
|
|
281
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar& coeffRef(Index index) {
|
|
204
282
|
EIGEN_STATIC_ASSERT_LVALUE(XprType)
|
|
205
283
|
Index row = XprType::RowsAtCompileTime == 1 ? 0 : index;
|
|
206
284
|
Index col = XprType::RowsAtCompileTime == 1 ? index : 0;
|
|
207
|
-
|
|
285
|
+
eigen_assert(m_xpr.rowIndices()[row] >= 0 && m_xpr.rowIndices()[row] < m_xpr.nestedExpression().rows() &&
|
|
286
|
+
m_xpr.colIndices()[col] >= 0 && m_xpr.colIndices()[col] < m_xpr.nestedExpression().cols());
|
|
287
|
+
return m_argImpl.coeffRef(m_xpr.rowIndices()[row], m_xpr.colIndices()[col]);
|
|
208
288
|
}
|
|
209
289
|
|
|
210
|
-
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
|
211
|
-
const Scalar& coeffRef(Index index) const
|
|
212
|
-
{
|
|
290
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar& coeffRef(Index index) const {
|
|
213
291
|
Index row = XprType::RowsAtCompileTime == 1 ? 0 : index;
|
|
214
292
|
Index col = XprType::RowsAtCompileTime == 1 ? index : 0;
|
|
215
|
-
|
|
293
|
+
eigen_assert(m_xpr.rowIndices()[row] >= 0 && m_xpr.rowIndices()[row] < m_xpr.nestedExpression().rows() &&
|
|
294
|
+
m_xpr.colIndices()[col] >= 0 && m_xpr.colIndices()[col] < m_xpr.nestedExpression().cols());
|
|
295
|
+
return m_argImpl.coeffRef(m_xpr.rowIndices()[row], m_xpr.colIndices()[col]);
|
|
216
296
|
}
|
|
217
297
|
|
|
218
|
-
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
|
219
|
-
const CoeffReturnType coeff(Index index) const
|
|
220
|
-
{
|
|
298
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const CoeffReturnType coeff(Index index) const {
|
|
221
299
|
Index row = XprType::RowsAtCompileTime == 1 ? 0 : index;
|
|
222
300
|
Index col = XprType::RowsAtCompileTime == 1 ? index : 0;
|
|
223
|
-
|
|
301
|
+
eigen_assert(m_xpr.rowIndices()[row] >= 0 && m_xpr.rowIndices()[row] < m_xpr.nestedExpression().rows() &&
|
|
302
|
+
m_xpr.colIndices()[col] >= 0 && m_xpr.colIndices()[col] < m_xpr.nestedExpression().cols());
|
|
303
|
+
return m_argImpl.coeff(m_xpr.rowIndices()[row], m_xpr.colIndices()[col]);
|
|
224
304
|
}
|
|
225
305
|
|
|
226
|
-
protected:
|
|
227
|
-
|
|
306
|
+
protected:
|
|
228
307
|
evaluator<ArgType> m_argImpl;
|
|
229
308
|
const XprType& m_xpr;
|
|
309
|
+
};
|
|
230
310
|
|
|
311
|
+
// Catch assignments to an IndexedView.
|
|
312
|
+
template <typename ArgType, typename RowIndices, typename ColIndices>
|
|
313
|
+
struct evaluator_assume_aliasing<IndexedView<ArgType, RowIndices, ColIndices>> {
|
|
314
|
+
static const bool value = true;
|
|
231
315
|
};
|
|
232
316
|
|
|
233
|
-
}
|
|
317
|
+
} // end namespace internal
|
|
234
318
|
|
|
235
|
-
}
|
|
319
|
+
} // end namespace Eigen
|
|
236
320
|
|
|
237
|
-
#endif
|
|
321
|
+
#endif // EIGEN_INDEXED_VIEW_H
|