@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
|
@@ -13,640 +13,561 @@
|
|
|
13
13
|
#define EIGEN_MATRIXSTORAGE_H
|
|
14
14
|
|
|
15
15
|
#ifdef EIGEN_DENSE_STORAGE_CTOR_PLUGIN
|
|
16
|
-
|
|
16
|
+
#define EIGEN_INTERNAL_DENSE_STORAGE_CTOR_PLUGIN(X) \
|
|
17
|
+
X; \
|
|
18
|
+
EIGEN_DENSE_STORAGE_CTOR_PLUGIN;
|
|
17
19
|
#else
|
|
18
|
-
|
|
20
|
+
#define EIGEN_INTERNAL_DENSE_STORAGE_CTOR_PLUGIN(X)
|
|
19
21
|
#endif
|
|
20
22
|
|
|
23
|
+
// IWYU pragma: private
|
|
24
|
+
#include "./InternalHeaderCheck.h"
|
|
25
|
+
|
|
21
26
|
namespace Eigen {
|
|
22
27
|
|
|
23
28
|
namespace internal {
|
|
24
29
|
|
|
25
|
-
|
|
30
|
+
#if defined(EIGEN_DISABLE_UNALIGNED_ARRAY_ASSERT)
|
|
31
|
+
#define EIGEN_MAKE_UNALIGNED_ARRAY_ASSERT(Alignment)
|
|
32
|
+
#else
|
|
33
|
+
#define EIGEN_MAKE_UNALIGNED_ARRAY_ASSERT(Alignment) \
|
|
34
|
+
eigen_assert((is_constant_evaluated() || (std::uintptr_t(array) % Alignment == 0)) && \
|
|
35
|
+
"this assertion is explained here: " \
|
|
36
|
+
"http://eigen.tuxfamily.org/dox-devel/group__TopicUnalignedArrayAssert.html" \
|
|
37
|
+
" **** READ THIS WEB PAGE !!! ****");
|
|
38
|
+
#endif
|
|
26
39
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
EIGEN_STATIC_ASSERT(Size * sizeof(T) <= EIGEN_STACK_ALLOCATION_LIMIT, OBJECT_ALLOCATED_ON_STACK_IS_TOO_BIG);
|
|
34
|
-
#endif
|
|
35
|
-
}
|
|
40
|
+
#if EIGEN_STACK_ALLOCATION_LIMIT
|
|
41
|
+
#define EIGEN_MAKE_STACK_ALLOCATION_ASSERT(X) \
|
|
42
|
+
EIGEN_STATIC_ASSERT(X <= EIGEN_STACK_ALLOCATION_LIMIT, OBJECT_ALLOCATED_ON_STACK_IS_TOO_BIG)
|
|
43
|
+
#else
|
|
44
|
+
#define EIGEN_MAKE_STACK_ALLOCATION_ASSERT(X)
|
|
45
|
+
#endif
|
|
36
46
|
|
|
37
47
|
/** \internal
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
template <typename T, int Size, int MatrixOrArrayOptions,
|
|
42
|
-
int Alignment = (MatrixOrArrayOptions&DontAlign) ? 0
|
|
43
|
-
: compute_default_alignment<T,Size>::value >
|
|
44
|
-
struct plain_array
|
|
45
|
-
{
|
|
46
|
-
T array[Size];
|
|
47
|
-
|
|
48
|
-
EIGEN_DEVICE_FUNC
|
|
49
|
-
plain_array()
|
|
50
|
-
{
|
|
51
|
-
check_static_allocation_size<T,Size>();
|
|
52
|
-
}
|
|
48
|
+
* Static array. If the MatrixOrArrayOptions require auto-alignment, the array will be automatically aligned:
|
|
49
|
+
* to 16 bytes boundary if the total size is a multiple of 16 bytes.
|
|
50
|
+
*/
|
|
53
51
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
52
|
+
template <typename T, int Size, int MatrixOrArrayOptions,
|
|
53
|
+
int Alignment = (MatrixOrArrayOptions & DontAlign) ? 0 : compute_default_alignment<T, Size>::value>
|
|
54
|
+
struct plain_array {
|
|
55
|
+
EIGEN_ALIGN_TO_BOUNDARY(Alignment) T array[Size];
|
|
56
|
+
#if defined(EIGEN_NO_DEBUG) || defined(EIGEN_TESTING_PLAINOBJECT_CTOR)
|
|
57
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr plain_array() = default;
|
|
58
|
+
#else
|
|
59
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr plain_array() {
|
|
60
|
+
EIGEN_MAKE_UNALIGNED_ARRAY_ASSERT(Alignment)
|
|
61
|
+
EIGEN_MAKE_STACK_ALLOCATION_ASSERT(Size * sizeof(T))
|
|
58
62
|
}
|
|
63
|
+
#endif
|
|
59
64
|
};
|
|
60
65
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
template<typename PtrType>
|
|
68
|
-
EIGEN_ALWAYS_INLINE PtrType eigen_unaligned_array_assert_workaround_gcc47(PtrType array) { return array; }
|
|
69
|
-
#define EIGEN_MAKE_UNALIGNED_ARRAY_ASSERT(sizemask) \
|
|
70
|
-
eigen_assert((internal::UIntPtr(eigen_unaligned_array_assert_workaround_gcc47(array)) & (sizemask)) == 0 \
|
|
71
|
-
&& "this assertion is explained here: " \
|
|
72
|
-
"http://eigen.tuxfamily.org/dox-devel/group__TopicUnalignedArrayAssert.html" \
|
|
73
|
-
" **** READ THIS WEB PAGE !!! ****");
|
|
66
|
+
template <typename T, int Size, int MatrixOrArrayOptions>
|
|
67
|
+
struct plain_array<T, Size, MatrixOrArrayOptions, 0> {
|
|
68
|
+
// on some 32-bit platforms, stack-allocated arrays are aligned to 4 bytes, not the preferred alignment of T
|
|
69
|
+
EIGEN_ALIGN_TO_BOUNDARY(alignof(T)) T array[Size];
|
|
70
|
+
#if defined(EIGEN_NO_DEBUG) || defined(EIGEN_TESTING_PLAINOBJECT_CTOR)
|
|
71
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr plain_array() = default;
|
|
74
72
|
#else
|
|
75
|
-
|
|
76
|
-
eigen_assert((internal::UIntPtr(array) & (sizemask)) == 0 \
|
|
77
|
-
&& "this assertion is explained here: " \
|
|
78
|
-
"http://eigen.tuxfamily.org/dox-devel/group__TopicUnalignedArrayAssert.html" \
|
|
79
|
-
" **** READ THIS WEB PAGE !!! ****");
|
|
73
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr plain_array() { EIGEN_MAKE_STACK_ALLOCATION_ASSERT(Size * sizeof(T)) }
|
|
80
74
|
#endif
|
|
75
|
+
};
|
|
81
76
|
|
|
82
|
-
template <typename T, int Size, int
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
77
|
+
template <typename T, int Size, int Options, int Alignment>
|
|
78
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr void swap_plain_array(plain_array<T, Size, Options, Alignment>& a,
|
|
79
|
+
plain_array<T, Size, Options, Alignment>& b,
|
|
80
|
+
Index a_size, Index b_size) {
|
|
81
|
+
Index common_size = numext::mini(a_size, b_size);
|
|
82
|
+
std::swap_ranges(a.array, a.array + common_size, b.array);
|
|
83
|
+
if (a_size > b_size)
|
|
84
|
+
smart_copy(a.array + common_size, a.array + a_size, b.array + common_size);
|
|
85
|
+
else if (b_size > a_size)
|
|
86
|
+
smart_copy(b.array + common_size, b.array + b_size, a.array + common_size);
|
|
87
|
+
}
|
|
86
88
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
EIGEN_MAKE_UNALIGNED_ARRAY_ASSERT(7);
|
|
91
|
-
check_static_allocation_size<T,Size>();
|
|
92
|
-
}
|
|
89
|
+
template <typename T, int Size, int Rows, int Cols, int Options>
|
|
90
|
+
class DenseStorage_impl {
|
|
91
|
+
plain_array<T, Size, Options> m_data;
|
|
93
92
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
93
|
+
public:
|
|
94
|
+
#ifndef EIGEN_DENSE_STORAGE_CTOR_PLUGIN
|
|
95
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage_impl() = default;
|
|
96
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage_impl(const DenseStorage_impl&) = default;
|
|
97
|
+
#else
|
|
98
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage_impl() {
|
|
99
|
+
EIGEN_INTERNAL_DENSE_STORAGE_CTOR_PLUGIN(Index size = Size)
|
|
98
100
|
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
struct plain_array<T, Size, MatrixOrArrayOptions, 16>
|
|
103
|
-
{
|
|
104
|
-
EIGEN_ALIGN_TO_BOUNDARY(16) T array[Size];
|
|
105
|
-
|
|
106
|
-
EIGEN_DEVICE_FUNC
|
|
107
|
-
plain_array()
|
|
108
|
-
{
|
|
109
|
-
EIGEN_MAKE_UNALIGNED_ARRAY_ASSERT(15);
|
|
110
|
-
check_static_allocation_size<T,Size>();
|
|
101
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage_impl(const DenseStorage_impl& other) {
|
|
102
|
+
EIGEN_INTERNAL_DENSE_STORAGE_CTOR_PLUGIN(Index size = Size)
|
|
103
|
+
smart_copy(other.m_data.array, other.m_data.array + Size, m_data.array);
|
|
111
104
|
}
|
|
112
|
-
|
|
113
|
-
EIGEN_DEVICE_FUNC
|
|
114
|
-
|
|
115
|
-
{
|
|
116
|
-
|
|
105
|
+
#endif
|
|
106
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage_impl(Index /*size*/, Index /*rows*/, Index /*cols*/) {}
|
|
107
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage_impl& operator=(const DenseStorage_impl&) = default;
|
|
108
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr void swap(DenseStorage_impl& other) {
|
|
109
|
+
numext::swap(m_data, other.m_data);
|
|
117
110
|
}
|
|
111
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr void conservativeResize(Index /*size*/, Index /*rows*/,
|
|
112
|
+
Index /*cols*/) {}
|
|
113
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr void resize(Index /*size*/, Index /*rows*/, Index /*cols*/) {}
|
|
114
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr Index rows() const { return Rows; }
|
|
115
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr Index cols() const { return Cols; }
|
|
116
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr Index size() const { return Rows * Cols; }
|
|
117
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr T* data() { return m_data.array; }
|
|
118
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr const T* data() const { return m_data.array; }
|
|
118
119
|
};
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
EIGEN_DEVICE_FUNC
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
120
|
+
template <typename T, int Size, int Cols, int Options>
|
|
121
|
+
class DenseStorage_impl<T, Size, Dynamic, Cols, Options> {
|
|
122
|
+
plain_array<T, Size, Options> m_data;
|
|
123
|
+
Index m_rows = 0;
|
|
124
|
+
|
|
125
|
+
public:
|
|
126
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage_impl() = default;
|
|
127
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage_impl(const DenseStorage_impl& other)
|
|
128
|
+
: m_rows(other.m_rows) {
|
|
129
|
+
EIGEN_INTERNAL_DENSE_STORAGE_CTOR_PLUGIN(Index size = other.size())
|
|
130
|
+
smart_copy(other.m_data.array, other.m_data.array + other.size(), m_data.array);
|
|
130
131
|
}
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
check_static_allocation_size<T,Size>();
|
|
132
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage_impl(Index size, Index rows, Index /*cols*/)
|
|
133
|
+
: m_rows(rows) {
|
|
134
|
+
EIGEN_INTERNAL_DENSE_STORAGE_CTOR_PLUGIN({})
|
|
135
|
+
EIGEN_UNUSED_VARIABLE(size)
|
|
136
136
|
}
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
{
|
|
142
|
-
EIGEN_ALIGN_TO_BOUNDARY(64) T array[Size];
|
|
143
|
-
|
|
144
|
-
EIGEN_DEVICE_FUNC
|
|
145
|
-
plain_array()
|
|
146
|
-
{
|
|
147
|
-
EIGEN_MAKE_UNALIGNED_ARRAY_ASSERT(63);
|
|
148
|
-
check_static_allocation_size<T,Size>();
|
|
137
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage_impl& operator=(const DenseStorage_impl& other) {
|
|
138
|
+
smart_copy(other.m_data.array, other.m_data.array + other.size(), m_data.array);
|
|
139
|
+
m_rows = other.m_rows;
|
|
140
|
+
return *this;
|
|
149
141
|
}
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
142
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr void swap(DenseStorage_impl& other) {
|
|
143
|
+
swap_plain_array(m_data, other.m_data, size(), other.size());
|
|
144
|
+
numext::swap(m_rows, other.m_rows);
|
|
145
|
+
}
|
|
146
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr void conservativeResize(Index /*size*/, Index rows, Index /*cols*/) {
|
|
147
|
+
m_rows = rows;
|
|
155
148
|
}
|
|
149
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr void resize(Index /*size*/, Index rows, Index /*cols*/) {
|
|
150
|
+
m_rows = rows;
|
|
151
|
+
}
|
|
152
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr Index rows() const { return m_rows; }
|
|
153
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr Index cols() const { return Cols; }
|
|
154
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr Index size() const { return m_rows * Cols; }
|
|
155
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr T* data() { return m_data.array; }
|
|
156
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr const T* data() const { return m_data.array; }
|
|
156
157
|
};
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
EIGEN_DEVICE_FUNC
|
|
158
|
+
template <typename T, int Size, int Rows, int Options>
|
|
159
|
+
class DenseStorage_impl<T, Size, Rows, Dynamic, Options> {
|
|
160
|
+
plain_array<T, Size, Options> m_data;
|
|
161
|
+
Index m_cols = 0;
|
|
162
|
+
|
|
163
|
+
public:
|
|
164
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage_impl() = default;
|
|
165
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage_impl(const DenseStorage_impl& other)
|
|
166
|
+
: m_cols(other.m_cols) {
|
|
167
|
+
EIGEN_INTERNAL_DENSE_STORAGE_CTOR_PLUGIN(Index size = other.size())
|
|
168
|
+
smart_copy(other.m_data.array, other.m_data.array + other.size(), m_data.array);
|
|
169
|
+
}
|
|
170
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage_impl(Index size, Index /*rows*/, Index cols)
|
|
171
|
+
: m_cols(cols) {
|
|
172
|
+
EIGEN_INTERNAL_DENSE_STORAGE_CTOR_PLUGIN({})
|
|
173
|
+
EIGEN_UNUSED_VARIABLE(size)
|
|
174
|
+
}
|
|
175
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage_impl& operator=(const DenseStorage_impl& other) {
|
|
176
|
+
smart_copy(other.m_data.array, other.m_data.array + other.size(), m_data.array);
|
|
177
|
+
m_cols = other.m_cols;
|
|
178
|
+
return *this;
|
|
179
|
+
}
|
|
180
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr void swap(DenseStorage_impl& other) {
|
|
181
|
+
swap_plain_array(m_data, other.m_data, size(), other.size());
|
|
182
|
+
numext::swap(m_cols, other.m_cols);
|
|
183
|
+
}
|
|
184
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr void conservativeResize(Index /*size*/, Index /*rows*/, Index cols) {
|
|
185
|
+
m_cols = cols;
|
|
186
|
+
}
|
|
187
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr void resize(Index /*size*/, Index /*rows*/, Index cols) {
|
|
188
|
+
m_cols = cols;
|
|
189
|
+
}
|
|
190
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr Index rows() const { return Rows; }
|
|
191
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr Index cols() const { return m_cols; }
|
|
192
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr Index size() const { return Rows * m_cols; }
|
|
193
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr T* data() { return m_data.array; }
|
|
194
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr const T* data() const { return m_data.array; }
|
|
164
195
|
};
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
196
|
+
template <typename T, int Size, int Options>
|
|
197
|
+
class DenseStorage_impl<T, Size, Dynamic, Dynamic, Options> {
|
|
198
|
+
plain_array<T, Size, Options> m_data;
|
|
199
|
+
Index m_rows = 0;
|
|
200
|
+
Index m_cols = 0;
|
|
201
|
+
|
|
202
|
+
public:
|
|
203
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage_impl() = default;
|
|
204
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage_impl(const DenseStorage_impl& other)
|
|
205
|
+
: m_rows(other.m_rows), m_cols(other.m_cols) {
|
|
206
|
+
EIGEN_INTERNAL_DENSE_STORAGE_CTOR_PLUGIN(Index size = other.size())
|
|
207
|
+
smart_copy(other.m_data.array, other.m_data.array + other.size(), m_data.array);
|
|
208
|
+
}
|
|
209
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage_impl(Index size, Index rows, Index cols)
|
|
210
|
+
: m_rows(rows), m_cols(cols) {
|
|
211
|
+
EIGEN_INTERNAL_DENSE_STORAGE_CTOR_PLUGIN({})
|
|
212
|
+
EIGEN_UNUSED_VARIABLE(size)
|
|
213
|
+
}
|
|
214
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage_impl& operator=(const DenseStorage_impl& other) {
|
|
215
|
+
smart_copy(other.m_data.array, other.m_data.array + other.size(), m_data.array);
|
|
216
|
+
m_rows = other.m_rows;
|
|
217
|
+
m_cols = other.m_cols;
|
|
218
|
+
return *this;
|
|
187
219
|
}
|
|
220
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr void swap(DenseStorage_impl& other) {
|
|
221
|
+
swap_plain_array(m_data, other.m_data, size(), other.size());
|
|
222
|
+
numext::swap(m_rows, other.m_rows);
|
|
223
|
+
numext::swap(m_cols, other.m_cols);
|
|
224
|
+
}
|
|
225
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr void conservativeResize(Index /*size*/, Index rows, Index cols) {
|
|
226
|
+
m_rows = rows;
|
|
227
|
+
m_cols = cols;
|
|
228
|
+
}
|
|
229
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr void resize(Index /*size*/, Index rows, Index cols) {
|
|
230
|
+
m_rows = rows;
|
|
231
|
+
m_cols = cols;
|
|
232
|
+
}
|
|
233
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr Index rows() const { return m_rows; }
|
|
234
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr Index cols() const { return m_cols; }
|
|
235
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr Index size() const { return m_rows * m_cols; }
|
|
236
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr T* data() { return m_data.array; }
|
|
237
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr const T* data() const { return m_data.array; }
|
|
188
238
|
};
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
// purely fixed-size matrix
|
|
207
|
-
template<typename T, int Size, int _Rows, int _Cols, int _Options> class DenseStorage
|
|
208
|
-
{
|
|
209
|
-
internal::plain_array<T,Size,_Options> m_data;
|
|
210
|
-
public:
|
|
211
|
-
EIGEN_DEVICE_FUNC DenseStorage() {
|
|
212
|
-
EIGEN_INTERNAL_DENSE_STORAGE_CTOR_PLUGIN(Index size = Size)
|
|
213
|
-
}
|
|
214
|
-
EIGEN_DEVICE_FUNC
|
|
215
|
-
explicit DenseStorage(internal::constructor_without_unaligned_array_assert)
|
|
216
|
-
: m_data(internal::constructor_without_unaligned_array_assert()) {}
|
|
217
|
-
#if !EIGEN_HAS_CXX11 || defined(EIGEN_DENSE_STORAGE_CTOR_PLUGIN)
|
|
218
|
-
EIGEN_DEVICE_FUNC
|
|
219
|
-
DenseStorage(const DenseStorage& other) : m_data(other.m_data) {
|
|
220
|
-
EIGEN_INTERNAL_DENSE_STORAGE_CTOR_PLUGIN(Index size = Size)
|
|
221
|
-
}
|
|
222
|
-
#else
|
|
223
|
-
EIGEN_DEVICE_FUNC DenseStorage(const DenseStorage&) = default;
|
|
224
|
-
#endif
|
|
225
|
-
#if !EIGEN_HAS_CXX11
|
|
226
|
-
EIGEN_DEVICE_FUNC
|
|
227
|
-
DenseStorage& operator=(const DenseStorage& other)
|
|
228
|
-
{
|
|
229
|
-
if (this != &other) m_data = other.m_data;
|
|
230
|
-
return *this;
|
|
231
|
-
}
|
|
232
|
-
#else
|
|
233
|
-
EIGEN_DEVICE_FUNC DenseStorage& operator=(const DenseStorage&) = default;
|
|
234
|
-
#endif
|
|
235
|
-
#if EIGEN_HAS_RVALUE_REFERENCES
|
|
236
|
-
#if !EIGEN_HAS_CXX11
|
|
237
|
-
EIGEN_DEVICE_FUNC DenseStorage(DenseStorage&& other) EIGEN_NOEXCEPT
|
|
238
|
-
: m_data(std::move(other.m_data))
|
|
239
|
-
{
|
|
240
|
-
}
|
|
241
|
-
EIGEN_DEVICE_FUNC DenseStorage& operator=(DenseStorage&& other) EIGEN_NOEXCEPT
|
|
242
|
-
{
|
|
243
|
-
if (this != &other)
|
|
244
|
-
m_data = std::move(other.m_data);
|
|
245
|
-
return *this;
|
|
246
|
-
}
|
|
247
|
-
#else
|
|
248
|
-
EIGEN_DEVICE_FUNC DenseStorage(DenseStorage&&) = default;
|
|
249
|
-
EIGEN_DEVICE_FUNC DenseStorage& operator=(DenseStorage&&) = default;
|
|
250
|
-
#endif
|
|
251
|
-
#endif
|
|
252
|
-
EIGEN_DEVICE_FUNC DenseStorage(Index size, Index rows, Index cols) {
|
|
253
|
-
EIGEN_INTERNAL_DENSE_STORAGE_CTOR_PLUGIN({})
|
|
254
|
-
eigen_internal_assert(size==rows*cols && rows==_Rows && cols==_Cols);
|
|
255
|
-
EIGEN_UNUSED_VARIABLE(size);
|
|
256
|
-
EIGEN_UNUSED_VARIABLE(rows);
|
|
257
|
-
EIGEN_UNUSED_VARIABLE(cols);
|
|
258
|
-
}
|
|
259
|
-
EIGEN_DEVICE_FUNC void swap(DenseStorage& other) {
|
|
260
|
-
numext::swap(m_data, other.m_data);
|
|
261
|
-
}
|
|
262
|
-
EIGEN_DEVICE_FUNC static EIGEN_CONSTEXPR Index rows(void) EIGEN_NOEXCEPT {return _Rows;}
|
|
263
|
-
EIGEN_DEVICE_FUNC static EIGEN_CONSTEXPR Index cols(void) EIGEN_NOEXCEPT {return _Cols;}
|
|
264
|
-
EIGEN_DEVICE_FUNC void conservativeResize(Index,Index,Index) {}
|
|
265
|
-
EIGEN_DEVICE_FUNC void resize(Index,Index,Index) {}
|
|
266
|
-
EIGEN_DEVICE_FUNC const T *data() const { return m_data.array; }
|
|
267
|
-
EIGEN_DEVICE_FUNC T *data() { return m_data.array; }
|
|
239
|
+
// null matrix variants
|
|
240
|
+
template <typename T, int Rows, int Cols, int Options>
|
|
241
|
+
class DenseStorage_impl<T, 0, Rows, Cols, Options> {
|
|
242
|
+
public:
|
|
243
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage_impl() = default;
|
|
244
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage_impl(const DenseStorage_impl&) = default;
|
|
245
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage_impl(Index /*size*/, Index /*rows*/, Index /*cols*/) {}
|
|
246
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage_impl& operator=(const DenseStorage_impl&) = default;
|
|
247
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr void swap(DenseStorage_impl&) {}
|
|
248
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr void conservativeResize(Index /*size*/, Index /*rows*/,
|
|
249
|
+
Index /*cols*/) {}
|
|
250
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr void resize(Index /*size*/, Index /*rows*/, Index /*cols*/) {}
|
|
251
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr Index rows() const { return Rows; }
|
|
252
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr Index cols() const { return Cols; }
|
|
253
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr Index size() const { return Rows * Cols; }
|
|
254
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr T* data() { return nullptr; }
|
|
255
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr const T* data() const { return nullptr; }
|
|
268
256
|
};
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
257
|
+
template <typename T, int Cols, int Options>
|
|
258
|
+
class DenseStorage_impl<T, 0, Dynamic, Cols, Options> {
|
|
259
|
+
Index m_rows = 0;
|
|
260
|
+
|
|
261
|
+
public:
|
|
262
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage_impl() = default;
|
|
263
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage_impl(const DenseStorage_impl&) = default;
|
|
264
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage_impl(Index /*size*/, Index rows, Index /*cols*/)
|
|
265
|
+
: m_rows(rows) {}
|
|
266
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage_impl& operator=(const DenseStorage_impl&) = default;
|
|
267
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr void swap(DenseStorage_impl& other) noexcept {
|
|
268
|
+
numext::swap(m_rows, other.m_rows);
|
|
269
|
+
}
|
|
270
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr void conservativeResize(Index /*size*/, Index rows, Index /*cols*/) {
|
|
271
|
+
m_rows = rows;
|
|
272
|
+
}
|
|
273
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr void resize(Index /*size*/, Index rows, Index /*cols*/) {
|
|
274
|
+
m_rows = rows;
|
|
275
|
+
}
|
|
276
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr Index rows() const { return m_rows; }
|
|
277
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr Index cols() const { return Cols; }
|
|
278
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr Index size() const { return m_rows * Cols; }
|
|
279
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr T* data() { return nullptr; }
|
|
280
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr const T* data() const { return nullptr; }
|
|
286
281
|
};
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
{
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
internal::plain_array_helper::copy(other.m_data, m_rows * m_cols, m_data);
|
|
312
|
-
}
|
|
313
|
-
EIGEN_DEVICE_FUNC DenseStorage& operator=(const DenseStorage& other)
|
|
314
|
-
{
|
|
315
|
-
if (this != &other)
|
|
316
|
-
{
|
|
317
|
-
m_rows = other.m_rows;
|
|
318
|
-
m_cols = other.m_cols;
|
|
319
|
-
internal::plain_array_helper::copy(other.m_data, m_rows * m_cols, m_data);
|
|
320
|
-
}
|
|
321
|
-
return *this;
|
|
322
|
-
}
|
|
323
|
-
EIGEN_DEVICE_FUNC DenseStorage(Index, Index rows, Index cols) : m_rows(rows), m_cols(cols) {}
|
|
324
|
-
EIGEN_DEVICE_FUNC void swap(DenseStorage& other)
|
|
325
|
-
{
|
|
326
|
-
internal::plain_array_helper::swap(m_data, m_rows * m_cols, other.m_data, other.m_rows * other.m_cols);
|
|
327
|
-
numext::swap(m_rows,other.m_rows);
|
|
328
|
-
numext::swap(m_cols,other.m_cols);
|
|
329
|
-
}
|
|
330
|
-
EIGEN_DEVICE_FUNC Index rows() const {return m_rows;}
|
|
331
|
-
EIGEN_DEVICE_FUNC Index cols() const {return m_cols;}
|
|
332
|
-
EIGEN_DEVICE_FUNC void conservativeResize(Index, Index rows, Index cols) { m_rows = rows; m_cols = cols; }
|
|
333
|
-
EIGEN_DEVICE_FUNC void resize(Index, Index rows, Index cols) { m_rows = rows; m_cols = cols; }
|
|
334
|
-
EIGEN_DEVICE_FUNC const T *data() const { return m_data.array; }
|
|
335
|
-
EIGEN_DEVICE_FUNC T *data() { return m_data.array; }
|
|
282
|
+
template <typename T, int Rows, int Options>
|
|
283
|
+
class DenseStorage_impl<T, 0, Rows, Dynamic, Options> {
|
|
284
|
+
Index m_cols = 0;
|
|
285
|
+
|
|
286
|
+
public:
|
|
287
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage_impl() = default;
|
|
288
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage_impl(const DenseStorage_impl&) = default;
|
|
289
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage_impl(Index /*size*/, Index /*rows*/, Index cols)
|
|
290
|
+
: m_cols(cols) {}
|
|
291
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage_impl& operator=(const DenseStorage_impl&) = default;
|
|
292
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr void swap(DenseStorage_impl& other) noexcept {
|
|
293
|
+
numext::swap(m_cols, other.m_cols);
|
|
294
|
+
}
|
|
295
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr void conservativeResize(Index /*size*/, Index /*rows*/, Index cols) {
|
|
296
|
+
m_cols = cols;
|
|
297
|
+
}
|
|
298
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr void resize(Index /*size*/, Index /*rows*/, Index cols) {
|
|
299
|
+
m_cols = cols;
|
|
300
|
+
}
|
|
301
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr Index rows() const { return Rows; }
|
|
302
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr Index cols() const { return m_cols; }
|
|
303
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr Index size() const { return Rows * m_cols; }
|
|
304
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr T* data() { return nullptr; }
|
|
305
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr const T* data() const { return nullptr; }
|
|
336
306
|
};
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
:
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
internal::plain_array_helper::swap(m_data, m_rows * _Cols, other.m_data, other.m_rows * _Cols);
|
|
366
|
-
numext::swap(m_rows, other.m_rows);
|
|
367
|
-
}
|
|
368
|
-
EIGEN_DEVICE_FUNC Index rows(void) const EIGEN_NOEXCEPT {return m_rows;}
|
|
369
|
-
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Index cols(void) const EIGEN_NOEXCEPT {return _Cols;}
|
|
370
|
-
EIGEN_DEVICE_FUNC void conservativeResize(Index, Index rows, Index) { m_rows = rows; }
|
|
371
|
-
EIGEN_DEVICE_FUNC void resize(Index, Index rows, Index) { m_rows = rows; }
|
|
372
|
-
EIGEN_DEVICE_FUNC const T *data() const { return m_data.array; }
|
|
373
|
-
EIGEN_DEVICE_FUNC T *data() { return m_data.array; }
|
|
307
|
+
template <typename T, int Options>
|
|
308
|
+
class DenseStorage_impl<T, 0, Dynamic, Dynamic, Options> {
|
|
309
|
+
Index m_rows = 0;
|
|
310
|
+
Index m_cols = 0;
|
|
311
|
+
|
|
312
|
+
public:
|
|
313
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage_impl() = default;
|
|
314
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage_impl(const DenseStorage_impl&) = default;
|
|
315
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage_impl(Index /*size*/, Index rows, Index cols)
|
|
316
|
+
: m_rows(rows), m_cols(cols) {}
|
|
317
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage_impl& operator=(const DenseStorage_impl&) = default;
|
|
318
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr void swap(DenseStorage_impl& other) noexcept {
|
|
319
|
+
numext::swap(m_rows, other.m_rows);
|
|
320
|
+
numext::swap(m_cols, other.m_cols);
|
|
321
|
+
}
|
|
322
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr void conservativeResize(Index /*size*/, Index rows, Index cols) {
|
|
323
|
+
m_rows = rows;
|
|
324
|
+
m_cols = cols;
|
|
325
|
+
}
|
|
326
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr void resize(Index /*size*/, Index rows, Index cols) {
|
|
327
|
+
m_rows = rows;
|
|
328
|
+
m_cols = cols;
|
|
329
|
+
}
|
|
330
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr Index rows() const { return m_rows; }
|
|
331
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr Index cols() const { return m_cols; }
|
|
332
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr Index size() const { return m_rows * m_cols; }
|
|
333
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr T* data() { return nullptr; }
|
|
334
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr const T* data() const { return nullptr; }
|
|
374
335
|
};
|
|
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
|
-
|
|
336
|
+
// fixed-size matrix with dynamic memory allocation not currently supported
|
|
337
|
+
template <typename T, int Rows, int Cols, int Options>
|
|
338
|
+
class DenseStorage_impl<T, Dynamic, Rows, Cols, Options> {};
|
|
339
|
+
// dynamic-sized variants
|
|
340
|
+
template <typename T, int Cols, int Options>
|
|
341
|
+
class DenseStorage_impl<T, Dynamic, Dynamic, Cols, Options> {
|
|
342
|
+
static constexpr bool Align = (Options & DontAlign) == 0;
|
|
343
|
+
T* m_data = nullptr;
|
|
344
|
+
Index m_rows = 0;
|
|
345
|
+
|
|
346
|
+
public:
|
|
347
|
+
static constexpr int Size = Dynamic;
|
|
348
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage_impl() = default;
|
|
349
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage_impl(const DenseStorage_impl& other)
|
|
350
|
+
: m_data(conditional_aligned_new_auto<T, Align>(other.size())), m_rows(other.m_rows) {
|
|
351
|
+
EIGEN_INTERNAL_DENSE_STORAGE_CTOR_PLUGIN(Index size = other.size())
|
|
352
|
+
smart_copy(other.m_data, other.m_data + other.size(), m_data);
|
|
353
|
+
}
|
|
354
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage_impl(Index size, Index rows, Index /*cols*/)
|
|
355
|
+
: m_data(conditional_aligned_new_auto<T, Align>(size)), m_rows(rows) {
|
|
356
|
+
EIGEN_INTERNAL_DENSE_STORAGE_CTOR_PLUGIN({})
|
|
357
|
+
}
|
|
358
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage_impl(DenseStorage_impl&& other) noexcept
|
|
359
|
+
: m_data(other.m_data), m_rows(other.m_rows) {
|
|
360
|
+
other.m_data = nullptr;
|
|
361
|
+
other.m_rows = 0;
|
|
362
|
+
}
|
|
363
|
+
EIGEN_DEVICE_FUNC ~DenseStorage_impl() { conditional_aligned_delete_auto<T, Align>(m_data, size()); }
|
|
364
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage_impl& operator=(const DenseStorage_impl& other) {
|
|
365
|
+
resize(other.size(), other.rows(), other.cols());
|
|
366
|
+
smart_copy(other.m_data, other.m_data + other.size(), m_data);
|
|
367
|
+
return *this;
|
|
368
|
+
}
|
|
369
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage_impl& operator=(DenseStorage_impl&& other) noexcept {
|
|
370
|
+
this->swap(other);
|
|
371
|
+
return *this;
|
|
372
|
+
}
|
|
373
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr void swap(DenseStorage_impl& other) noexcept {
|
|
374
|
+
numext::swap(m_data, other.m_data);
|
|
375
|
+
numext::swap(m_rows, other.m_rows);
|
|
376
|
+
}
|
|
377
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr void conservativeResize(Index size, Index rows, Index /*cols*/) {
|
|
378
|
+
m_data = conditional_aligned_realloc_new_auto<T, Align>(m_data, size, this->size());
|
|
379
|
+
m_rows = rows;
|
|
380
|
+
}
|
|
381
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr void resize(Index size, Index rows, Index /*cols*/) {
|
|
382
|
+
Index oldSize = this->size();
|
|
383
|
+
if (oldSize != size) {
|
|
384
|
+
conditional_aligned_delete_auto<T, Align>(m_data, oldSize);
|
|
385
|
+
m_data = conditional_aligned_new_auto<T, Align>(size);
|
|
386
|
+
EIGEN_INTERNAL_DENSE_STORAGE_CTOR_PLUGIN({})
|
|
403
387
|
}
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
388
|
+
m_rows = rows;
|
|
389
|
+
}
|
|
390
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr Index rows() const { return m_rows; }
|
|
391
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr Index cols() const { return Cols; }
|
|
392
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr Index size() const { return m_rows * Cols; }
|
|
393
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr T* data() { return m_data; }
|
|
394
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr const T* data() const { return m_data; }
|
|
410
395
|
};
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
396
|
+
template <typename T, int Rows, int Options>
|
|
397
|
+
class DenseStorage_impl<T, Dynamic, Rows, Dynamic, Options> {
|
|
398
|
+
static constexpr bool Align = (Options & DontAlign) == 0;
|
|
399
|
+
T* m_data = nullptr;
|
|
400
|
+
Index m_cols = 0;
|
|
401
|
+
|
|
402
|
+
public:
|
|
403
|
+
static constexpr int Size = Dynamic;
|
|
404
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage_impl() = default;
|
|
405
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage_impl(const DenseStorage_impl& other)
|
|
406
|
+
: m_data(conditional_aligned_new_auto<T, Align>(other.size())), m_cols(other.m_cols) {
|
|
407
|
+
EIGEN_INTERNAL_DENSE_STORAGE_CTOR_PLUGIN(Index size = other.size())
|
|
408
|
+
smart_copy(other.m_data, other.m_data + other.size(), m_data);
|
|
409
|
+
}
|
|
410
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage_impl(Index size, Index /*rows*/, Index cols)
|
|
411
|
+
: m_data(conditional_aligned_new_auto<T, Align>(size)), m_cols(cols) {
|
|
412
|
+
EIGEN_INTERNAL_DENSE_STORAGE_CTOR_PLUGIN({})
|
|
413
|
+
}
|
|
414
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage_impl(DenseStorage_impl&& other) noexcept
|
|
415
|
+
: m_data(other.m_data), m_cols(other.m_cols) {
|
|
416
|
+
other.m_data = nullptr;
|
|
417
|
+
other.m_cols = 0;
|
|
418
|
+
}
|
|
419
|
+
EIGEN_DEVICE_FUNC ~DenseStorage_impl() { conditional_aligned_delete_auto<T, Align>(m_data, size()); }
|
|
420
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage_impl& operator=(const DenseStorage_impl& other) {
|
|
421
|
+
resize(other.size(), other.rows(), other.cols());
|
|
422
|
+
smart_copy(other.m_data, other.m_data + other.size(), m_data);
|
|
423
|
+
return *this;
|
|
424
|
+
}
|
|
425
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage_impl& operator=(DenseStorage_impl&& other) noexcept {
|
|
426
|
+
this->swap(other);
|
|
427
|
+
return *this;
|
|
428
|
+
}
|
|
429
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr void swap(DenseStorage_impl& other) noexcept {
|
|
430
|
+
numext::swap(m_data, other.m_data);
|
|
431
|
+
numext::swap(m_cols, other.m_cols);
|
|
432
|
+
}
|
|
433
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr void conservativeResize(Index size, Index /*rows*/, Index cols) {
|
|
434
|
+
m_data = conditional_aligned_realloc_new_auto<T, Align>(m_data, size, this->size());
|
|
435
|
+
m_cols = cols;
|
|
436
|
+
}
|
|
437
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr void resize(Index size, Index /*rows*/, Index cols) {
|
|
438
|
+
Index oldSize = this->size();
|
|
439
|
+
if (oldSize != size) {
|
|
440
|
+
conditional_aligned_delete_auto<T, Align>(m_data, oldSize);
|
|
441
|
+
m_data = conditional_aligned_new_auto<T, Align>(size);
|
|
425
442
|
EIGEN_INTERNAL_DENSE_STORAGE_CTOR_PLUGIN({})
|
|
426
|
-
eigen_internal_assert(size==rows*cols && rows>=0 && cols >=0);
|
|
427
|
-
}
|
|
428
|
-
EIGEN_DEVICE_FUNC DenseStorage(const DenseStorage& other)
|
|
429
|
-
: m_data(internal::conditional_aligned_new_auto<T,(_Options&DontAlign)==0>(other.m_rows*other.m_cols))
|
|
430
|
-
, m_rows(other.m_rows)
|
|
431
|
-
, m_cols(other.m_cols)
|
|
432
|
-
{
|
|
433
|
-
EIGEN_INTERNAL_DENSE_STORAGE_CTOR_PLUGIN(Index size = m_rows*m_cols)
|
|
434
|
-
internal::smart_copy(other.m_data, other.m_data+other.m_rows*other.m_cols, m_data);
|
|
435
|
-
}
|
|
436
|
-
EIGEN_DEVICE_FUNC DenseStorage& operator=(const DenseStorage& other)
|
|
437
|
-
{
|
|
438
|
-
if (this != &other)
|
|
439
|
-
{
|
|
440
|
-
DenseStorage tmp(other);
|
|
441
|
-
this->swap(tmp);
|
|
442
|
-
}
|
|
443
|
-
return *this;
|
|
444
|
-
}
|
|
445
|
-
#if EIGEN_HAS_RVALUE_REFERENCES
|
|
446
|
-
EIGEN_DEVICE_FUNC
|
|
447
|
-
DenseStorage(DenseStorage&& other) EIGEN_NOEXCEPT
|
|
448
|
-
: m_data(std::move(other.m_data))
|
|
449
|
-
, m_rows(std::move(other.m_rows))
|
|
450
|
-
, m_cols(std::move(other.m_cols))
|
|
451
|
-
{
|
|
452
|
-
other.m_data = nullptr;
|
|
453
|
-
other.m_rows = 0;
|
|
454
|
-
other.m_cols = 0;
|
|
455
443
|
}
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
}
|
|
464
|
-
#endif
|
|
465
|
-
EIGEN_DEVICE_FUNC ~DenseStorage() { internal::conditional_aligned_delete_auto<T,(_Options&DontAlign)==0>(m_data, m_rows*m_cols); }
|
|
466
|
-
EIGEN_DEVICE_FUNC void swap(DenseStorage& other)
|
|
467
|
-
{
|
|
468
|
-
numext::swap(m_data,other.m_data);
|
|
469
|
-
numext::swap(m_rows,other.m_rows);
|
|
470
|
-
numext::swap(m_cols,other.m_cols);
|
|
471
|
-
}
|
|
472
|
-
EIGEN_DEVICE_FUNC Index rows(void) const EIGEN_NOEXCEPT {return m_rows;}
|
|
473
|
-
EIGEN_DEVICE_FUNC Index cols(void) const EIGEN_NOEXCEPT {return m_cols;}
|
|
474
|
-
void conservativeResize(Index size, Index rows, Index cols)
|
|
475
|
-
{
|
|
476
|
-
m_data = internal::conditional_aligned_realloc_new_auto<T,(_Options&DontAlign)==0>(m_data, size, m_rows*m_cols);
|
|
477
|
-
m_rows = rows;
|
|
478
|
-
m_cols = cols;
|
|
479
|
-
}
|
|
480
|
-
EIGEN_DEVICE_FUNC void resize(Index size, Index rows, Index cols)
|
|
481
|
-
{
|
|
482
|
-
if(size != m_rows*m_cols)
|
|
483
|
-
{
|
|
484
|
-
internal::conditional_aligned_delete_auto<T,(_Options&DontAlign)==0>(m_data, m_rows*m_cols);
|
|
485
|
-
if (size>0) // >0 and not simply !=0 to let the compiler knows that size cannot be negative
|
|
486
|
-
m_data = internal::conditional_aligned_new_auto<T,(_Options&DontAlign)==0>(size);
|
|
487
|
-
else
|
|
488
|
-
m_data = 0;
|
|
489
|
-
EIGEN_INTERNAL_DENSE_STORAGE_CTOR_PLUGIN({})
|
|
490
|
-
}
|
|
491
|
-
m_rows = rows;
|
|
492
|
-
m_cols = cols;
|
|
493
|
-
}
|
|
494
|
-
EIGEN_DEVICE_FUNC const T *data() const { return m_data; }
|
|
495
|
-
EIGEN_DEVICE_FUNC T *data() { return m_data; }
|
|
444
|
+
m_cols = cols;
|
|
445
|
+
}
|
|
446
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr Index rows() const { return Rows; }
|
|
447
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr Index cols() const { return m_cols; }
|
|
448
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr Index size() const { return Rows * m_cols; }
|
|
449
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr T* data() { return m_data; }
|
|
450
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr const T* data() const { return m_data; }
|
|
496
451
|
};
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
452
|
+
template <typename T, int Options>
|
|
453
|
+
class DenseStorage_impl<T, Dynamic, Dynamic, Dynamic, Options> {
|
|
454
|
+
static constexpr bool Align = (Options & DontAlign) == 0;
|
|
455
|
+
T* m_data = nullptr;
|
|
456
|
+
Index m_rows = 0;
|
|
457
|
+
Index m_cols = 0;
|
|
458
|
+
|
|
459
|
+
public:
|
|
460
|
+
static constexpr int Size = Dynamic;
|
|
461
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage_impl() = default;
|
|
462
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage_impl(const DenseStorage_impl& other)
|
|
463
|
+
: m_data(conditional_aligned_new_auto<T, Align>(other.size())), m_rows(other.m_rows), m_cols(other.m_cols) {
|
|
464
|
+
EIGEN_INTERNAL_DENSE_STORAGE_CTOR_PLUGIN(Index size = other.size())
|
|
465
|
+
smart_copy(other.m_data, other.m_data + other.size(), m_data);
|
|
466
|
+
}
|
|
467
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage_impl(Index size, Index rows, Index cols)
|
|
468
|
+
: m_data(conditional_aligned_new_auto<T, Align>(size)), m_rows(rows), m_cols(cols) {
|
|
469
|
+
EIGEN_INTERNAL_DENSE_STORAGE_CTOR_PLUGIN({})
|
|
470
|
+
}
|
|
471
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage_impl(DenseStorage_impl&& other) noexcept
|
|
472
|
+
: m_data(other.m_data), m_rows(other.m_rows), m_cols(other.m_cols) {
|
|
473
|
+
other.m_data = nullptr;
|
|
474
|
+
other.m_rows = 0;
|
|
475
|
+
other.m_cols = 0;
|
|
476
|
+
}
|
|
477
|
+
EIGEN_DEVICE_FUNC ~DenseStorage_impl() { conditional_aligned_delete_auto<T, Align>(m_data, size()); }
|
|
478
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage_impl& operator=(const DenseStorage_impl& other) {
|
|
479
|
+
resize(other.size(), other.rows(), other.cols());
|
|
480
|
+
smart_copy(other.m_data, other.m_data + other.size(), m_data);
|
|
481
|
+
return *this;
|
|
482
|
+
}
|
|
483
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage_impl& operator=(DenseStorage_impl&& other) noexcept {
|
|
484
|
+
this->swap(other);
|
|
485
|
+
return *this;
|
|
486
|
+
}
|
|
487
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr void swap(DenseStorage_impl& other) noexcept {
|
|
488
|
+
numext::swap(m_data, other.m_data);
|
|
489
|
+
numext::swap(m_rows, other.m_rows);
|
|
490
|
+
numext::swap(m_cols, other.m_cols);
|
|
491
|
+
}
|
|
492
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr void conservativeResize(Index size, Index rows, Index cols) {
|
|
493
|
+
m_data = conditional_aligned_realloc_new_auto<T, Align>(m_data, size, this->size());
|
|
494
|
+
m_rows = rows;
|
|
495
|
+
m_cols = cols;
|
|
496
|
+
}
|
|
497
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr void resize(Index size, Index rows, Index cols) {
|
|
498
|
+
Index oldSize = this->size();
|
|
499
|
+
if (oldSize != size) {
|
|
500
|
+
conditional_aligned_delete_auto<T, Align>(m_data, oldSize);
|
|
501
|
+
m_data = conditional_aligned_new_auto<T, Align>(size);
|
|
508
502
|
EIGEN_INTERNAL_DENSE_STORAGE_CTOR_PLUGIN({})
|
|
509
|
-
eigen_internal_assert(size==rows*cols && rows==_Rows && cols >=0);
|
|
510
|
-
EIGEN_UNUSED_VARIABLE(rows);
|
|
511
|
-
}
|
|
512
|
-
EIGEN_DEVICE_FUNC DenseStorage(const DenseStorage& other)
|
|
513
|
-
: m_data(internal::conditional_aligned_new_auto<T,(_Options&DontAlign)==0>(_Rows*other.m_cols))
|
|
514
|
-
, m_cols(other.m_cols)
|
|
515
|
-
{
|
|
516
|
-
EIGEN_INTERNAL_DENSE_STORAGE_CTOR_PLUGIN(Index size = m_cols*_Rows)
|
|
517
|
-
internal::smart_copy(other.m_data, other.m_data+_Rows*m_cols, m_data);
|
|
518
503
|
}
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
other.m_data = nullptr;
|
|
535
|
-
other.m_cols = 0;
|
|
536
|
-
}
|
|
537
|
-
EIGEN_DEVICE_FUNC
|
|
538
|
-
DenseStorage& operator=(DenseStorage&& other) EIGEN_NOEXCEPT
|
|
539
|
-
{
|
|
540
|
-
numext::swap(m_data, other.m_data);
|
|
541
|
-
numext::swap(m_cols, other.m_cols);
|
|
542
|
-
return *this;
|
|
543
|
-
}
|
|
544
|
-
#endif
|
|
545
|
-
EIGEN_DEVICE_FUNC ~DenseStorage() { internal::conditional_aligned_delete_auto<T,(_Options&DontAlign)==0>(m_data, _Rows*m_cols); }
|
|
546
|
-
EIGEN_DEVICE_FUNC void swap(DenseStorage& other) {
|
|
547
|
-
numext::swap(m_data,other.m_data);
|
|
548
|
-
numext::swap(m_cols,other.m_cols);
|
|
549
|
-
}
|
|
550
|
-
EIGEN_DEVICE_FUNC static EIGEN_CONSTEXPR Index rows(void) EIGEN_NOEXCEPT {return _Rows;}
|
|
551
|
-
EIGEN_DEVICE_FUNC Index cols(void) const EIGEN_NOEXCEPT {return m_cols;}
|
|
552
|
-
EIGEN_DEVICE_FUNC void conservativeResize(Index size, Index, Index cols)
|
|
553
|
-
{
|
|
554
|
-
m_data = internal::conditional_aligned_realloc_new_auto<T,(_Options&DontAlign)==0>(m_data, size, _Rows*m_cols);
|
|
555
|
-
m_cols = cols;
|
|
556
|
-
}
|
|
557
|
-
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void resize(Index size, Index, Index cols)
|
|
558
|
-
{
|
|
559
|
-
if(size != _Rows*m_cols)
|
|
560
|
-
{
|
|
561
|
-
internal::conditional_aligned_delete_auto<T,(_Options&DontAlign)==0>(m_data, _Rows*m_cols);
|
|
562
|
-
if (size>0) // >0 and not simply !=0 to let the compiler knows that size cannot be negative
|
|
563
|
-
m_data = internal::conditional_aligned_new_auto<T,(_Options&DontAlign)==0>(size);
|
|
564
|
-
else
|
|
565
|
-
m_data = 0;
|
|
566
|
-
EIGEN_INTERNAL_DENSE_STORAGE_CTOR_PLUGIN({})
|
|
567
|
-
}
|
|
568
|
-
m_cols = cols;
|
|
569
|
-
}
|
|
570
|
-
EIGEN_DEVICE_FUNC const T *data() const { return m_data; }
|
|
571
|
-
EIGEN_DEVICE_FUNC T *data() { return m_data; }
|
|
504
|
+
m_rows = rows;
|
|
505
|
+
m_cols = cols;
|
|
506
|
+
}
|
|
507
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr Index rows() const { return m_rows; }
|
|
508
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr Index cols() const { return m_cols; }
|
|
509
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr Index size() const { return m_rows * m_cols; }
|
|
510
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr T* data() { return m_data; }
|
|
511
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr const T* data() const { return m_data; }
|
|
512
|
+
};
|
|
513
|
+
template <typename T, int Size, int Rows, int Cols>
|
|
514
|
+
struct use_default_move {
|
|
515
|
+
static constexpr bool DynamicObject = Size == Dynamic;
|
|
516
|
+
static constexpr bool TrivialObject =
|
|
517
|
+
(!NumTraits<T>::RequireInitialization) && (Rows >= 0) && (Cols >= 0) && (Size == Rows * Cols);
|
|
518
|
+
static constexpr bool value = DynamicObject || TrivialObject;
|
|
572
519
|
};
|
|
520
|
+
} // end namespace internal
|
|
573
521
|
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
EIGEN_DEVICE_FUNC ~DenseStorage() { internal::conditional_aligned_delete_auto<T,(_Options&DontAlign)==0>(m_data, _Cols*m_rows); }
|
|
622
|
-
EIGEN_DEVICE_FUNC void swap(DenseStorage& other) {
|
|
623
|
-
numext::swap(m_data,other.m_data);
|
|
624
|
-
numext::swap(m_rows,other.m_rows);
|
|
625
|
-
}
|
|
626
|
-
EIGEN_DEVICE_FUNC Index rows(void) const EIGEN_NOEXCEPT {return m_rows;}
|
|
627
|
-
EIGEN_DEVICE_FUNC static EIGEN_CONSTEXPR Index cols(void) {return _Cols;}
|
|
628
|
-
void conservativeResize(Index size, Index rows, Index)
|
|
629
|
-
{
|
|
630
|
-
m_data = internal::conditional_aligned_realloc_new_auto<T,(_Options&DontAlign)==0>(m_data, size, m_rows*_Cols);
|
|
631
|
-
m_rows = rows;
|
|
632
|
-
}
|
|
633
|
-
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void resize(Index size, Index rows, Index)
|
|
634
|
-
{
|
|
635
|
-
if(size != m_rows*_Cols)
|
|
636
|
-
{
|
|
637
|
-
internal::conditional_aligned_delete_auto<T,(_Options&DontAlign)==0>(m_data, _Cols*m_rows);
|
|
638
|
-
if (size>0) // >0 and not simply !=0 to let the compiler knows that size cannot be negative
|
|
639
|
-
m_data = internal::conditional_aligned_new_auto<T,(_Options&DontAlign)==0>(size);
|
|
640
|
-
else
|
|
641
|
-
m_data = 0;
|
|
642
|
-
EIGEN_INTERNAL_DENSE_STORAGE_CTOR_PLUGIN({})
|
|
643
|
-
}
|
|
644
|
-
m_rows = rows;
|
|
645
|
-
}
|
|
646
|
-
EIGEN_DEVICE_FUNC const T *data() const { return m_data; }
|
|
647
|
-
EIGEN_DEVICE_FUNC T *data() { return m_data; }
|
|
522
|
+
/** \internal
|
|
523
|
+
*
|
|
524
|
+
* \class DenseStorage_impl
|
|
525
|
+
* \ingroup Core_Module
|
|
526
|
+
*
|
|
527
|
+
* \brief Stores the data of a matrix
|
|
528
|
+
*
|
|
529
|
+
* This class stores the data of fixed-size, dynamic-size or mixed matrices
|
|
530
|
+
* in a way as compact as possible.
|
|
531
|
+
*
|
|
532
|
+
* \sa Matrix
|
|
533
|
+
*/
|
|
534
|
+
template <typename T, int Size, int Rows, int Cols, int Options,
|
|
535
|
+
bool Trivial = internal::use_default_move<T, Size, Rows, Cols>::value>
|
|
536
|
+
class DenseStorage : public internal::DenseStorage_impl<T, Size, Rows, Cols, Options> {
|
|
537
|
+
using Base = internal::DenseStorage_impl<T, Size, Rows, Cols, Options>;
|
|
538
|
+
|
|
539
|
+
public:
|
|
540
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage() = default;
|
|
541
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage(const DenseStorage&) = default;
|
|
542
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage(Index size, Index rows, Index cols)
|
|
543
|
+
: Base(size, rows, cols) {}
|
|
544
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage& operator=(const DenseStorage&) = default;
|
|
545
|
+
// if DenseStorage meets the requirements of use_default_move, then use the move construction and move assignment
|
|
546
|
+
// operation defined in DenseStorage_impl, or the compiler-generated version if none is defined
|
|
547
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage(DenseStorage&&) = default;
|
|
548
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage& operator=(DenseStorage&&) = default;
|
|
549
|
+
};
|
|
550
|
+
template <typename T, int Size, int Rows, int Cols, int Options>
|
|
551
|
+
class DenseStorage<T, Size, Rows, Cols, Options, false>
|
|
552
|
+
: public internal::DenseStorage_impl<T, Size, Rows, Cols, Options> {
|
|
553
|
+
using Base = internal::DenseStorage_impl<T, Size, Rows, Cols, Options>;
|
|
554
|
+
|
|
555
|
+
public:
|
|
556
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage() = default;
|
|
557
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage(const DenseStorage&) = default;
|
|
558
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage(Index size, Index rows, Index cols)
|
|
559
|
+
: Base(size, rows, cols) {}
|
|
560
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage& operator=(const DenseStorage&) = default;
|
|
561
|
+
// if DenseStorage does not meet the requirements of use_default_move, then defer to the copy construction and copy
|
|
562
|
+
// assignment behavior
|
|
563
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage(DenseStorage&& other)
|
|
564
|
+
: DenseStorage(static_cast<const DenseStorage&>(other)) {}
|
|
565
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr DenseStorage& operator=(DenseStorage&& other) {
|
|
566
|
+
*this = other;
|
|
567
|
+
return *this;
|
|
568
|
+
}
|
|
648
569
|
};
|
|
649
570
|
|
|
650
|
-
}
|
|
571
|
+
} // end namespace Eigen
|
|
651
572
|
|
|
652
|
-
#endif
|
|
573
|
+
#endif // EIGEN_MATRIX_H
|