@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,531 +11,502 @@
|
|
|
11
11
|
#ifndef EIGEN_MATRIX_H
|
|
12
12
|
#define EIGEN_MATRIX_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<Matrix<
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
typedef typename find_best_packet<_Scalar,size>::type PacketScalar;
|
|
20
|
+
template <typename Scalar_, int Rows_, int Cols_, int Options_, int MaxRows_, int MaxCols_>
|
|
21
|
+
struct traits<Matrix<Scalar_, Rows_, Cols_, Options_, MaxRows_, MaxCols_>> {
|
|
22
|
+
private:
|
|
23
|
+
constexpr static int size = internal::size_at_compile_time(Rows_, Cols_);
|
|
24
|
+
typedef typename find_best_packet<Scalar_, size>::type PacketScalar;
|
|
23
25
|
enum {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
26
|
+
row_major_bit = Options_ & RowMajor ? RowMajorBit : 0,
|
|
27
|
+
is_dynamic_size_storage = MaxRows_ == Dynamic || MaxCols_ == Dynamic,
|
|
28
|
+
max_size = is_dynamic_size_storage ? Dynamic : MaxRows_ * MaxCols_,
|
|
29
|
+
default_alignment = compute_default_alignment<Scalar_, max_size>::value,
|
|
30
|
+
actual_alignment = ((Options_ & DontAlign) == 0) ? default_alignment : 0,
|
|
31
|
+
required_alignment = unpacket_traits<PacketScalar>::alignment,
|
|
32
|
+
packet_access_bit = (packet_traits<Scalar_>::Vectorizable &&
|
|
33
|
+
(EIGEN_UNALIGNED_VECTORIZE || (int(actual_alignment) >= int(required_alignment))))
|
|
34
|
+
? PacketAccessBit
|
|
35
|
+
: 0
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
public:
|
|
39
|
+
typedef Scalar_ Scalar;
|
|
35
40
|
typedef Dense StorageKind;
|
|
36
41
|
typedef Eigen::Index StorageIndex;
|
|
37
42
|
typedef MatrixXpr XprKind;
|
|
38
43
|
enum {
|
|
39
|
-
RowsAtCompileTime =
|
|
40
|
-
ColsAtCompileTime =
|
|
41
|
-
MaxRowsAtCompileTime =
|
|
42
|
-
MaxColsAtCompileTime =
|
|
43
|
-
Flags = compute_matrix_flags
|
|
44
|
-
Options =
|
|
44
|
+
RowsAtCompileTime = Rows_,
|
|
45
|
+
ColsAtCompileTime = Cols_,
|
|
46
|
+
MaxRowsAtCompileTime = MaxRows_,
|
|
47
|
+
MaxColsAtCompileTime = MaxCols_,
|
|
48
|
+
Flags = compute_matrix_flags(Options_),
|
|
49
|
+
Options = Options_,
|
|
45
50
|
InnerStrideAtCompileTime = 1,
|
|
46
|
-
OuterStrideAtCompileTime = (Options&RowMajor) ? ColsAtCompileTime : RowsAtCompileTime,
|
|
51
|
+
OuterStrideAtCompileTime = (int(Options) & int(RowMajor)) ? ColsAtCompileTime : RowsAtCompileTime,
|
|
47
52
|
|
|
48
53
|
// FIXME, the following flag in only used to define NeedsToAlign in PlainObjectBase
|
|
49
54
|
EvaluatorFlags = LinearAccessBit | DirectAccessBit | packet_access_bit | row_major_bit,
|
|
50
55
|
Alignment = actual_alignment
|
|
51
56
|
};
|
|
52
57
|
};
|
|
53
|
-
}
|
|
58
|
+
} // namespace internal
|
|
54
59
|
|
|
55
60
|
/** \class Matrix
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
*
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
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
|
-
* For fixed-size matrices, does nothing.
|
|
251
|
-
*
|
|
252
|
-
* For dynamic-size matrices, creates an empty matrix of size 0. Does not allocate any array. Such a matrix
|
|
253
|
-
* is called a null matrix. This constructor is the unique way to create null matrices: resizing
|
|
254
|
-
* a matrix to 0 is not supported.
|
|
255
|
-
*
|
|
256
|
-
* \sa resize(Index,Index)
|
|
257
|
-
*/
|
|
258
|
-
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
|
259
|
-
Matrix() : Base()
|
|
260
|
-
{
|
|
261
|
-
Base::_check_template_params();
|
|
262
|
-
EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
// FIXME is it still needed
|
|
266
|
-
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
|
267
|
-
explicit Matrix(internal::constructor_without_unaligned_array_assert)
|
|
268
|
-
: Base(internal::constructor_without_unaligned_array_assert())
|
|
269
|
-
{ Base::_check_template_params(); EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED }
|
|
270
|
-
|
|
271
|
-
#if EIGEN_HAS_RVALUE_REFERENCES
|
|
272
|
-
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
|
273
|
-
Matrix(Matrix&& other) EIGEN_NOEXCEPT_IF(std::is_nothrow_move_constructible<Scalar>::value)
|
|
274
|
-
: Base(std::move(other))
|
|
275
|
-
{
|
|
276
|
-
Base::_check_template_params();
|
|
277
|
-
}
|
|
278
|
-
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
|
279
|
-
Matrix& operator=(Matrix&& other) EIGEN_NOEXCEPT_IF(std::is_nothrow_move_assignable<Scalar>::value)
|
|
280
|
-
{
|
|
281
|
-
Base::operator=(std::move(other));
|
|
282
|
-
return *this;
|
|
283
|
-
}
|
|
61
|
+
* \ingroup Core_Module
|
|
62
|
+
*
|
|
63
|
+
* \brief The matrix class, also used for vectors and row-vectors
|
|
64
|
+
*
|
|
65
|
+
* The %Matrix class is the work-horse for all \em dense (\ref dense "note") matrices and vectors within Eigen.
|
|
66
|
+
* Vectors are matrices with one column, and row-vectors are matrices with one row.
|
|
67
|
+
*
|
|
68
|
+
* The %Matrix class encompasses \em both fixed-size and dynamic-size objects (\ref fixedsize "note").
|
|
69
|
+
*
|
|
70
|
+
* The first three template parameters are required:
|
|
71
|
+
* \tparam Scalar_ Numeric type, e.g. float, double, int or std::complex<float>.
|
|
72
|
+
* User defined scalar types are supported as well (see \ref user_defined_scalars "here").
|
|
73
|
+
* \tparam Rows_ Number of rows, or \b Dynamic
|
|
74
|
+
* \tparam Cols_ Number of columns, or \b Dynamic
|
|
75
|
+
*
|
|
76
|
+
* The remaining template parameters are optional -- in most cases you don't have to worry about them.
|
|
77
|
+
* \tparam Options_ A combination of either \b #RowMajor or \b #ColMajor, and of either
|
|
78
|
+
* \b #AutoAlign or \b #DontAlign.
|
|
79
|
+
* The former controls \ref TopicStorageOrders "storage order", and defaults to column-major. The latter
|
|
80
|
+
* controls alignment, which is required for vectorization. It defaults to aligning matrices except for fixed sizes that
|
|
81
|
+
* aren't a multiple of the packet size. \tparam MaxRows_ Maximum number of rows. Defaults to \a Rows_ (\ref maxrows
|
|
82
|
+
* "note"). \tparam MaxCols_ Maximum number of columns. Defaults to \a Cols_ (\ref maxrows "note").
|
|
83
|
+
*
|
|
84
|
+
* Eigen provides a number of typedefs covering the usual cases. Here are some examples:
|
|
85
|
+
*
|
|
86
|
+
* \li \c Matrix2d is a 2x2 square matrix of doubles (\c Matrix<double, 2, 2>)
|
|
87
|
+
* \li \c Vector4f is a vector of 4 floats (\c Matrix<float, 4, 1>)
|
|
88
|
+
* \li \c RowVector3i is a row-vector of 3 ints (\c Matrix<int, 1, 3>)
|
|
89
|
+
*
|
|
90
|
+
* \li \c MatrixXf is a dynamic-size matrix of floats (\c Matrix<float, Dynamic, Dynamic>)
|
|
91
|
+
* \li \c VectorXf is a dynamic-size vector of floats (\c Matrix<float, Dynamic, 1>)
|
|
92
|
+
*
|
|
93
|
+
* \li \c Matrix2Xf is a partially fixed-size (dynamic-size) matrix of floats (\c Matrix<float, 2, Dynamic>)
|
|
94
|
+
* \li \c MatrixX3d is a partially dynamic-size (fixed-size) matrix of double (\c Matrix<double, Dynamic, 3>)
|
|
95
|
+
*
|
|
96
|
+
* See \link matrixtypedefs this page \endlink for a complete list of predefined \em %Matrix and \em Vector typedefs.
|
|
97
|
+
*
|
|
98
|
+
* You can access elements of vectors and matrices using normal subscripting:
|
|
99
|
+
*
|
|
100
|
+
* \code
|
|
101
|
+
* Eigen::VectorXd v(10);
|
|
102
|
+
* v[0] = 0.1;
|
|
103
|
+
* v[1] = 0.2;
|
|
104
|
+
* v(0) = 0.3;
|
|
105
|
+
* v(1) = 0.4;
|
|
106
|
+
*
|
|
107
|
+
* Eigen::MatrixXi m(10, 10);
|
|
108
|
+
* m(0, 1) = 1;
|
|
109
|
+
* m(0, 2) = 2;
|
|
110
|
+
* m(0, 3) = 3;
|
|
111
|
+
* \endcode
|
|
112
|
+
*
|
|
113
|
+
* This class can be extended with the help of the plugin mechanism described on the page
|
|
114
|
+
* \ref TopicCustomizing_Plugins by defining the preprocessor symbol \c EIGEN_MATRIX_PLUGIN.
|
|
115
|
+
*
|
|
116
|
+
* <i><b>Some notes:</b></i>
|
|
117
|
+
*
|
|
118
|
+
* <dl>
|
|
119
|
+
* <dt><b>\anchor dense Dense versus sparse:</b></dt>
|
|
120
|
+
* <dd>This %Matrix class handles dense, not sparse matrices and vectors. For sparse matrices and vectors, see the
|
|
121
|
+
* Sparse module.
|
|
122
|
+
*
|
|
123
|
+
* Dense matrices and vectors are plain usual arrays of coefficients. All the coefficients are stored, in an ordinary
|
|
124
|
+
* contiguous array. This is unlike Sparse matrices and vectors where the coefficients are stored as a list of nonzero
|
|
125
|
+
* coefficients.</dd>
|
|
126
|
+
*
|
|
127
|
+
* <dt><b>\anchor fixedsize Fixed-size versus dynamic-size:</b></dt>
|
|
128
|
+
* <dd>Fixed-size means that the numbers of rows and columns are known at compile-time. In this case, Eigen allocates
|
|
129
|
+
* the array of coefficients as a fixed-size array, as a class member. This makes sense for very small matrices,
|
|
130
|
+
* typically up to 4x4, sometimes up to 16x16. Larger matrices should be declared as dynamic-size even if one happens to
|
|
131
|
+
* know their size at compile-time.
|
|
132
|
+
*
|
|
133
|
+
* Dynamic-size means that the numbers of rows or columns are not necessarily known at compile-time. In this case they
|
|
134
|
+
* are runtime variables, and the array of coefficients is allocated dynamically on the heap.
|
|
135
|
+
*
|
|
136
|
+
* Note that \em dense matrices, be they Fixed-size or Dynamic-size, <em>do not</em> expand dynamically in the sense of
|
|
137
|
+
* a std::map. If you want this behavior, see the Sparse module.</dd>
|
|
138
|
+
*
|
|
139
|
+
* <dt><b>\anchor maxrows MaxRows_ and MaxCols_:</b></dt>
|
|
140
|
+
* <dd>In most cases, one just leaves these parameters to the default values.
|
|
141
|
+
* These parameters mean the maximum size of rows and columns that the matrix may have. They are useful in cases
|
|
142
|
+
* when the exact numbers of rows and columns are not known at compile-time, but it is known at compile-time that they
|
|
143
|
+
* cannot exceed a certain value. This happens when taking dynamic-size blocks inside fixed-size matrices: in this case
|
|
144
|
+
* MaxRows_ and MaxCols_ are the dimensions of the original matrix, while Rows_ and Cols_ are Dynamic.</dd>
|
|
145
|
+
* </dl>
|
|
146
|
+
*
|
|
147
|
+
* <i><b>ABI and storage layout</b></i>
|
|
148
|
+
*
|
|
149
|
+
* The table below summarizes the ABI of some possible Matrix instances which is fixed thorough the lifetime of Eigen 3.
|
|
150
|
+
* <table class="manual">
|
|
151
|
+
* <tr><th>Matrix type</th><th>Equivalent C structure</th></tr>
|
|
152
|
+
* <tr><td>\code Matrix<T,Dynamic,Dynamic> \endcode</td><td>\code
|
|
153
|
+
* struct {
|
|
154
|
+
* T *data; // with (size_t(data)%EIGEN_MAX_ALIGN_BYTES)==0
|
|
155
|
+
* Eigen::Index rows, cols;
|
|
156
|
+
* };
|
|
157
|
+
* \endcode</td></tr>
|
|
158
|
+
* <tr class="alt"><td>\code
|
|
159
|
+
* Matrix<T,Dynamic,1>
|
|
160
|
+
* Matrix<T,1,Dynamic> \endcode</td><td>\code
|
|
161
|
+
* struct {
|
|
162
|
+
* T *data; // with (size_t(data)%EIGEN_MAX_ALIGN_BYTES)==0
|
|
163
|
+
* Eigen::Index size;
|
|
164
|
+
* };
|
|
165
|
+
* \endcode</td></tr>
|
|
166
|
+
* <tr><td>\code Matrix<T,Rows,Cols> \endcode</td><td>\code
|
|
167
|
+
* struct {
|
|
168
|
+
* T data[Rows*Cols]; // with (size_t(data)%A(Rows*Cols*sizeof(T)))==0
|
|
169
|
+
* };
|
|
170
|
+
* \endcode</td></tr>
|
|
171
|
+
* <tr class="alt"><td>\code Matrix<T,Dynamic,Dynamic,0,MaxRows,MaxCols> \endcode</td><td>\code
|
|
172
|
+
* struct {
|
|
173
|
+
* T data[MaxRows*MaxCols]; // with (size_t(data)%A(MaxRows*MaxCols*sizeof(T)))==0
|
|
174
|
+
* Eigen::Index rows, cols;
|
|
175
|
+
* };
|
|
176
|
+
* \endcode</td></tr>
|
|
177
|
+
* </table>
|
|
178
|
+
* Note that in this table Rows, Cols, MaxRows and MaxCols are all positive integers. A(S) is defined to the largest
|
|
179
|
+
* possible power-of-two smaller to EIGEN_MAX_STATIC_ALIGN_BYTES.
|
|
180
|
+
*
|
|
181
|
+
* \see MatrixBase for the majority of the API methods for matrices, \ref TopicClassHierarchy,
|
|
182
|
+
* \ref TopicStorageOrders
|
|
183
|
+
*/
|
|
184
|
+
|
|
185
|
+
template <typename Scalar_, int Rows_, int Cols_, int Options_, int MaxRows_, int MaxCols_>
|
|
186
|
+
class Matrix : public PlainObjectBase<Matrix<Scalar_, Rows_, Cols_, Options_, MaxRows_, MaxCols_>> {
|
|
187
|
+
public:
|
|
188
|
+
/** \brief Base class typedef.
|
|
189
|
+
* \sa PlainObjectBase
|
|
190
|
+
*/
|
|
191
|
+
typedef PlainObjectBase<Matrix> Base;
|
|
192
|
+
|
|
193
|
+
enum { Options = Options_ };
|
|
194
|
+
|
|
195
|
+
EIGEN_DENSE_PUBLIC_INTERFACE(Matrix)
|
|
196
|
+
|
|
197
|
+
typedef typename Base::PlainObject PlainObject;
|
|
198
|
+
|
|
199
|
+
using Base::base;
|
|
200
|
+
using Base::coeffRef;
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* \brief Assigns matrices to each other.
|
|
204
|
+
*
|
|
205
|
+
* \note This is a special case of the templated operator=. Its purpose is
|
|
206
|
+
* to prevent a default operator= from hiding the templated operator=.
|
|
207
|
+
*
|
|
208
|
+
* \callgraph
|
|
209
|
+
*/
|
|
210
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr Matrix& operator=(const Matrix& other) { return Base::_set(other); }
|
|
211
|
+
|
|
212
|
+
/** \internal
|
|
213
|
+
* \brief Copies the value of the expression \a other into \c *this with automatic resizing.
|
|
214
|
+
*
|
|
215
|
+
* *this might be resized to match the dimensions of \a other. If *this was a null matrix (not already initialized),
|
|
216
|
+
* it will be initialized.
|
|
217
|
+
*
|
|
218
|
+
* Note that copying a row-vector into a vector (and conversely) is allowed.
|
|
219
|
+
* The resizing, if any, is then done in the appropriate way so that row-vectors
|
|
220
|
+
* remain row-vectors and vectors remain vectors.
|
|
221
|
+
*/
|
|
222
|
+
template <typename OtherDerived>
|
|
223
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Matrix& operator=(const DenseBase<OtherDerived>& other) {
|
|
224
|
+
return Base::_set(other);
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
/**
|
|
228
|
+
* \brief Copies the generic expression \a other into *this.
|
|
229
|
+
* \copydetails DenseBase::operator=(const EigenBase<OtherDerived> &other)
|
|
230
|
+
*/
|
|
231
|
+
template <typename OtherDerived>
|
|
232
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Matrix& operator=(const EigenBase<OtherDerived>& other) {
|
|
233
|
+
return Base::operator=(other);
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
template <typename OtherDerived>
|
|
237
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Matrix& operator=(const ReturnByValue<OtherDerived>& func) {
|
|
238
|
+
return Base::operator=(func);
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
/** \brief Default constructor.
|
|
242
|
+
*
|
|
243
|
+
* For fixed-size matrices, does nothing.
|
|
244
|
+
*
|
|
245
|
+
* For dynamic-size matrices, creates an empty matrix of size 0. Does not allocate any array. Such a matrix
|
|
246
|
+
* is called a null matrix. This constructor is the unique way to create null matrices: resizing
|
|
247
|
+
* a matrix to 0 is not supported.
|
|
248
|
+
*
|
|
249
|
+
* \sa resize(Index,Index)
|
|
250
|
+
*/
|
|
251
|
+
#if defined(EIGEN_INITIALIZE_COEFFS)
|
|
252
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr Matrix() { EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED }
|
|
253
|
+
#else
|
|
254
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr Matrix() = default;
|
|
284
255
|
#endif
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
256
|
+
/** \brief Move constructor */
|
|
257
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr Matrix(Matrix&&) = default;
|
|
258
|
+
/** \brief Moves the matrix into the other one.
|
|
259
|
+
*
|
|
260
|
+
*/
|
|
261
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr Matrix& operator=(Matrix&& other) noexcept(
|
|
262
|
+
std::is_nothrow_move_assignable<Scalar>::value) {
|
|
263
|
+
Base::operator=(std::move(other));
|
|
264
|
+
return *this;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
/** \brief Construct a row of column vector with fixed size from an arbitrary number of coefficients.
|
|
268
|
+
*
|
|
269
|
+
* \only_for_vectors
|
|
270
|
+
*
|
|
271
|
+
* This constructor is for 1D array or vectors with more than 4 coefficients.
|
|
272
|
+
*
|
|
273
|
+
* \warning To construct a column (resp. row) vector of fixed length, the number of values passed to this
|
|
274
|
+
* constructor must match the the fixed number of rows (resp. columns) of \c *this.
|
|
275
|
+
*
|
|
276
|
+
*
|
|
277
|
+
* Example: \include Matrix_variadic_ctor_cxx11.cpp
|
|
278
|
+
* Output: \verbinclude Matrix_variadic_ctor_cxx11.out
|
|
279
|
+
*
|
|
280
|
+
* \sa Matrix(const std::initializer_list<std::initializer_list<Scalar>>&)
|
|
281
|
+
*/
|
|
282
|
+
template <typename... ArgTypes>
|
|
283
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Matrix(const Scalar& a0, const Scalar& a1, const Scalar& a2, const Scalar& a3,
|
|
284
|
+
const ArgTypes&... args)
|
|
297
285
|
: Base(a0, a1, a2, a3, args...) {}
|
|
298
286
|
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
287
|
+
/** \brief Constructs a Matrix and initializes it from the coefficients given as initializer-lists grouped by row.
|
|
288
|
+
* \cpp11
|
|
289
|
+
* \anchor matrix_initializer_list
|
|
290
|
+
*
|
|
291
|
+
* In the general case, the constructor takes a list of rows, each row being represented as a list of coefficients:
|
|
292
|
+
*
|
|
293
|
+
* Example: \include Matrix_initializer_list_23_cxx11.cpp
|
|
294
|
+
* Output: \verbinclude Matrix_initializer_list_23_cxx11.out
|
|
295
|
+
*
|
|
296
|
+
* Each of the inner initializer lists must contain the exact same number of elements, otherwise an assertion is
|
|
297
|
+
* triggered.
|
|
298
|
+
*
|
|
299
|
+
* In the case of a compile-time column vector, implicit transposition from a single row is allowed.
|
|
300
|
+
* Therefore <code>VectorXd{{1,2,3,4,5}}</code> is legal and the more verbose syntax
|
|
301
|
+
* <code>RowVectorXd{{1},{2},{3},{4},{5}}</code> can be avoided:
|
|
302
|
+
*
|
|
303
|
+
* Example: \include Matrix_initializer_list_vector_cxx11.cpp
|
|
304
|
+
* Output: \verbinclude Matrix_initializer_list_vector_cxx11.out
|
|
305
|
+
*
|
|
306
|
+
* In the case of fixed-sized matrices, the initializer list sizes must exactly match the matrix sizes,
|
|
307
|
+
* and implicit transposition is allowed for compile-time vectors only.
|
|
308
|
+
*
|
|
309
|
+
* \sa Matrix(const Scalar& a0, const Scalar& a1, const Scalar& a2, const Scalar& a3, const ArgTypes&... args)
|
|
310
|
+
*/
|
|
311
|
+
EIGEN_DEVICE_FUNC explicit constexpr EIGEN_STRONG_INLINE Matrix(
|
|
312
|
+
const std::initializer_list<std::initializer_list<Scalar>>& list)
|
|
313
|
+
: Base(list) {}
|
|
323
314
|
|
|
324
315
|
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
|
325
316
|
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
Base::_check_template_params();
|
|
332
|
-
Base::template _init1<T>(x);
|
|
333
|
-
}
|
|
334
|
-
|
|
335
|
-
template<typename T0, typename T1>
|
|
336
|
-
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
|
337
|
-
Matrix(const T0& x, const T1& y)
|
|
338
|
-
{
|
|
339
|
-
Base::_check_template_params();
|
|
340
|
-
Base::template _init2<T0,T1>(x, y);
|
|
341
|
-
}
|
|
317
|
+
// This constructor is for both 1x1 matrices and dynamic vectors
|
|
318
|
+
template <typename T>
|
|
319
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE explicit Matrix(const T& x) {
|
|
320
|
+
Base::template _init1<T>(x);
|
|
321
|
+
}
|
|
342
322
|
|
|
323
|
+
template <typename T0, typename T1>
|
|
324
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Matrix(const T0& x, const T1& y) {
|
|
325
|
+
Base::template _init2<T0, T1>(x, y);
|
|
326
|
+
}
|
|
343
327
|
|
|
344
328
|
#else
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
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
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
template<typename OtherDerived>
|
|
434
|
-
EIGEN_DEVICE_FUNC
|
|
435
|
-
explicit Matrix(const RotationBase<OtherDerived,ColsAtCompileTime>& r);
|
|
436
|
-
template<typename OtherDerived>
|
|
437
|
-
EIGEN_DEVICE_FUNC
|
|
438
|
-
Matrix& operator=(const RotationBase<OtherDerived,ColsAtCompileTime>& r);
|
|
439
|
-
|
|
440
|
-
// allow to extend Matrix outside Eigen
|
|
441
|
-
#ifdef EIGEN_MATRIX_PLUGIN
|
|
442
|
-
#include EIGEN_MATRIX_PLUGIN
|
|
443
|
-
#endif
|
|
444
|
-
|
|
445
|
-
protected:
|
|
446
|
-
template <typename Derived, typename OtherDerived, bool IsVector>
|
|
447
|
-
friend struct internal::conservative_resize_like_impl;
|
|
448
|
-
|
|
449
|
-
using Base::m_storage;
|
|
329
|
+
/** \brief Constructs a fixed-sized matrix initialized with coefficients starting at \a data */
|
|
330
|
+
EIGEN_DEVICE_FUNC explicit Matrix(const Scalar* data);
|
|
331
|
+
|
|
332
|
+
/** \brief Constructs a vector or row-vector with given dimension. \only_for_vectors
|
|
333
|
+
*
|
|
334
|
+
* This is useful for dynamic-size vectors. For fixed-size vectors,
|
|
335
|
+
* it is redundant to pass these parameters, so one should use the default constructor
|
|
336
|
+
* Matrix() instead.
|
|
337
|
+
*
|
|
338
|
+
* \warning This constructor is disabled for fixed-size \c 1x1 matrices. For instance,
|
|
339
|
+
* calling Matrix<double,1,1>(1) will call the initialization constructor: Matrix(const Scalar&).
|
|
340
|
+
* For fixed-size \c 1x1 matrices it is therefore recommended to use the default
|
|
341
|
+
* constructor Matrix() instead, especially when using one of the non standard
|
|
342
|
+
* \c EIGEN_INITIALIZE_MATRICES_BY_{ZERO,\c NAN} macros (see \ref TopicPreprocessorDirectives).
|
|
343
|
+
*/
|
|
344
|
+
EIGEN_STRONG_INLINE explicit Matrix(Index dim);
|
|
345
|
+
/** \brief Constructs an initialized 1x1 matrix with the given coefficient
|
|
346
|
+
* \sa Matrix(const Scalar&, const Scalar&, const Scalar&, const Scalar&, const ArgTypes&...) */
|
|
347
|
+
Matrix(const Scalar& x);
|
|
348
|
+
/** \brief Constructs an uninitialized matrix with \a rows rows and \a cols columns.
|
|
349
|
+
*
|
|
350
|
+
* This is useful for dynamic-size matrices. For fixed-size matrices,
|
|
351
|
+
* it is redundant to pass these parameters, so one should use the default constructor
|
|
352
|
+
* Matrix() instead.
|
|
353
|
+
*
|
|
354
|
+
* \warning This constructor is disabled for fixed-size \c 1x2 and \c 2x1 vectors. For instance,
|
|
355
|
+
* calling Matrix2f(2,1) will call the initialization constructor: Matrix(const Scalar& x, const Scalar& y).
|
|
356
|
+
* For fixed-size \c 1x2 or \c 2x1 vectors it is therefore recommended to use the default
|
|
357
|
+
* constructor Matrix() instead, especially when using one of the non standard
|
|
358
|
+
* \c EIGEN_INITIALIZE_MATRICES_BY_{ZERO,\c NAN} macros (see \ref TopicPreprocessorDirectives).
|
|
359
|
+
*/
|
|
360
|
+
EIGEN_DEVICE_FUNC Matrix(Index rows, Index cols);
|
|
361
|
+
|
|
362
|
+
/** \brief Constructs an initialized 2D vector with given coefficients
|
|
363
|
+
* \sa Matrix(const Scalar&, const Scalar&, const Scalar&, const Scalar&, const ArgTypes&...) */
|
|
364
|
+
Matrix(const Scalar& x, const Scalar& y);
|
|
365
|
+
#endif // end EIGEN_PARSED_BY_DOXYGEN
|
|
366
|
+
|
|
367
|
+
/** \brief Constructs an initialized 3D vector with given coefficients
|
|
368
|
+
* \sa Matrix(const Scalar&, const Scalar&, const Scalar&, const Scalar&, const ArgTypes&...)
|
|
369
|
+
*/
|
|
370
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Matrix(const Scalar& x, const Scalar& y, const Scalar& z) {
|
|
371
|
+
EIGEN_STATIC_ASSERT_VECTOR_SPECIFIC_SIZE(Matrix, 3)
|
|
372
|
+
m_storage.data()[0] = x;
|
|
373
|
+
m_storage.data()[1] = y;
|
|
374
|
+
m_storage.data()[2] = z;
|
|
375
|
+
}
|
|
376
|
+
/** \brief Constructs an initialized 4D vector with given coefficients
|
|
377
|
+
* \sa Matrix(const Scalar&, const Scalar&, const Scalar&, const Scalar&, const ArgTypes&...)
|
|
378
|
+
*/
|
|
379
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Matrix(const Scalar& x, const Scalar& y, const Scalar& z, const Scalar& w) {
|
|
380
|
+
EIGEN_STATIC_ASSERT_VECTOR_SPECIFIC_SIZE(Matrix, 4)
|
|
381
|
+
m_storage.data()[0] = x;
|
|
382
|
+
m_storage.data()[1] = y;
|
|
383
|
+
m_storage.data()[2] = z;
|
|
384
|
+
m_storage.data()[3] = w;
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
/** \brief Copy constructor */
|
|
388
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr Matrix(const Matrix&) = default;
|
|
389
|
+
|
|
390
|
+
/** \brief Copy constructor for generic expressions.
|
|
391
|
+
* \sa MatrixBase::operator=(const EigenBase<OtherDerived>&)
|
|
392
|
+
*/
|
|
393
|
+
template <typename OtherDerived>
|
|
394
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Matrix(const EigenBase<OtherDerived>& other) : Base(other.derived()) {}
|
|
395
|
+
|
|
396
|
+
EIGEN_DEVICE_FUNC constexpr Index innerStride() const noexcept { return 1; }
|
|
397
|
+
EIGEN_DEVICE_FUNC constexpr Index outerStride() const noexcept { return this->innerSize(); }
|
|
398
|
+
|
|
399
|
+
/////////// Geometry module ///////////
|
|
400
|
+
|
|
401
|
+
template <typename OtherDerived>
|
|
402
|
+
EIGEN_DEVICE_FUNC explicit Matrix(const RotationBase<OtherDerived, ColsAtCompileTime>& r);
|
|
403
|
+
template <typename OtherDerived>
|
|
404
|
+
EIGEN_DEVICE_FUNC Matrix& operator=(const RotationBase<OtherDerived, ColsAtCompileTime>& r);
|
|
405
|
+
|
|
406
|
+
// allow to extend Matrix outside Eigen
|
|
407
|
+
#ifdef EIGEN_MATRIX_PLUGIN
|
|
408
|
+
#include EIGEN_MATRIX_PLUGIN
|
|
409
|
+
#endif
|
|
410
|
+
|
|
411
|
+
protected:
|
|
412
|
+
template <typename Derived, typename OtherDerived, bool IsVector>
|
|
413
|
+
friend struct internal::conservative_resize_like_impl;
|
|
414
|
+
|
|
415
|
+
using Base::m_storage;
|
|
450
416
|
};
|
|
451
417
|
|
|
452
418
|
/** \defgroup matrixtypedefs Global matrix typedefs
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
/** \ingroup matrixtypedefs */
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
/** \ingroup matrixtypedefs */
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
419
|
+
*
|
|
420
|
+
* \ingroup Core_Module
|
|
421
|
+
*
|
|
422
|
+
* %Eigen defines several typedef shortcuts for most common matrix and vector types.
|
|
423
|
+
*
|
|
424
|
+
* The general patterns are the following:
|
|
425
|
+
*
|
|
426
|
+
* \c MatrixSizeType where \c Size can be \c 2,\c 3,\c 4 for fixed size square matrices or \c X for dynamic size,
|
|
427
|
+
* and where \c Type can be \c i for integer, \c f for float, \c d for double, \c cf for complex float, \c cd
|
|
428
|
+
* for complex double.
|
|
429
|
+
*
|
|
430
|
+
* For example, \c Matrix3d is a fixed-size 3x3 matrix type of doubles, and \c MatrixXf is a dynamic-size matrix of
|
|
431
|
+
* floats.
|
|
432
|
+
*
|
|
433
|
+
* There are also \c VectorSizeType and \c RowVectorSizeType which are self-explanatory. For example, \c Vector4cf is
|
|
434
|
+
* a fixed-size vector of 4 complex floats.
|
|
435
|
+
*
|
|
436
|
+
* With \cpp11, template alias are also defined for common sizes.
|
|
437
|
+
* They follow the same pattern as above except that the scalar type suffix is replaced by a
|
|
438
|
+
* template parameter, i.e.:
|
|
439
|
+
* - `MatrixSize<Type>` where `Size` can be \c 2,\c 3,\c 4 for fixed size square matrices or \c X for dynamic size.
|
|
440
|
+
* - `MatrixXSize<Type>` and `MatrixSizeX<Type>` where `Size` can be \c 2,\c 3,\c 4 for hybrid dynamic/fixed matrices.
|
|
441
|
+
* - `VectorSize<Type>` and `RowVectorSize<Type>` for column and row vectors.
|
|
442
|
+
*
|
|
443
|
+
* With \cpp11, you can also use fully generic column and row vector types: `Vector<Type,Size>` and
|
|
444
|
+
* `RowVector<Type,Size>`.
|
|
445
|
+
*
|
|
446
|
+
* \sa class Matrix
|
|
447
|
+
*/
|
|
448
|
+
|
|
449
|
+
#define EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, Size, SizeSuffix) \
|
|
450
|
+
/** \ingroup matrixtypedefs */ \
|
|
451
|
+
/** \brief `Size`×`Size` matrix of type `Type`. */ \
|
|
452
|
+
typedef Matrix<Type, Size, Size> Matrix##SizeSuffix##TypeSuffix; \
|
|
453
|
+
/** \ingroup matrixtypedefs */ \
|
|
454
|
+
/** \brief `Size`×`1` vector of type `Type`. */ \
|
|
455
|
+
typedef Matrix<Type, Size, 1> Vector##SizeSuffix##TypeSuffix; \
|
|
456
|
+
/** \ingroup matrixtypedefs */ \
|
|
457
|
+
/** \brief `1`×`Size` vector of type `Type`. */ \
|
|
458
|
+
typedef Matrix<Type, 1, Size> RowVector##SizeSuffix##TypeSuffix;
|
|
459
|
+
|
|
460
|
+
#define EIGEN_MAKE_FIXED_TYPEDEFS(Type, TypeSuffix, Size) \
|
|
461
|
+
/** \ingroup matrixtypedefs */ \
|
|
462
|
+
/** \brief `Size`×`Dynamic` matrix of type `Type`. */ \
|
|
463
|
+
typedef Matrix<Type, Size, Dynamic> Matrix##Size##X##TypeSuffix; \
|
|
464
|
+
/** \ingroup matrixtypedefs */ \
|
|
465
|
+
/** \brief `Dynamic`×`Size` matrix of type `Type`. */ \
|
|
466
|
+
typedef Matrix<Type, Dynamic, Size> Matrix##X##Size##TypeSuffix;
|
|
494
467
|
|
|
495
468
|
#define EIGEN_MAKE_TYPEDEFS_ALL_SIZES(Type, TypeSuffix) \
|
|
496
|
-
EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, 2, 2)
|
|
497
|
-
EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, 3, 3)
|
|
498
|
-
EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, 4, 4)
|
|
499
|
-
EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, Dynamic, X)
|
|
500
|
-
EIGEN_MAKE_FIXED_TYPEDEFS(Type, TypeSuffix, 2)
|
|
501
|
-
EIGEN_MAKE_FIXED_TYPEDEFS(Type, TypeSuffix, 3)
|
|
502
|
-
EIGEN_MAKE_FIXED_TYPEDEFS(Type, TypeSuffix, 4)
|
|
503
|
-
|
|
504
|
-
EIGEN_MAKE_TYPEDEFS_ALL_SIZES(int,
|
|
505
|
-
EIGEN_MAKE_TYPEDEFS_ALL_SIZES(float,
|
|
506
|
-
EIGEN_MAKE_TYPEDEFS_ALL_SIZES(double,
|
|
507
|
-
EIGEN_MAKE_TYPEDEFS_ALL_SIZES(std::complex<float>,
|
|
469
|
+
EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, 2, 2) \
|
|
470
|
+
EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, 3, 3) \
|
|
471
|
+
EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, 4, 4) \
|
|
472
|
+
EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, Dynamic, X) \
|
|
473
|
+
EIGEN_MAKE_FIXED_TYPEDEFS(Type, TypeSuffix, 2) \
|
|
474
|
+
EIGEN_MAKE_FIXED_TYPEDEFS(Type, TypeSuffix, 3) \
|
|
475
|
+
EIGEN_MAKE_FIXED_TYPEDEFS(Type, TypeSuffix, 4)
|
|
476
|
+
|
|
477
|
+
EIGEN_MAKE_TYPEDEFS_ALL_SIZES(int, i)
|
|
478
|
+
EIGEN_MAKE_TYPEDEFS_ALL_SIZES(float, f)
|
|
479
|
+
EIGEN_MAKE_TYPEDEFS_ALL_SIZES(double, d)
|
|
480
|
+
EIGEN_MAKE_TYPEDEFS_ALL_SIZES(std::complex<float>, cf)
|
|
508
481
|
EIGEN_MAKE_TYPEDEFS_ALL_SIZES(std::complex<double>, cd)
|
|
509
482
|
|
|
510
483
|
#undef EIGEN_MAKE_TYPEDEFS_ALL_SIZES
|
|
511
484
|
#undef EIGEN_MAKE_TYPEDEFS
|
|
512
485
|
#undef EIGEN_MAKE_FIXED_TYPEDEFS
|
|
513
486
|
|
|
514
|
-
#
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
template <typename Type> \
|
|
538
|
-
using Matrix##X##Size = Matrix<Type, Dynamic, Size>;
|
|
487
|
+
#define EIGEN_MAKE_TYPEDEFS(Size, SizeSuffix) \
|
|
488
|
+
/** \ingroup matrixtypedefs */ \
|
|
489
|
+
/** \brief \cpp11 `Size`×`Size` matrix of type `Type`.*/ \
|
|
490
|
+
template <typename Type> \
|
|
491
|
+
using Matrix##SizeSuffix = Matrix<Type, Size, Size>; \
|
|
492
|
+
/** \ingroup matrixtypedefs */ \
|
|
493
|
+
/** \brief \cpp11 `Size`×`1` vector of type `Type`.*/ \
|
|
494
|
+
template <typename Type> \
|
|
495
|
+
using Vector##SizeSuffix = Matrix<Type, Size, 1>; \
|
|
496
|
+
/** \ingroup matrixtypedefs */ \
|
|
497
|
+
/** \brief \cpp11 `1`×`Size` vector of type `Type`.*/ \
|
|
498
|
+
template <typename Type> \
|
|
499
|
+
using RowVector##SizeSuffix = Matrix<Type, 1, Size>;
|
|
500
|
+
|
|
501
|
+
#define EIGEN_MAKE_FIXED_TYPEDEFS(Size) \
|
|
502
|
+
/** \ingroup matrixtypedefs */ \
|
|
503
|
+
/** \brief \cpp11 `Size`×`Dynamic` matrix of type `Type` */ \
|
|
504
|
+
template <typename Type> \
|
|
505
|
+
using Matrix##Size##X = Matrix<Type, Size, Dynamic>; \
|
|
506
|
+
/** \ingroup matrixtypedefs */ \
|
|
507
|
+
/** \brief \cpp11 `Dynamic`×`Size` matrix of type `Type`. */ \
|
|
508
|
+
template <typename Type> \
|
|
509
|
+
using Matrix##X##Size = Matrix<Type, Dynamic, Size>;
|
|
539
510
|
|
|
540
511
|
EIGEN_MAKE_TYPEDEFS(2, 2)
|
|
541
512
|
EIGEN_MAKE_TYPEDEFS(3, 3)
|
|
@@ -546,20 +517,18 @@ EIGEN_MAKE_FIXED_TYPEDEFS(3)
|
|
|
546
517
|
EIGEN_MAKE_FIXED_TYPEDEFS(4)
|
|
547
518
|
|
|
548
519
|
/** \ingroup matrixtypedefs
|
|
549
|
-
|
|
520
|
+
* \brief \cpp11 `Size`×`1` vector of type `Type`. */
|
|
550
521
|
template <typename Type, int Size>
|
|
551
522
|
using Vector = Matrix<Type, Size, 1>;
|
|
552
523
|
|
|
553
524
|
/** \ingroup matrixtypedefs
|
|
554
|
-
|
|
525
|
+
* \brief \cpp11 `1`×`Size` vector of type `Type`. */
|
|
555
526
|
template <typename Type, int Size>
|
|
556
527
|
using RowVector = Matrix<Type, 1, Size>;
|
|
557
528
|
|
|
558
529
|
#undef EIGEN_MAKE_TYPEDEFS
|
|
559
530
|
#undef EIGEN_MAKE_FIXED_TYPEDEFS
|
|
560
531
|
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
} // end namespace Eigen
|
|
532
|
+
} // end namespace Eigen
|
|
564
533
|
|
|
565
|
-
#endif
|
|
534
|
+
#endif // EIGEN_MATRIX_H
|