@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
|
@@ -11,438 +11,419 @@
|
|
|
11
11
|
#ifndef EIGEN_BLOCK_H
|
|
12
12
|
#define EIGEN_BLOCK_H
|
|
13
13
|
|
|
14
|
+
// IWYU pragma: private
|
|
15
|
+
#include "./InternalHeaderCheck.h"
|
|
16
|
+
|
|
14
17
|
namespace Eigen {
|
|
15
18
|
|
|
16
19
|
namespace internal {
|
|
17
|
-
template<typename
|
|
18
|
-
struct traits<Block<
|
|
19
|
-
|
|
20
|
-
typedef typename traits<
|
|
21
|
-
typedef typename traits<
|
|
22
|
-
typedef typename
|
|
23
|
-
typedef
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
MatrixCols = traits<XprType>::ColsAtCompileTime,
|
|
20
|
+
template <typename XprType_, int BlockRows, int BlockCols, bool InnerPanel_>
|
|
21
|
+
struct traits<Block<XprType_, BlockRows, BlockCols, InnerPanel_>> : traits<XprType_> {
|
|
22
|
+
typedef typename traits<XprType_>::Scalar Scalar;
|
|
23
|
+
typedef typename traits<XprType_>::StorageKind StorageKind;
|
|
24
|
+
typedef typename traits<XprType_>::XprKind XprKind;
|
|
25
|
+
typedef typename ref_selector<XprType_>::type XprTypeNested;
|
|
26
|
+
typedef std::remove_reference_t<XprTypeNested> XprTypeNested_;
|
|
27
|
+
enum {
|
|
28
|
+
MatrixRows = traits<XprType_>::RowsAtCompileTime,
|
|
29
|
+
MatrixCols = traits<XprType_>::ColsAtCompileTime,
|
|
28
30
|
RowsAtCompileTime = MatrixRows == 0 ? 0 : BlockRows,
|
|
29
31
|
ColsAtCompileTime = MatrixCols == 0 ? 0 : BlockCols,
|
|
30
|
-
MaxRowsAtCompileTime = BlockRows==0
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
MaxColsAtCompileTime = BlockCols==0
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
XprTypeIsRowMajor = (int(traits<
|
|
38
|
-
IsRowMajor = (MaxRowsAtCompileTime==1&&MaxColsAtCompileTime!=1)
|
|
39
|
-
|
|
40
|
-
|
|
32
|
+
MaxRowsAtCompileTime = BlockRows == 0 ? 0
|
|
33
|
+
: RowsAtCompileTime != Dynamic ? int(RowsAtCompileTime)
|
|
34
|
+
: int(traits<XprType_>::MaxRowsAtCompileTime),
|
|
35
|
+
MaxColsAtCompileTime = BlockCols == 0 ? 0
|
|
36
|
+
: ColsAtCompileTime != Dynamic ? int(ColsAtCompileTime)
|
|
37
|
+
: int(traits<XprType_>::MaxColsAtCompileTime),
|
|
38
|
+
|
|
39
|
+
XprTypeIsRowMajor = (int(traits<XprType_>::Flags) & RowMajorBit) != 0,
|
|
40
|
+
IsRowMajor = (MaxRowsAtCompileTime == 1 && MaxColsAtCompileTime != 1) ? 1
|
|
41
|
+
: (MaxColsAtCompileTime == 1 && MaxRowsAtCompileTime != 1) ? 0
|
|
42
|
+
: XprTypeIsRowMajor,
|
|
41
43
|
HasSameStorageOrderAsXprType = (IsRowMajor == XprTypeIsRowMajor),
|
|
42
44
|
InnerSize = IsRowMajor ? int(ColsAtCompileTime) : int(RowsAtCompileTime),
|
|
43
|
-
InnerStrideAtCompileTime = HasSameStorageOrderAsXprType
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
? int(outer_stride_at_compile_time<XprType>::ret)
|
|
48
|
-
: int(inner_stride_at_compile_time<XprType>::ret),
|
|
45
|
+
InnerStrideAtCompileTime = HasSameStorageOrderAsXprType ? int(inner_stride_at_compile_time<XprType_>::ret)
|
|
46
|
+
: int(outer_stride_at_compile_time<XprType_>::ret),
|
|
47
|
+
OuterStrideAtCompileTime = HasSameStorageOrderAsXprType ? int(outer_stride_at_compile_time<XprType_>::ret)
|
|
48
|
+
: int(inner_stride_at_compile_time<XprType_>::ret),
|
|
49
49
|
|
|
50
50
|
// FIXME, this traits is rather specialized for dense object and it needs to be cleaned further
|
|
51
|
-
FlagsLvalueBit = is_lvalue<
|
|
51
|
+
FlagsLvalueBit = is_lvalue<XprType_>::value ? LvalueBit : 0,
|
|
52
52
|
FlagsRowMajorBit = IsRowMajor ? RowMajorBit : 0,
|
|
53
|
-
Flags = (traits<
|
|
53
|
+
Flags = (traits<XprType_>::Flags & (DirectAccessBit | (InnerPanel_ ? CompressedAccessBit : 0))) | FlagsLvalueBit |
|
|
54
|
+
FlagsRowMajorBit,
|
|
54
55
|
// FIXME DirectAccessBit should not be handled by expressions
|
|
55
56
|
//
|
|
56
57
|
// Alignment is needed by MapBase's assertions
|
|
57
|
-
// We can sefely set it to false here. Internal alignment errors will be detected by an eigen_internal_assert in the
|
|
58
|
-
|
|
58
|
+
// We can sefely set it to false here. Internal alignment errors will be detected by an eigen_internal_assert in the
|
|
59
|
+
// respective evaluator
|
|
60
|
+
Alignment = 0,
|
|
61
|
+
InnerPanel = InnerPanel_ ? 1 : 0
|
|
59
62
|
};
|
|
60
63
|
};
|
|
61
64
|
|
|
62
|
-
template<typename XprType, int BlockRows=Dynamic, int BlockCols=Dynamic, bool InnerPanel = false,
|
|
63
|
-
|
|
65
|
+
template <typename XprType, int BlockRows = Dynamic, int BlockCols = Dynamic, bool InnerPanel = false,
|
|
66
|
+
bool HasDirectAccess = internal::has_direct_access<XprType>::ret>
|
|
67
|
+
class BlockImpl_dense;
|
|
64
68
|
|
|
65
|
-
}
|
|
69
|
+
} // end namespace internal
|
|
66
70
|
|
|
67
|
-
template<typename XprType, int BlockRows, int BlockCols, bool InnerPanel, typename StorageKind>
|
|
71
|
+
template <typename XprType, int BlockRows, int BlockCols, bool InnerPanel, typename StorageKind>
|
|
72
|
+
class BlockImpl;
|
|
68
73
|
|
|
69
74
|
/** \class Block
|
|
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
|
-
template<typename XprType, int BlockRows, int BlockCols, bool InnerPanel>
|
|
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
|
-
|
|
148
|
-
|
|
75
|
+
* \ingroup Core_Module
|
|
76
|
+
*
|
|
77
|
+
* \brief Expression of a fixed-size or dynamic-size block
|
|
78
|
+
*
|
|
79
|
+
* \tparam XprType the type of the expression in which we are taking a block
|
|
80
|
+
* \tparam BlockRows the number of rows of the block we are taking at compile time (optional)
|
|
81
|
+
* \tparam BlockCols the number of columns of the block we are taking at compile time (optional)
|
|
82
|
+
* \tparam InnerPanel is true, if the block maps to a set of rows of a row major matrix or
|
|
83
|
+
* to set of columns of a column major matrix (optional). The parameter allows to determine
|
|
84
|
+
* at compile time whether aligned access is possible on the block expression.
|
|
85
|
+
*
|
|
86
|
+
* This class represents an expression of either a fixed-size or dynamic-size block. It is the return
|
|
87
|
+
* type of DenseBase::block(Index,Index,Index,Index) and DenseBase::block<int,int>(Index,Index) and
|
|
88
|
+
* most of the time this is the only way it is used.
|
|
89
|
+
*
|
|
90
|
+
* However, if you want to directly manipulate block expressions,
|
|
91
|
+
* for instance if you want to write a function returning such an expression, you
|
|
92
|
+
* will need to use this class.
|
|
93
|
+
*
|
|
94
|
+
* Here is an example illustrating the dynamic case:
|
|
95
|
+
* \include class_Block.cpp
|
|
96
|
+
* Output: \verbinclude class_Block.out
|
|
97
|
+
*
|
|
98
|
+
* \note Even though this expression has dynamic size, in the case where \a XprType
|
|
99
|
+
* has fixed size, this expression inherits a fixed maximal size which means that evaluating
|
|
100
|
+
* it does not cause a dynamic memory allocation.
|
|
101
|
+
*
|
|
102
|
+
* Here is an example illustrating the fixed-size case:
|
|
103
|
+
* \include class_FixedBlock.cpp
|
|
104
|
+
* Output: \verbinclude class_FixedBlock.out
|
|
105
|
+
*
|
|
106
|
+
* \sa DenseBase::block(Index,Index,Index,Index), DenseBase::block(Index,Index), class VectorBlock
|
|
107
|
+
*/
|
|
108
|
+
template <typename XprType, int BlockRows, int BlockCols, bool InnerPanel>
|
|
109
|
+
class Block
|
|
110
|
+
: public BlockImpl<XprType, BlockRows, BlockCols, InnerPanel, typename internal::traits<XprType>::StorageKind> {
|
|
111
|
+
typedef BlockImpl<XprType, BlockRows, BlockCols, InnerPanel, typename internal::traits<XprType>::StorageKind> Impl;
|
|
112
|
+
using BlockHelper = internal::block_xpr_helper<Block>;
|
|
113
|
+
|
|
114
|
+
public:
|
|
115
|
+
// typedef typename Impl::Base Base;
|
|
116
|
+
typedef Impl Base;
|
|
117
|
+
EIGEN_GENERIC_PUBLIC_INTERFACE(Block)
|
|
118
|
+
EIGEN_INHERIT_ASSIGNMENT_OPERATORS(Block)
|
|
119
|
+
|
|
120
|
+
typedef internal::remove_all_t<XprType> NestedExpression;
|
|
121
|
+
|
|
122
|
+
/** Column or Row constructor
|
|
123
|
+
*/
|
|
124
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Block(XprType& xpr, Index i) : Impl(xpr, i) {
|
|
125
|
+
eigen_assert((i >= 0) && (((BlockRows == 1) && (BlockCols == XprType::ColsAtCompileTime) && i < xpr.rows()) ||
|
|
126
|
+
((BlockRows == XprType::RowsAtCompileTime) && (BlockCols == 1) && i < xpr.cols())));
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/** Fixed-size constructor
|
|
130
|
+
*/
|
|
131
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Block(XprType& xpr, Index startRow, Index startCol)
|
|
132
|
+
: Impl(xpr, startRow, startCol) {
|
|
133
|
+
EIGEN_STATIC_ASSERT(RowsAtCompileTime != Dynamic && ColsAtCompileTime != Dynamic,
|
|
134
|
+
THIS_METHOD_IS_ONLY_FOR_FIXED_SIZE)
|
|
135
|
+
eigen_assert(startRow >= 0 && BlockRows >= 0 && startRow + BlockRows <= xpr.rows() && startCol >= 0 &&
|
|
136
|
+
BlockCols >= 0 && startCol + BlockCols <= xpr.cols());
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/** Dynamic-size constructor
|
|
140
|
+
*/
|
|
141
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Block(XprType& xpr, Index startRow, Index startCol, Index blockRows,
|
|
142
|
+
Index blockCols)
|
|
143
|
+
: Impl(xpr, startRow, startCol, blockRows, blockCols) {
|
|
144
|
+
eigen_assert((RowsAtCompileTime == Dynamic || RowsAtCompileTime == blockRows) &&
|
|
145
|
+
(ColsAtCompileTime == Dynamic || ColsAtCompileTime == blockCols));
|
|
146
|
+
eigen_assert(startRow >= 0 && blockRows >= 0 && startRow <= xpr.rows() - blockRows && startCol >= 0 &&
|
|
147
|
+
blockCols >= 0 && startCol <= xpr.cols() - blockCols);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
// convert nested blocks (e.g. Block<Block<MatrixType>>) to a simple block expression (Block<MatrixType>)
|
|
151
|
+
|
|
152
|
+
using ConstUnwindReturnType = Block<const typename BlockHelper::BaseType, BlockRows, BlockCols, InnerPanel>;
|
|
153
|
+
using UnwindReturnType = Block<typename BlockHelper::BaseType, BlockRows, BlockCols, InnerPanel>;
|
|
154
|
+
|
|
155
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE ConstUnwindReturnType unwind() const {
|
|
156
|
+
return ConstUnwindReturnType(BlockHelper::base(*this), BlockHelper::row(*this, 0), BlockHelper::col(*this, 0),
|
|
157
|
+
this->rows(), this->cols());
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
template <typename T = Block, typename EnableIf = std::enable_if_t<!std::is_const<T>::value>>
|
|
161
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE UnwindReturnType unwind() {
|
|
162
|
+
return UnwindReturnType(BlockHelper::base(*this), BlockHelper::row(*this, 0), BlockHelper::col(*this, 0),
|
|
163
|
+
this->rows(), this->cols());
|
|
164
|
+
}
|
|
149
165
|
};
|
|
150
166
|
|
|
151
|
-
// The generic default implementation for dense block
|
|
167
|
+
// The generic default implementation for dense block simply forward to the internal::BlockImpl_dense
|
|
152
168
|
// that must be specialized for direct and non-direct access...
|
|
153
|
-
template<typename XprType, int BlockRows, int BlockCols, bool InnerPanel>
|
|
169
|
+
template <typename XprType, int BlockRows, int BlockCols, bool InnerPanel>
|
|
154
170
|
class BlockImpl<XprType, BlockRows, BlockCols, InnerPanel, Dense>
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
171
|
+
: public internal::BlockImpl_dense<XprType, BlockRows, BlockCols, InnerPanel> {
|
|
172
|
+
typedef internal::BlockImpl_dense<XprType, BlockRows, BlockCols, InnerPanel> Impl;
|
|
173
|
+
typedef typename XprType::StorageIndex StorageIndex;
|
|
174
|
+
|
|
175
|
+
public:
|
|
176
|
+
typedef Impl Base;
|
|
177
|
+
EIGEN_INHERIT_ASSIGNMENT_OPERATORS(BlockImpl)
|
|
178
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE BlockImpl(XprType& xpr, Index i) : Impl(xpr, i) {}
|
|
179
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE BlockImpl(XprType& xpr, Index startRow, Index startCol)
|
|
180
|
+
: Impl(xpr, startRow, startCol) {}
|
|
181
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE BlockImpl(XprType& xpr, Index startRow, Index startCol, Index blockRows,
|
|
182
|
+
Index blockCols)
|
|
166
183
|
: Impl(xpr, startRow, startCol, blockRows, blockCols) {}
|
|
167
184
|
};
|
|
168
185
|
|
|
169
186
|
namespace internal {
|
|
170
187
|
|
|
171
188
|
/** \internal Internal implementation of dense Blocks in the general case. */
|
|
172
|
-
template<typename XprType, int BlockRows, int BlockCols, bool InnerPanel, bool HasDirectAccess>
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
EIGEN_DEVICE_FUNC
|
|
188
|
-
inline BlockImpl_dense(XprType& xpr, Index i)
|
|
189
|
+
template <typename XprType, int BlockRows, int BlockCols, bool InnerPanel, bool HasDirectAccess>
|
|
190
|
+
class BlockImpl_dense : public internal::dense_xpr_base<Block<XprType, BlockRows, BlockCols, InnerPanel>>::type {
|
|
191
|
+
typedef Block<XprType, BlockRows, BlockCols, InnerPanel> BlockType;
|
|
192
|
+
typedef typename internal::ref_selector<XprType>::non_const_type XprTypeNested;
|
|
193
|
+
|
|
194
|
+
public:
|
|
195
|
+
typedef typename internal::dense_xpr_base<BlockType>::type Base;
|
|
196
|
+
EIGEN_DENSE_PUBLIC_INTERFACE(BlockType)
|
|
197
|
+
EIGEN_INHERIT_ASSIGNMENT_OPERATORS(BlockImpl_dense)
|
|
198
|
+
|
|
199
|
+
// class InnerIterator; // FIXME apparently never used
|
|
200
|
+
|
|
201
|
+
/** Column or Row constructor
|
|
202
|
+
*/
|
|
203
|
+
EIGEN_DEVICE_FUNC inline BlockImpl_dense(XprType& xpr, Index i)
|
|
189
204
|
: m_xpr(xpr),
|
|
190
205
|
// It is a row if and only if BlockRows==1 and BlockCols==XprType::ColsAtCompileTime,
|
|
191
206
|
// and it is a column if and only if BlockRows==XprType::RowsAtCompileTime and BlockCols==1,
|
|
192
207
|
// all other cases are invalid.
|
|
193
208
|
// The case a 1x1 matrix seems ambiguous, but the result is the same anyway.
|
|
194
|
-
m_startRow(
|
|
195
|
-
m_startCol(
|
|
196
|
-
m_blockRows(BlockRows==1 ? 1 : xpr.rows()),
|
|
197
|
-
m_blockCols(BlockCols==1 ? 1 : xpr.cols())
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
#ifdef EIGEN_PARSED_BY_DOXYGEN
|
|
291
|
-
/** \sa MapBase::data() */
|
|
292
|
-
EIGEN_DEVICE_FUNC inline const Scalar* data() const;
|
|
293
|
-
EIGEN_DEVICE_FUNC inline Index innerStride() const;
|
|
294
|
-
EIGEN_DEVICE_FUNC inline Index outerStride() const;
|
|
295
|
-
#endif
|
|
296
|
-
|
|
297
|
-
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
|
298
|
-
const typename internal::remove_all<XprTypeNested>::type& nestedExpression() const
|
|
299
|
-
{
|
|
300
|
-
return m_xpr;
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
|
304
|
-
XprType& nestedExpression() { return m_xpr; }
|
|
305
|
-
|
|
306
|
-
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR
|
|
307
|
-
StorageIndex startRow() const EIGEN_NOEXCEPT
|
|
308
|
-
{
|
|
309
|
-
return m_startRow.value();
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR
|
|
313
|
-
StorageIndex startCol() const EIGEN_NOEXCEPT
|
|
314
|
-
{
|
|
315
|
-
return m_startCol.value();
|
|
316
|
-
}
|
|
317
|
-
|
|
318
|
-
protected:
|
|
319
|
-
|
|
320
|
-
XprTypeNested m_xpr;
|
|
321
|
-
const internal::variable_if_dynamic<StorageIndex, (XprType::RowsAtCompileTime == 1 && BlockRows==1) ? 0 : Dynamic> m_startRow;
|
|
322
|
-
const internal::variable_if_dynamic<StorageIndex, (XprType::ColsAtCompileTime == 1 && BlockCols==1) ? 0 : Dynamic> m_startCol;
|
|
323
|
-
const internal::variable_if_dynamic<StorageIndex, RowsAtCompileTime> m_blockRows;
|
|
324
|
-
const internal::variable_if_dynamic<StorageIndex, ColsAtCompileTime> m_blockCols;
|
|
209
|
+
m_startRow((BlockRows == 1) && (BlockCols == XprType::ColsAtCompileTime) ? i : 0),
|
|
210
|
+
m_startCol((BlockRows == XprType::RowsAtCompileTime) && (BlockCols == 1) ? i : 0),
|
|
211
|
+
m_blockRows(BlockRows == 1 ? 1 : xpr.rows()),
|
|
212
|
+
m_blockCols(BlockCols == 1 ? 1 : xpr.cols()) {}
|
|
213
|
+
|
|
214
|
+
/** Fixed-size constructor
|
|
215
|
+
*/
|
|
216
|
+
EIGEN_DEVICE_FUNC inline BlockImpl_dense(XprType& xpr, Index startRow, Index startCol)
|
|
217
|
+
: m_xpr(xpr), m_startRow(startRow), m_startCol(startCol), m_blockRows(BlockRows), m_blockCols(BlockCols) {}
|
|
218
|
+
|
|
219
|
+
/** Dynamic-size constructor
|
|
220
|
+
*/
|
|
221
|
+
EIGEN_DEVICE_FUNC inline BlockImpl_dense(XprType& xpr, Index startRow, Index startCol, Index blockRows,
|
|
222
|
+
Index blockCols)
|
|
223
|
+
: m_xpr(xpr), m_startRow(startRow), m_startCol(startCol), m_blockRows(blockRows), m_blockCols(blockCols) {}
|
|
224
|
+
|
|
225
|
+
EIGEN_DEVICE_FUNC inline Index rows() const { return m_blockRows.value(); }
|
|
226
|
+
EIGEN_DEVICE_FUNC inline Index cols() const { return m_blockCols.value(); }
|
|
227
|
+
|
|
228
|
+
EIGEN_DEVICE_FUNC inline Scalar& coeffRef(Index rowId, Index colId) {
|
|
229
|
+
EIGEN_STATIC_ASSERT_LVALUE(XprType)
|
|
230
|
+
return m_xpr.coeffRef(rowId + m_startRow.value(), colId + m_startCol.value());
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
EIGEN_DEVICE_FUNC inline const Scalar& coeffRef(Index rowId, Index colId) const {
|
|
234
|
+
return m_xpr.derived().coeffRef(rowId + m_startRow.value(), colId + m_startCol.value());
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const CoeffReturnType coeff(Index rowId, Index colId) const {
|
|
238
|
+
return m_xpr.coeff(rowId + m_startRow.value(), colId + m_startCol.value());
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
EIGEN_DEVICE_FUNC inline Scalar& coeffRef(Index index) {
|
|
242
|
+
EIGEN_STATIC_ASSERT_LVALUE(XprType)
|
|
243
|
+
return m_xpr.coeffRef(m_startRow.value() + (RowsAtCompileTime == 1 ? 0 : index),
|
|
244
|
+
m_startCol.value() + (RowsAtCompileTime == 1 ? index : 0));
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
EIGEN_DEVICE_FUNC inline const Scalar& coeffRef(Index index) const {
|
|
248
|
+
return m_xpr.coeffRef(m_startRow.value() + (RowsAtCompileTime == 1 ? 0 : index),
|
|
249
|
+
m_startCol.value() + (RowsAtCompileTime == 1 ? index : 0));
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
EIGEN_DEVICE_FUNC inline const CoeffReturnType coeff(Index index) const {
|
|
253
|
+
return m_xpr.coeff(m_startRow.value() + (RowsAtCompileTime == 1 ? 0 : index),
|
|
254
|
+
m_startCol.value() + (RowsAtCompileTime == 1 ? index : 0));
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
template <int LoadMode>
|
|
258
|
+
EIGEN_DEVICE_FUNC inline PacketScalar packet(Index rowId, Index colId) const {
|
|
259
|
+
return m_xpr.template packet<Unaligned>(rowId + m_startRow.value(), colId + m_startCol.value());
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
template <int LoadMode>
|
|
263
|
+
EIGEN_DEVICE_FUNC inline void writePacket(Index rowId, Index colId, const PacketScalar& val) {
|
|
264
|
+
m_xpr.template writePacket<Unaligned>(rowId + m_startRow.value(), colId + m_startCol.value(), val);
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
template <int LoadMode>
|
|
268
|
+
EIGEN_DEVICE_FUNC inline PacketScalar packet(Index index) const {
|
|
269
|
+
return m_xpr.template packet<Unaligned>(m_startRow.value() + (RowsAtCompileTime == 1 ? 0 : index),
|
|
270
|
+
m_startCol.value() + (RowsAtCompileTime == 1 ? index : 0));
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
template <int LoadMode>
|
|
274
|
+
EIGEN_DEVICE_FUNC inline void writePacket(Index index, const PacketScalar& val) {
|
|
275
|
+
m_xpr.template writePacket<Unaligned>(m_startRow.value() + (RowsAtCompileTime == 1 ? 0 : index),
|
|
276
|
+
m_startCol.value() + (RowsAtCompileTime == 1 ? index : 0), val);
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
#ifdef EIGEN_PARSED_BY_DOXYGEN
|
|
280
|
+
/** \sa MapBase::data() */
|
|
281
|
+
EIGEN_DEVICE_FUNC constexpr const Scalar* data() const;
|
|
282
|
+
EIGEN_DEVICE_FUNC inline Index innerStride() const;
|
|
283
|
+
EIGEN_DEVICE_FUNC inline Index outerStride() const;
|
|
284
|
+
#endif
|
|
285
|
+
|
|
286
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const internal::remove_all_t<XprTypeNested>& nestedExpression() const {
|
|
287
|
+
return m_xpr;
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE XprType& nestedExpression() { return m_xpr; }
|
|
291
|
+
|
|
292
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr StorageIndex startRow() const noexcept { return m_startRow.value(); }
|
|
293
|
+
|
|
294
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr StorageIndex startCol() const noexcept { return m_startCol.value(); }
|
|
295
|
+
|
|
296
|
+
protected:
|
|
297
|
+
XprTypeNested m_xpr;
|
|
298
|
+
const internal::variable_if_dynamic<StorageIndex, (XprType::RowsAtCompileTime == 1 && BlockRows == 1) ? 0 : Dynamic>
|
|
299
|
+
m_startRow;
|
|
300
|
+
const internal::variable_if_dynamic<StorageIndex, (XprType::ColsAtCompileTime == 1 && BlockCols == 1) ? 0 : Dynamic>
|
|
301
|
+
m_startCol;
|
|
302
|
+
const internal::variable_if_dynamic<StorageIndex, RowsAtCompileTime> m_blockRows;
|
|
303
|
+
const internal::variable_if_dynamic<StorageIndex, ColsAtCompileTime> m_blockCols;
|
|
325
304
|
};
|
|
326
305
|
|
|
327
306
|
/** \internal Internal implementation of dense Blocks in the direct access case.*/
|
|
328
|
-
template<typename XprType, int BlockRows, int BlockCols, bool InnerPanel>
|
|
329
|
-
class BlockImpl_dense<XprType,BlockRows,BlockCols, InnerPanel,true>
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
307
|
+
template <typename XprType, int BlockRows, int BlockCols, bool InnerPanel>
|
|
308
|
+
class BlockImpl_dense<XprType, BlockRows, BlockCols, InnerPanel, true>
|
|
309
|
+
: public MapBase<Block<XprType, BlockRows, BlockCols, InnerPanel>> {
|
|
310
|
+
typedef Block<XprType, BlockRows, BlockCols, InnerPanel> BlockType;
|
|
311
|
+
typedef typename internal::ref_selector<XprType>::non_const_type XprTypeNested;
|
|
312
|
+
enum { XprTypeIsRowMajor = (int(traits<XprType>::Flags) & RowMajorBit) != 0 };
|
|
313
|
+
|
|
314
|
+
/** \internal Returns base+offset (unless base is null, in which case returns null).
|
|
315
|
+
* Adding an offset to nullptr is undefined behavior, so we must avoid it.
|
|
316
|
+
*/
|
|
317
|
+
template <typename Scalar>
|
|
318
|
+
EIGEN_DEVICE_FUNC constexpr EIGEN_ALWAYS_INLINE static Scalar* add_to_nullable_pointer(Scalar* base, Index offset) {
|
|
319
|
+
return base != nullptr ? base + offset : nullptr;
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
public:
|
|
323
|
+
typedef MapBase<BlockType> Base;
|
|
324
|
+
EIGEN_DENSE_PUBLIC_INTERFACE(BlockType)
|
|
325
|
+
EIGEN_INHERIT_ASSIGNMENT_OPERATORS(BlockImpl_dense)
|
|
326
|
+
|
|
327
|
+
/** Column or Row constructor
|
|
328
|
+
*/
|
|
329
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE BlockImpl_dense(XprType& xpr, Index i)
|
|
330
|
+
: Base((BlockRows == 0 || BlockCols == 0)
|
|
331
|
+
? nullptr
|
|
332
|
+
: add_to_nullable_pointer(
|
|
333
|
+
xpr.data(),
|
|
334
|
+
i * (((BlockRows == 1) && (BlockCols == XprType::ColsAtCompileTime) && (!XprTypeIsRowMajor)) ||
|
|
335
|
+
((BlockRows == XprType::RowsAtCompileTime) && (BlockCols == 1) &&
|
|
336
|
+
(XprTypeIsRowMajor))
|
|
337
|
+
? xpr.innerStride()
|
|
338
|
+
: xpr.outerStride())),
|
|
339
|
+
BlockRows == 1 ? 1 : xpr.rows(), BlockCols == 1 ? 1 : xpr.cols()),
|
|
351
340
|
m_xpr(xpr),
|
|
352
|
-
m_startRow(
|
|
353
|
-
m_startCol(
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
StorageIndex startRow() const EIGEN_NOEXCEPT { return m_startRow.value(); }
|
|
409
|
-
|
|
410
|
-
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR
|
|
411
|
-
StorageIndex startCol() const EIGEN_NOEXCEPT { return m_startCol.value(); }
|
|
412
|
-
|
|
413
|
-
#ifndef __SUNPRO_CC
|
|
341
|
+
m_startRow((BlockRows == 1) && (BlockCols == XprType::ColsAtCompileTime) ? i : 0),
|
|
342
|
+
m_startCol((BlockRows == XprType::RowsAtCompileTime) && (BlockCols == 1) ? i : 0) {
|
|
343
|
+
init();
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
/** Fixed-size constructor
|
|
347
|
+
*/
|
|
348
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE BlockImpl_dense(XprType& xpr, Index startRow, Index startCol)
|
|
349
|
+
: Base((BlockRows == 0 || BlockCols == 0)
|
|
350
|
+
? nullptr
|
|
351
|
+
: add_to_nullable_pointer(xpr.data(),
|
|
352
|
+
xpr.innerStride() * (XprTypeIsRowMajor ? startCol : startRow) +
|
|
353
|
+
xpr.outerStride() * (XprTypeIsRowMajor ? startRow : startCol))),
|
|
354
|
+
m_xpr(xpr),
|
|
355
|
+
m_startRow(startRow),
|
|
356
|
+
m_startCol(startCol) {
|
|
357
|
+
init();
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
/** Dynamic-size constructor
|
|
361
|
+
*/
|
|
362
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE BlockImpl_dense(XprType& xpr, Index startRow, Index startCol, Index blockRows,
|
|
363
|
+
Index blockCols)
|
|
364
|
+
: Base((blockRows == 0 || blockCols == 0)
|
|
365
|
+
? nullptr
|
|
366
|
+
: add_to_nullable_pointer(xpr.data(),
|
|
367
|
+
xpr.innerStride() * (XprTypeIsRowMajor ? startCol : startRow) +
|
|
368
|
+
xpr.outerStride() * (XprTypeIsRowMajor ? startRow : startCol)),
|
|
369
|
+
blockRows, blockCols),
|
|
370
|
+
m_xpr(xpr),
|
|
371
|
+
m_startRow(startRow),
|
|
372
|
+
m_startCol(startCol) {
|
|
373
|
+
init();
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const internal::remove_all_t<XprTypeNested>& nestedExpression() const noexcept {
|
|
377
|
+
return m_xpr;
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE XprType& nestedExpression() { return m_xpr; }
|
|
381
|
+
|
|
382
|
+
/** \sa MapBase::innerStride() */
|
|
383
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr Index innerStride() const noexcept {
|
|
384
|
+
return internal::traits<BlockType>::HasSameStorageOrderAsXprType ? m_xpr.innerStride() : m_xpr.outerStride();
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
/** \sa MapBase::outerStride() */
|
|
388
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr Index outerStride() const noexcept {
|
|
389
|
+
return internal::traits<BlockType>::HasSameStorageOrderAsXprType ? m_xpr.outerStride() : m_xpr.innerStride();
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr StorageIndex startRow() const noexcept { return m_startRow.value(); }
|
|
393
|
+
|
|
394
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr StorageIndex startCol() const noexcept { return m_startCol.value(); }
|
|
395
|
+
|
|
396
|
+
#ifndef __SUNPRO_CC
|
|
414
397
|
// FIXME sunstudio is not friendly with the above friend...
|
|
415
398
|
// META-FIXME there is no 'friend' keyword around here. Is this obsolete?
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
: Base(data, blockRows, blockCols), m_xpr(xpr)
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
const internal::variable_if_dynamic<StorageIndex, (XprType::ColsAtCompileTime == 1 && BlockCols==1) ? 0 : Dynamic> m_startCol;
|
|
441
|
-
Index m_outerStride;
|
|
399
|
+
protected:
|
|
400
|
+
#endif
|
|
401
|
+
|
|
402
|
+
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
|
403
|
+
/** \internal used by allowAligned() */
|
|
404
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE BlockImpl_dense(XprType& xpr, const Scalar* data, Index blockRows,
|
|
405
|
+
Index blockCols)
|
|
406
|
+
: Base(data, blockRows, blockCols), m_xpr(xpr) {
|
|
407
|
+
init();
|
|
408
|
+
}
|
|
409
|
+
#endif
|
|
410
|
+
|
|
411
|
+
protected:
|
|
412
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void init() {
|
|
413
|
+
m_outerStride =
|
|
414
|
+
internal::traits<BlockType>::HasSameStorageOrderAsXprType ? m_xpr.outerStride() : m_xpr.innerStride();
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
XprTypeNested m_xpr;
|
|
418
|
+
const internal::variable_if_dynamic<StorageIndex, (XprType::RowsAtCompileTime == 1 && BlockRows == 1) ? 0 : Dynamic>
|
|
419
|
+
m_startRow;
|
|
420
|
+
const internal::variable_if_dynamic<StorageIndex, (XprType::ColsAtCompileTime == 1 && BlockCols == 1) ? 0 : Dynamic>
|
|
421
|
+
m_startCol;
|
|
422
|
+
Index m_outerStride;
|
|
442
423
|
};
|
|
443
424
|
|
|
444
|
-
}
|
|
425
|
+
} // end namespace internal
|
|
445
426
|
|
|
446
|
-
}
|
|
427
|
+
} // end namespace Eigen
|
|
447
428
|
|
|
448
|
-
#endif
|
|
429
|
+
#endif // EIGEN_BLOCK_H
|