@smake/eigen 1.0.2 → 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 -21
- package/eigen/Eigen/CholmodSupport +28 -28
- package/eigen/Eigen/Core +235 -326
- package/eigen/Eigen/Eigenvalues +16 -14
- package/eigen/Eigen/Geometry +21 -24
- package/eigen/Eigen/Householder +9 -8
- package/eigen/Eigen/IterativeLinearSolvers +8 -4
- package/eigen/Eigen/Jacobi +14 -14
- package/eigen/Eigen/KLUSupport +43 -0
- package/eigen/Eigen/LU +16 -20
- package/eigen/Eigen/MetisSupport +12 -12
- package/eigen/Eigen/OrderingMethods +54 -54
- package/eigen/Eigen/PaStiXSupport +23 -20
- package/eigen/Eigen/PardisoSupport +17 -14
- package/eigen/Eigen/QR +18 -21
- package/eigen/Eigen/QtAlignedMalloc +5 -13
- package/eigen/Eigen/SPQRSupport +21 -14
- package/eigen/Eigen/SVD +23 -18
- package/eigen/Eigen/Sparse +1 -4
- package/eigen/Eigen/SparseCholesky +18 -23
- package/eigen/Eigen/SparseCore +18 -17
- package/eigen/Eigen/SparseLU +12 -8
- 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 +377 -401
- package/eigen/Eigen/src/Cholesky/LLT.h +332 -360
- package/eigen/Eigen/src/Cholesky/LLT_LAPACKE.h +81 -56
- package/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +620 -521
- package/eigen/Eigen/src/CholmodSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Core/ArithmeticSequence.h +239 -0
- package/eigen/Eigen/src/Core/Array.h +341 -294
- package/eigen/Eigen/src/Core/ArrayBase.h +190 -203
- package/eigen/Eigen/src/Core/ArrayWrapper.h +127 -171
- package/eigen/Eigen/src/Core/Assign.h +30 -40
- package/eigen/Eigen/src/Core/AssignEvaluator.h +711 -589
- package/eigen/Eigen/src/Core/Assign_MKL.h +130 -125
- package/eigen/Eigen/src/Core/BandMatrix.h +268 -283
- package/eigen/Eigen/src/Core/Block.h +375 -398
- package/eigen/Eigen/src/Core/CommaInitializer.h +86 -97
- package/eigen/Eigen/src/Core/ConditionEstimator.h +51 -53
- package/eigen/Eigen/src/Core/CoreEvaluators.h +1356 -1026
- package/eigen/Eigen/src/Core/CoreIterators.h +73 -59
- package/eigen/Eigen/src/Core/CwiseBinaryOp.h +114 -132
- package/eigen/Eigen/src/Core/CwiseNullaryOp.h +726 -617
- package/eigen/Eigen/src/Core/CwiseTernaryOp.h +77 -103
- package/eigen/Eigen/src/Core/CwiseUnaryOp.h +56 -68
- package/eigen/Eigen/src/Core/CwiseUnaryView.h +132 -95
- package/eigen/Eigen/src/Core/DenseBase.h +632 -571
- package/eigen/Eigen/src/Core/DenseCoeffsBase.h +511 -624
- package/eigen/Eigen/src/Core/DenseStorage.h +512 -509
- package/eigen/Eigen/src/Core/DeviceWrapper.h +153 -0
- package/eigen/Eigen/src/Core/Diagonal.h +169 -210
- package/eigen/Eigen/src/Core/DiagonalMatrix.h +351 -274
- package/eigen/Eigen/src/Core/DiagonalProduct.h +12 -10
- package/eigen/Eigen/src/Core/Dot.h +172 -222
- package/eigen/Eigen/src/Core/EigenBase.h +75 -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 -109
- package/eigen/Eigen/src/Core/Fuzzy.h +82 -105
- package/eigen/Eigen/src/Core/GeneralProduct.h +327 -263
- package/eigen/Eigen/src/Core/GenericPacketMath.h +1472 -360
- package/eigen/Eigen/src/Core/GlobalFunctions.h +194 -151
- package/eigen/Eigen/src/Core/IO.h +147 -139
- package/eigen/Eigen/src/Core/IndexedView.h +321 -0
- 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 +56 -66
- package/eigen/Eigen/src/Core/Map.h +124 -142
- package/eigen/Eigen/src/Core/MapBase.h +256 -281
- package/eigen/Eigen/src/Core/MathFunctions.h +1620 -938
- package/eigen/Eigen/src/Core/MathFunctionsImpl.h +233 -71
- package/eigen/Eigen/src/Core/Matrix.h +491 -416
- package/eigen/Eigen/src/Core/MatrixBase.h +468 -453
- package/eigen/Eigen/src/Core/NestByValue.h +66 -85
- package/eigen/Eigen/src/Core/NoAlias.h +79 -85
- package/eigen/Eigen/src/Core/NumTraits.h +235 -148
- package/eigen/Eigen/src/Core/PartialReduxEvaluator.h +253 -0
- package/eigen/Eigen/src/Core/PermutationMatrix.h +461 -511
- package/eigen/Eigen/src/Core/PlainObjectBase.h +871 -894
- package/eigen/Eigen/src/Core/Product.h +260 -139
- package/eigen/Eigen/src/Core/ProductEvaluators.h +863 -714
- package/eigen/Eigen/src/Core/Random.h +161 -136
- 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 +366 -336
- package/eigen/Eigen/src/Core/Ref.h +308 -209
- package/eigen/Eigen/src/Core/Replicate.h +94 -106
- package/eigen/Eigen/src/Core/Reshaped.h +398 -0
- package/eigen/Eigen/src/Core/ReturnByValue.h +49 -55
- package/eigen/Eigen/src/Core/Reverse.h +136 -145
- package/eigen/Eigen/src/Core/Select.h +70 -140
- package/eigen/Eigen/src/Core/SelfAdjointView.h +262 -285
- 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 +97 -111
- package/eigen/Eigen/src/Core/SolveTriangular.h +131 -129
- package/eigen/Eigen/src/Core/SolverBase.h +138 -101
- package/eigen/Eigen/src/Core/StableNorm.h +156 -160
- package/eigen/Eigen/src/Core/StlIterators.h +619 -0
- package/eigen/Eigen/src/Core/Stride.h +91 -88
- package/eigen/Eigen/src/Core/Swap.h +70 -38
- package/eigen/Eigen/src/Core/Transpose.h +295 -273
- package/eigen/Eigen/src/Core/Transpositions.h +272 -317
- package/eigen/Eigen/src/Core/TriangularMatrix.h +670 -755
- package/eigen/Eigen/src/Core/VectorBlock.h +59 -72
- package/eigen/Eigen/src/Core/VectorwiseOp.h +668 -630
- package/eigen/Eigen/src/Core/Visitor.h +480 -216
- package/eigen/Eigen/src/Core/arch/AVX/Complex.h +407 -293
- package/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +79 -388
- package/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +2935 -491
- package/eigen/Eigen/src/Core/arch/AVX/Reductions.h +353 -0
- package/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +279 -22
- package/eigen/Eigen/src/Core/arch/AVX512/Complex.h +472 -0
- package/eigen/Eigen/src/Core/arch/AVX512/GemmKernel.h +1245 -0
- package/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +85 -333
- package/eigen/Eigen/src/Core/arch/AVX512/MathFunctionsFP16.h +75 -0
- package/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +2490 -649
- 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 +277 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TypeCastingFP16.h +130 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +521 -298
- package/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +39 -280
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +3686 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +205 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +901 -0
- 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 +3391 -723
- package/eigen/Eigen/src/Core/arch/AltiVec/TypeCasting.h +153 -0
- package/eigen/Eigen/src/Core/arch/Default/BFloat16.h +866 -0
- package/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +113 -14
- package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +2634 -0
- package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +227 -0
- package/eigen/Eigen/src/Core/arch/Default/Half.h +1091 -0
- package/eigen/Eigen/src/Core/arch/Default/Settings.h +11 -13
- package/eigen/Eigen/src/Core/arch/GPU/Complex.h +244 -0
- package/eigen/Eigen/src/Core/arch/GPU/MathFunctions.h +104 -0
- package/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +1712 -0
- package/eigen/Eigen/src/Core/arch/GPU/Tuple.h +268 -0
- package/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +77 -0
- package/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
- 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 +620 -0
- package/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +379 -0
- package/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +1237 -0
- package/eigen/Eigen/src/Core/arch/NEON/Complex.h +531 -289
- package/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +243 -0
- package/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +50 -73
- package/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +5915 -579
- package/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +1642 -0
- package/eigen/Eigen/src/Core/arch/NEON/UnaryFunctors.h +57 -0
- package/eigen/Eigen/src/Core/arch/SSE/Complex.h +366 -334
- package/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +40 -514
- package/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +2164 -675
- package/eigen/Eigen/src/Core/arch/SSE/Reductions.h +324 -0
- package/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +188 -35
- package/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +48 -0
- package/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +674 -0
- package/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +52 -0
- package/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +227 -0
- package/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +303 -0
- package/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +576 -0
- package/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +83 -0
- package/eigen/Eigen/src/Core/arch/ZVector/Complex.h +434 -261
- package/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +160 -53
- package/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +1073 -605
- package/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +123 -117
- package/eigen/Eigen/src/Core/functors/BinaryFunctors.h +594 -322
- package/eigen/Eigen/src/Core/functors/NullaryFunctors.h +204 -118
- package/eigen/Eigen/src/Core/functors/StlFunctors.h +110 -97
- package/eigen/Eigen/src/Core/functors/TernaryFunctors.h +34 -7
- package/eigen/Eigen/src/Core/functors/UnaryFunctors.h +1158 -530
- package/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +2329 -1333
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +328 -364
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +191 -178
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +85 -82
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +154 -73
- package/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +396 -542
- package/eigen/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +80 -77
- package/eigen/Eigen/src/Core/products/Parallelizer.h +208 -92
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +331 -375
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +206 -224
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +139 -146
- 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 -46
- 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 -275
- package/eigen/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +108 -109
- package/eigen/Eigen/src/Core/products/TriangularSolverVector.h +70 -93
- package/eigen/Eigen/src/Core/util/Assert.h +158 -0
- package/eigen/Eigen/src/Core/util/BlasUtil.h +413 -290
- package/eigen/Eigen/src/Core/util/ConfigureVectorization.h +543 -0
- package/eigen/Eigen/src/Core/util/Constants.h +314 -263
- package/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +130 -78
- package/eigen/Eigen/src/Core/util/EmulateArray.h +270 -0
- package/eigen/Eigen/src/Core/util/ForwardDeclarations.h +450 -224
- 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 +487 -0
- package/eigen/Eigen/src/Core/util/IntegralConstant.h +279 -0
- package/eigen/Eigen/src/Core/util/MKL_support.h +39 -30
- package/eigen/Eigen/src/Core/util/Macros.h +939 -646
- package/eigen/Eigen/src/Core/util/MaxSizeVector.h +139 -0
- package/eigen/Eigen/src/Core/util/Memory.h +1042 -650
- package/eigen/Eigen/src/Core/util/Meta.h +618 -426
- 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 +51 -0
- package/eigen/Eigen/src/Core/util/Serializer.h +209 -0
- package/eigen/Eigen/src/Core/util/StaticAssert.h +51 -164
- package/eigen/Eigen/src/Core/util/SymbolicIndex.h +445 -0
- package/eigen/Eigen/src/Core/util/XprHelper.h +793 -538
- 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 +91 -107
- package/eigen/Eigen/src/Eigenvalues/RealQZ.h +539 -606
- package/eigen/Eigen/src/Eigenvalues/RealSchur.h +348 -382
- package/eigen/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +41 -35
- package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +579 -600
- package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +47 -44
- package/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +434 -461
- package/eigen/Eigen/src/Geometry/AlignedBox.h +307 -214
- package/eigen/Eigen/src/Geometry/AngleAxis.h +135 -137
- package/eigen/Eigen/src/Geometry/EulerAngles.h +163 -74
- package/eigen/Eigen/src/Geometry/Homogeneous.h +289 -333
- package/eigen/Eigen/src/Geometry/Hyperplane.h +152 -161
- package/eigen/Eigen/src/Geometry/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Geometry/OrthoMethods.h +168 -145
- package/eigen/Eigen/src/Geometry/ParametrizedLine.h +141 -104
- package/eigen/Eigen/src/Geometry/Quaternion.h +595 -497
- package/eigen/Eigen/src/Geometry/Rotation2D.h +110 -108
- package/eigen/Eigen/src/Geometry/RotationBase.h +148 -145
- package/eigen/Eigen/src/Geometry/Scaling.h +115 -90
- package/eigen/Eigen/src/Geometry/Transform.h +896 -953
- package/eigen/Eigen/src/Geometry/Translation.h +100 -98
- package/eigen/Eigen/src/Geometry/Umeyama.h +79 -84
- package/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +154 -0
- package/eigen/Eigen/src/Householder/BlockHouseholder.h +54 -42
- package/eigen/Eigen/src/Householder/Householder.h +104 -122
- package/eigen/Eigen/src/Householder/HouseholderSequence.h +416 -382
- package/eigen/Eigen/src/Householder/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +153 -166
- package/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +127 -138
- package/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +95 -124
- package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +269 -267
- package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +246 -259
- package/eigen/Eigen/src/IterativeLinearSolvers/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +218 -217
- package/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +80 -103
- package/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +59 -63
- package/eigen/Eigen/src/Jacobi/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Jacobi/Jacobi.h +256 -291
- package/eigen/Eigen/src/KLUSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/KLUSupport/KLUSupport.h +339 -0
- package/eigen/Eigen/src/LU/Determinant.h +60 -63
- package/eigen/Eigen/src/LU/FullPivLU.h +561 -626
- package/eigen/Eigen/src/LU/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/LU/InverseImpl.h +213 -275
- package/eigen/Eigen/src/LU/PartialPivLU.h +407 -435
- package/eigen/Eigen/src/LU/PartialPivLU_LAPACKE.h +54 -40
- package/eigen/Eigen/src/LU/arch/InverseSize4.h +353 -0
- 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 +250 -282
- package/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +950 -1103
- package/eigen/Eigen/src/OrderingMethods/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/OrderingMethods/Ordering.h +111 -122
- 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 -429
- package/eigen/Eigen/src/QR/ColPivHouseholderQR.h +494 -473
- package/eigen/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +120 -56
- package/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +223 -137
- package/eigen/Eigen/src/QR/FullPivHouseholderQR.h +517 -460
- package/eigen/Eigen/src/QR/HouseholderQR.h +412 -278
- 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 +263 -261
- package/eigen/Eigen/src/SVD/BDCSVD.h +872 -679
- 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 +585 -543
- package/eigen/Eigen/src/SVD/JacobiSVD_LAPACKE.h +85 -49
- package/eigen/Eigen/src/SVD/SVDBase.h +281 -160
- package/eigen/Eigen/src/SVD/UpperBidiagonalization.h +202 -237
- package/eigen/Eigen/src/SparseCholesky/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +769 -590
- package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +318 -129
- package/eigen/Eigen/src/SparseCore/AmbiVector.h +202 -251
- package/eigen/Eigen/src/SparseCore/CompressedStorage.h +184 -236
- package/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +140 -184
- package/eigen/Eigen/src/SparseCore/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseCore/SparseAssign.h +174 -111
- package/eigen/Eigen/src/SparseCore/SparseBlock.h +408 -477
- package/eigen/Eigen/src/SparseCore/SparseColEtree.h +100 -112
- package/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +531 -280
- package/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +559 -347
- package/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +100 -108
- package/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +185 -191
- 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 +1614 -1142
- package/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +403 -357
- package/eigen/Eigen/src/SparseCore/SparsePermutation.h +186 -115
- package/eigen/Eigen/src/SparseCore/SparseProduct.h +100 -91
- 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 +371 -414
- 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 +146 -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 +814 -618
- 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 +273 -255
- 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 +90 -101
- 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 +125 -133
- 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 +451 -490
- package/eigen/Eigen/src/StlSupport/StdDeque.h +28 -105
- 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 -732
- 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 +480 -380
- 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 +9976 -16182
- 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.inc +1370 -0
- package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.inc +116 -0
- package/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.inc +167 -0
- 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/lib/LibEigen.d.ts +4 -0
- package/lib/LibEigen.js +14 -0
- package/lib/index.d.ts +1 -1
- package/lib/index.js +7 -3
- package/package.json +2 -10
- package/eigen/Eigen/CMakeLists.txt +0 -19
- package/eigen/Eigen/src/Core/BooleanRedux.h +0 -164
- package/eigen/Eigen/src/Core/arch/CUDA/Complex.h +0 -103
- package/eigen/Eigen/src/Core/arch/CUDA/Half.h +0 -675
- package/eigen/Eigen/src/Core/arch/CUDA/MathFunctions.h +0 -91
- package/eigen/Eigen/src/Core/arch/CUDA/PacketMath.h +0 -333
- package/eigen/Eigen/src/Core/arch/CUDA/PacketMathHalf.h +0 -1124
- package/eigen/Eigen/src/Core/arch/CUDA/TypeCasting.h +0 -212
- package/eigen/Eigen/src/Core/util/NonMPL2.h +0 -3
- package/eigen/Eigen/src/Geometry/arch/Geometry_SSE.h +0 -161
- package/eigen/Eigen/src/LU/arch/Inverse_SSE.h +0 -338
- 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 -332
- package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +0 -552
- package/eigen/Eigen/src/plugins/BlockMethods.h +0 -1058
- package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.h +0 -115
- package/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.h +0 -163
- package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +0 -152
- package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +0 -85
- package/lib/eigen.d.ts +0 -2
- package/lib/eigen.js +0 -15
|
@@ -10,133 +10,121 @@
|
|
|
10
10
|
#ifndef EIGEN_REPLICATE_H
|
|
11
11
|
#define EIGEN_REPLICATE_H
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
// IWYU pragma: private
|
|
14
|
+
#include "./InternalHeaderCheck.h"
|
|
15
|
+
|
|
16
|
+
namespace Eigen {
|
|
14
17
|
|
|
15
18
|
namespace internal {
|
|
16
|
-
template<typename MatrixType,int RowFactor,int ColFactor>
|
|
17
|
-
struct traits<Replicate<MatrixType,RowFactor,ColFactor> >
|
|
18
|
-
: traits<MatrixType>
|
|
19
|
-
{
|
|
19
|
+
template <typename MatrixType, int RowFactor, int ColFactor>
|
|
20
|
+
struct traits<Replicate<MatrixType, RowFactor, ColFactor> > : traits<MatrixType> {
|
|
20
21
|
typedef typename MatrixType::Scalar Scalar;
|
|
21
22
|
typedef typename traits<MatrixType>::StorageKind StorageKind;
|
|
22
23
|
typedef typename traits<MatrixType>::XprKind XprKind;
|
|
23
24
|
typedef typename ref_selector<MatrixType>::type MatrixTypeNested;
|
|
24
|
-
typedef
|
|
25
|
+
typedef std::remove_reference_t<MatrixTypeNested> MatrixTypeNested_;
|
|
25
26
|
enum {
|
|
26
|
-
RowsAtCompileTime = RowFactor==Dynamic || int(MatrixType::RowsAtCompileTime)==Dynamic
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
ColsAtCompileTime = ColFactor==Dynamic || int(MatrixType::ColsAtCompileTime)==Dynamic
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
27
|
+
RowsAtCompileTime = RowFactor == Dynamic || int(MatrixType::RowsAtCompileTime) == Dynamic
|
|
28
|
+
? Dynamic
|
|
29
|
+
: RowFactor * MatrixType::RowsAtCompileTime,
|
|
30
|
+
ColsAtCompileTime = ColFactor == Dynamic || int(MatrixType::ColsAtCompileTime) == Dynamic
|
|
31
|
+
? Dynamic
|
|
32
|
+
: ColFactor * MatrixType::ColsAtCompileTime,
|
|
33
|
+
// FIXME we don't propagate the max sizes !!!
|
|
33
34
|
MaxRowsAtCompileTime = RowsAtCompileTime,
|
|
34
35
|
MaxColsAtCompileTime = ColsAtCompileTime,
|
|
35
|
-
IsRowMajor = MaxRowsAtCompileTime==1 && MaxColsAtCompileTime!=1
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
IsRowMajor = MaxRowsAtCompileTime == 1 && MaxColsAtCompileTime != 1 ? 1
|
|
37
|
+
: MaxColsAtCompileTime == 1 && MaxRowsAtCompileTime != 1 ? 0
|
|
38
|
+
: (MatrixType::Flags & RowMajorBit) ? 1
|
|
39
|
+
: 0,
|
|
40
|
+
|
|
39
41
|
// FIXME enable DirectAccess with negative strides?
|
|
40
42
|
Flags = IsRowMajor ? RowMajorBit : 0
|
|
41
43
|
};
|
|
42
44
|
};
|
|
43
|
-
}
|
|
45
|
+
} // namespace internal
|
|
44
46
|
|
|
45
47
|
/**
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
template<typename MatrixType,int RowFactor,int ColFactor>
|
|
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
|
-
EIGEN_DEVICE_FUNC
|
|
97
|
-
const _MatrixTypeNested& nestedExpression() const
|
|
98
|
-
{
|
|
99
|
-
return m_matrix;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
protected:
|
|
103
|
-
MatrixTypeNested m_matrix;
|
|
104
|
-
const internal::variable_if_dynamic<Index, RowFactor> m_rowFactor;
|
|
105
|
-
const internal::variable_if_dynamic<Index, ColFactor> m_colFactor;
|
|
48
|
+
* \class Replicate
|
|
49
|
+
* \ingroup Core_Module
|
|
50
|
+
*
|
|
51
|
+
* \brief Expression of the multiple replication of a matrix or vector
|
|
52
|
+
*
|
|
53
|
+
* \tparam MatrixType the type of the object we are replicating
|
|
54
|
+
* \tparam RowFactor number of repetitions at compile time along the vertical direction, can be Dynamic.
|
|
55
|
+
* \tparam ColFactor number of repetitions at compile time along the horizontal direction, can be Dynamic.
|
|
56
|
+
*
|
|
57
|
+
* This class represents an expression of the multiple replication of a matrix or vector.
|
|
58
|
+
* It is the return type of DenseBase::replicate() and most of the time
|
|
59
|
+
* this is the only way it is used.
|
|
60
|
+
*
|
|
61
|
+
* \sa DenseBase::replicate()
|
|
62
|
+
*/
|
|
63
|
+
template <typename MatrixType, int RowFactor, int ColFactor>
|
|
64
|
+
class Replicate : public internal::dense_xpr_base<Replicate<MatrixType, RowFactor, ColFactor> >::type {
|
|
65
|
+
typedef typename internal::traits<Replicate>::MatrixTypeNested MatrixTypeNested;
|
|
66
|
+
typedef typename internal::traits<Replicate>::MatrixTypeNested_ MatrixTypeNested_;
|
|
67
|
+
|
|
68
|
+
public:
|
|
69
|
+
typedef typename internal::dense_xpr_base<Replicate>::type Base;
|
|
70
|
+
EIGEN_DENSE_PUBLIC_INTERFACE(Replicate)
|
|
71
|
+
typedef internal::remove_all_t<MatrixType> NestedExpression;
|
|
72
|
+
|
|
73
|
+
template <typename OriginalMatrixType>
|
|
74
|
+
EIGEN_DEVICE_FUNC inline explicit Replicate(const OriginalMatrixType& matrix)
|
|
75
|
+
: m_matrix(matrix), m_rowFactor(RowFactor), m_colFactor(ColFactor) {
|
|
76
|
+
EIGEN_STATIC_ASSERT((internal::is_same<std::remove_const_t<MatrixType>, OriginalMatrixType>::value),
|
|
77
|
+
THE_MATRIX_OR_EXPRESSION_THAT_YOU_PASSED_DOES_NOT_HAVE_THE_EXPECTED_TYPE)
|
|
78
|
+
eigen_assert(RowFactor != Dynamic && ColFactor != Dynamic);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
template <typename OriginalMatrixType>
|
|
82
|
+
EIGEN_DEVICE_FUNC inline Replicate(const OriginalMatrixType& matrix, Index rowFactor, Index colFactor)
|
|
83
|
+
: m_matrix(matrix), m_rowFactor(rowFactor), m_colFactor(colFactor) {
|
|
84
|
+
EIGEN_STATIC_ASSERT((internal::is_same<std::remove_const_t<MatrixType>, OriginalMatrixType>::value),
|
|
85
|
+
THE_MATRIX_OR_EXPRESSION_THAT_YOU_PASSED_DOES_NOT_HAVE_THE_EXPECTED_TYPE)
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
EIGEN_DEVICE_FUNC constexpr Index rows() const { return m_matrix.rows() * m_rowFactor.value(); }
|
|
89
|
+
EIGEN_DEVICE_FUNC constexpr Index cols() const { return m_matrix.cols() * m_colFactor.value(); }
|
|
90
|
+
|
|
91
|
+
EIGEN_DEVICE_FUNC const MatrixTypeNested_& nestedExpression() const { return m_matrix; }
|
|
92
|
+
|
|
93
|
+
protected:
|
|
94
|
+
MatrixTypeNested m_matrix;
|
|
95
|
+
const internal::variable_if_dynamic<Index, RowFactor> m_rowFactor;
|
|
96
|
+
const internal::variable_if_dynamic<Index, ColFactor> m_colFactor;
|
|
106
97
|
};
|
|
107
98
|
|
|
108
99
|
/**
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
template<typename Derived>
|
|
117
|
-
template<int RowFactor, int ColFactor>
|
|
118
|
-
const Replicate<Derived,RowFactor,ColFactor>
|
|
119
|
-
|
|
120
|
-
{
|
|
121
|
-
return Replicate<Derived,RowFactor,ColFactor>(derived());
|
|
100
|
+
* \return an expression of the replication of \c *this
|
|
101
|
+
*
|
|
102
|
+
* Example: \include MatrixBase_replicate.cpp
|
|
103
|
+
* Output: \verbinclude MatrixBase_replicate.out
|
|
104
|
+
*
|
|
105
|
+
* \sa VectorwiseOp::replicate(), DenseBase::replicate(Index,Index), class Replicate
|
|
106
|
+
*/
|
|
107
|
+
template <typename Derived>
|
|
108
|
+
template <int RowFactor, int ColFactor>
|
|
109
|
+
EIGEN_DEVICE_FUNC const Replicate<Derived, RowFactor, ColFactor> DenseBase<Derived>::replicate() const {
|
|
110
|
+
return Replicate<Derived, RowFactor, ColFactor>(derived());
|
|
122
111
|
}
|
|
123
112
|
|
|
124
113
|
/**
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
template<typename ExpressionType, int Direction>
|
|
133
|
-
const typename VectorwiseOp<ExpressionType,Direction>::ReplicateReturnType
|
|
134
|
-
VectorwiseOp<ExpressionType,Direction>::replicate(Index factor) const
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
(_expression(),Direction==Vertical?factor:1,Direction==Horizontal?factor:1);
|
|
114
|
+
* \return an expression of the replication of each column (or row) of \c *this
|
|
115
|
+
*
|
|
116
|
+
* Example: \include DirectionWise_replicate_int.cpp
|
|
117
|
+
* Output: \verbinclude DirectionWise_replicate_int.out
|
|
118
|
+
*
|
|
119
|
+
* \sa VectorwiseOp::replicate(), DenseBase::replicate(), class Replicate
|
|
120
|
+
*/
|
|
121
|
+
template <typename ExpressionType, int Direction>
|
|
122
|
+
EIGEN_DEVICE_FUNC const typename VectorwiseOp<ExpressionType, Direction>::ReplicateReturnType
|
|
123
|
+
VectorwiseOp<ExpressionType, Direction>::replicate(Index factor) const {
|
|
124
|
+
return typename VectorwiseOp<ExpressionType, Direction>::ReplicateReturnType(
|
|
125
|
+
_expression(), Direction == Vertical ? factor : 1, Direction == Horizontal ? factor : 1);
|
|
138
126
|
}
|
|
139
127
|
|
|
140
|
-
}
|
|
128
|
+
} // end namespace Eigen
|
|
141
129
|
|
|
142
|
-
#endif
|
|
130
|
+
#endif // EIGEN_REPLICATE_H
|
|
@@ -0,0 +1,398 @@
|
|
|
1
|
+
// This file is part of Eigen, a lightweight C++ template library
|
|
2
|
+
// for linear algebra.
|
|
3
|
+
//
|
|
4
|
+
// Copyright (C) 2008-2017 Gael Guennebaud <gael.guennebaud@inria.fr>
|
|
5
|
+
// Copyright (C) 2014 yoco <peter.xiau@gmail.com>
|
|
6
|
+
//
|
|
7
|
+
// This Source Code Form is subject to the terms of the Mozilla
|
|
8
|
+
// Public License v. 2.0. If a copy of the MPL was not distributed
|
|
9
|
+
// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
10
|
+
|
|
11
|
+
#ifndef EIGEN_RESHAPED_H
|
|
12
|
+
#define EIGEN_RESHAPED_H
|
|
13
|
+
|
|
14
|
+
// IWYU pragma: private
|
|
15
|
+
#include "./InternalHeaderCheck.h"
|
|
16
|
+
|
|
17
|
+
namespace Eigen {
|
|
18
|
+
|
|
19
|
+
/** \class Reshaped
|
|
20
|
+
* \ingroup Core_Module
|
|
21
|
+
*
|
|
22
|
+
* \brief Expression of a fixed-size or dynamic-size reshape
|
|
23
|
+
*
|
|
24
|
+
* \tparam XprType the type of the expression in which we are taking a reshape
|
|
25
|
+
* \tparam Rows the number of rows of the reshape we are taking at compile time (optional)
|
|
26
|
+
* \tparam Cols the number of columns of the reshape we are taking at compile time (optional)
|
|
27
|
+
* \tparam Order can be ColMajor or RowMajor, default is ColMajor.
|
|
28
|
+
*
|
|
29
|
+
* This class represents an expression of either a fixed-size or dynamic-size reshape.
|
|
30
|
+
* It is the return type of DenseBase::reshaped(NRowsType,NColsType) and
|
|
31
|
+
* most of the time this is the only way it is used.
|
|
32
|
+
*
|
|
33
|
+
* If you want to directly manipulate reshaped expressions,
|
|
34
|
+
* for instance if you want to write a function returning such an expression,
|
|
35
|
+
* it is advised to use the \em auto keyword for such use cases.
|
|
36
|
+
*
|
|
37
|
+
* Here is an example illustrating the dynamic case:
|
|
38
|
+
* \include class_Reshaped.cpp
|
|
39
|
+
* Output: \verbinclude class_Reshaped.out
|
|
40
|
+
*
|
|
41
|
+
* Here is an example illustrating the fixed-size case:
|
|
42
|
+
* \include class_FixedReshaped.cpp
|
|
43
|
+
* Output: \verbinclude class_FixedReshaped.out
|
|
44
|
+
*
|
|
45
|
+
* \sa DenseBase::reshaped(NRowsType,NColsType)
|
|
46
|
+
*/
|
|
47
|
+
|
|
48
|
+
namespace internal {
|
|
49
|
+
|
|
50
|
+
template <typename XprType, int Rows, int Cols, int Order>
|
|
51
|
+
struct traits<Reshaped<XprType, Rows, Cols, Order> > : traits<XprType> {
|
|
52
|
+
typedef typename traits<XprType>::Scalar Scalar;
|
|
53
|
+
typedef typename traits<XprType>::StorageKind StorageKind;
|
|
54
|
+
typedef typename traits<XprType>::XprKind XprKind;
|
|
55
|
+
enum {
|
|
56
|
+
MatrixRows = traits<XprType>::RowsAtCompileTime,
|
|
57
|
+
MatrixCols = traits<XprType>::ColsAtCompileTime,
|
|
58
|
+
RowsAtCompileTime = Rows,
|
|
59
|
+
ColsAtCompileTime = Cols,
|
|
60
|
+
MaxRowsAtCompileTime = Rows,
|
|
61
|
+
MaxColsAtCompileTime = Cols,
|
|
62
|
+
XpxStorageOrder = ((int(traits<XprType>::Flags) & RowMajorBit) == RowMajorBit) ? RowMajor : ColMajor,
|
|
63
|
+
ReshapedStorageOrder = (RowsAtCompileTime == 1 && ColsAtCompileTime != 1) ? RowMajor
|
|
64
|
+
: (ColsAtCompileTime == 1 && RowsAtCompileTime != 1) ? ColMajor
|
|
65
|
+
: XpxStorageOrder,
|
|
66
|
+
HasSameStorageOrderAsXprType = (ReshapedStorageOrder == XpxStorageOrder),
|
|
67
|
+
InnerSize = (ReshapedStorageOrder == int(RowMajor)) ? int(ColsAtCompileTime) : int(RowsAtCompileTime),
|
|
68
|
+
InnerStrideAtCompileTime = HasSameStorageOrderAsXprType ? int(inner_stride_at_compile_time<XprType>::ret) : Dynamic,
|
|
69
|
+
OuterStrideAtCompileTime = Dynamic,
|
|
70
|
+
|
|
71
|
+
HasDirectAccess = internal::has_direct_access<XprType>::ret && (Order == int(XpxStorageOrder)) &&
|
|
72
|
+
((evaluator<XprType>::Flags & LinearAccessBit) == LinearAccessBit),
|
|
73
|
+
|
|
74
|
+
MaskPacketAccessBit =
|
|
75
|
+
(InnerSize == Dynamic || (InnerSize % packet_traits<Scalar>::size) == 0) && (InnerStrideAtCompileTime == 1)
|
|
76
|
+
? PacketAccessBit
|
|
77
|
+
: 0,
|
|
78
|
+
// MaskAlignedBit = ((OuterStrideAtCompileTime!=Dynamic) && (((OuterStrideAtCompileTime * int(sizeof(Scalar))) % 16)
|
|
79
|
+
// == 0)) ? AlignedBit : 0,
|
|
80
|
+
FlagsLinearAccessBit = (RowsAtCompileTime == 1 || ColsAtCompileTime == 1) ? LinearAccessBit : 0,
|
|
81
|
+
FlagsLvalueBit = is_lvalue<XprType>::value ? LvalueBit : 0,
|
|
82
|
+
FlagsRowMajorBit = (ReshapedStorageOrder == int(RowMajor)) ? RowMajorBit : 0,
|
|
83
|
+
FlagsDirectAccessBit = HasDirectAccess ? DirectAccessBit : 0,
|
|
84
|
+
Flags0 = traits<XprType>::Flags & ((HereditaryBits & ~RowMajorBit) | MaskPacketAccessBit),
|
|
85
|
+
|
|
86
|
+
Flags = (Flags0 | FlagsLinearAccessBit | FlagsLvalueBit | FlagsRowMajorBit | FlagsDirectAccessBit)
|
|
87
|
+
};
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
template <typename XprType, int Rows, int Cols, int Order, bool HasDirectAccess>
|
|
91
|
+
class ReshapedImpl_dense;
|
|
92
|
+
|
|
93
|
+
} // end namespace internal
|
|
94
|
+
|
|
95
|
+
template <typename XprType, int Rows, int Cols, int Order, typename StorageKind>
|
|
96
|
+
class ReshapedImpl;
|
|
97
|
+
|
|
98
|
+
template <typename XprType, int Rows, int Cols, int Order>
|
|
99
|
+
class Reshaped : public ReshapedImpl<XprType, Rows, Cols, Order, typename internal::traits<XprType>::StorageKind> {
|
|
100
|
+
typedef ReshapedImpl<XprType, Rows, Cols, Order, typename internal::traits<XprType>::StorageKind> Impl;
|
|
101
|
+
|
|
102
|
+
public:
|
|
103
|
+
// typedef typename Impl::Base Base;
|
|
104
|
+
typedef Impl Base;
|
|
105
|
+
EIGEN_GENERIC_PUBLIC_INTERFACE(Reshaped)
|
|
106
|
+
EIGEN_INHERIT_ASSIGNMENT_OPERATORS(Reshaped)
|
|
107
|
+
|
|
108
|
+
/** Fixed-size constructor
|
|
109
|
+
*/
|
|
110
|
+
EIGEN_DEVICE_FUNC inline Reshaped(XprType& xpr) : Impl(xpr) {
|
|
111
|
+
EIGEN_STATIC_ASSERT(RowsAtCompileTime != Dynamic && ColsAtCompileTime != Dynamic,
|
|
112
|
+
THIS_METHOD_IS_ONLY_FOR_FIXED_SIZE)
|
|
113
|
+
eigen_assert(Rows * Cols == xpr.rows() * xpr.cols());
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/** Dynamic-size constructor
|
|
117
|
+
*/
|
|
118
|
+
EIGEN_DEVICE_FUNC inline Reshaped(XprType& xpr, Index reshapeRows, Index reshapeCols)
|
|
119
|
+
: Impl(xpr, reshapeRows, reshapeCols) {
|
|
120
|
+
eigen_assert((RowsAtCompileTime == Dynamic || RowsAtCompileTime == reshapeRows) &&
|
|
121
|
+
(ColsAtCompileTime == Dynamic || ColsAtCompileTime == reshapeCols));
|
|
122
|
+
eigen_assert(reshapeRows * reshapeCols == xpr.rows() * xpr.cols());
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
// The generic default implementation for dense reshape simply forward to the internal::ReshapedImpl_dense
|
|
127
|
+
// that must be specialized for direct and non-direct access...
|
|
128
|
+
template <typename XprType, int Rows, int Cols, int Order>
|
|
129
|
+
class ReshapedImpl<XprType, Rows, Cols, Order, Dense>
|
|
130
|
+
: public internal::ReshapedImpl_dense<XprType, Rows, Cols, Order,
|
|
131
|
+
internal::traits<Reshaped<XprType, Rows, Cols, Order> >::HasDirectAccess> {
|
|
132
|
+
typedef internal::ReshapedImpl_dense<XprType, Rows, Cols, Order,
|
|
133
|
+
internal::traits<Reshaped<XprType, Rows, Cols, Order> >::HasDirectAccess>
|
|
134
|
+
Impl;
|
|
135
|
+
|
|
136
|
+
public:
|
|
137
|
+
typedef Impl Base;
|
|
138
|
+
EIGEN_INHERIT_ASSIGNMENT_OPERATORS(ReshapedImpl)
|
|
139
|
+
EIGEN_DEVICE_FUNC inline ReshapedImpl(XprType& xpr) : Impl(xpr) {}
|
|
140
|
+
EIGEN_DEVICE_FUNC inline ReshapedImpl(XprType& xpr, Index reshapeRows, Index reshapeCols)
|
|
141
|
+
: Impl(xpr, reshapeRows, reshapeCols) {}
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
namespace internal {
|
|
145
|
+
|
|
146
|
+
/** \internal Internal implementation of dense Reshaped in the general case. */
|
|
147
|
+
template <typename XprType, int Rows, int Cols, int Order>
|
|
148
|
+
class ReshapedImpl_dense<XprType, Rows, Cols, Order, false>
|
|
149
|
+
: public internal::dense_xpr_base<Reshaped<XprType, Rows, Cols, Order> >::type {
|
|
150
|
+
typedef Reshaped<XprType, Rows, Cols, Order> ReshapedType;
|
|
151
|
+
|
|
152
|
+
public:
|
|
153
|
+
typedef typename internal::dense_xpr_base<ReshapedType>::type Base;
|
|
154
|
+
EIGEN_DENSE_PUBLIC_INTERFACE(ReshapedType)
|
|
155
|
+
EIGEN_INHERIT_ASSIGNMENT_OPERATORS(ReshapedImpl_dense)
|
|
156
|
+
|
|
157
|
+
typedef typename internal::ref_selector<XprType>::non_const_type MatrixTypeNested;
|
|
158
|
+
typedef internal::remove_all_t<XprType> NestedExpression;
|
|
159
|
+
|
|
160
|
+
class InnerIterator;
|
|
161
|
+
|
|
162
|
+
/** Fixed-size constructor
|
|
163
|
+
*/
|
|
164
|
+
EIGEN_DEVICE_FUNC inline ReshapedImpl_dense(XprType& xpr) : m_xpr(xpr), m_rows(Rows), m_cols(Cols) {}
|
|
165
|
+
|
|
166
|
+
/** Dynamic-size constructor
|
|
167
|
+
*/
|
|
168
|
+
EIGEN_DEVICE_FUNC inline ReshapedImpl_dense(XprType& xpr, Index nRows, Index nCols)
|
|
169
|
+
: m_xpr(xpr), m_rows(nRows), m_cols(nCols) {}
|
|
170
|
+
|
|
171
|
+
EIGEN_DEVICE_FUNC Index rows() const { return m_rows; }
|
|
172
|
+
EIGEN_DEVICE_FUNC Index cols() const { return m_cols; }
|
|
173
|
+
|
|
174
|
+
#ifdef EIGEN_PARSED_BY_DOXYGEN
|
|
175
|
+
/** \sa MapBase::data() */
|
|
176
|
+
EIGEN_DEVICE_FUNC constexpr const Scalar* data() const;
|
|
177
|
+
EIGEN_DEVICE_FUNC inline Index innerStride() const;
|
|
178
|
+
EIGEN_DEVICE_FUNC inline Index outerStride() const;
|
|
179
|
+
#endif
|
|
180
|
+
|
|
181
|
+
/** \returns the nested expression */
|
|
182
|
+
EIGEN_DEVICE_FUNC const internal::remove_all_t<XprType>& nestedExpression() const { return m_xpr; }
|
|
183
|
+
|
|
184
|
+
/** \returns the nested expression */
|
|
185
|
+
EIGEN_DEVICE_FUNC std::remove_reference_t<XprType>& nestedExpression() { return m_xpr; }
|
|
186
|
+
|
|
187
|
+
protected:
|
|
188
|
+
MatrixTypeNested m_xpr;
|
|
189
|
+
const internal::variable_if_dynamic<Index, Rows> m_rows;
|
|
190
|
+
const internal::variable_if_dynamic<Index, Cols> m_cols;
|
|
191
|
+
};
|
|
192
|
+
|
|
193
|
+
/** \internal Internal implementation of dense Reshaped in the direct access case. */
|
|
194
|
+
template <typename XprType, int Rows, int Cols, int Order>
|
|
195
|
+
class ReshapedImpl_dense<XprType, Rows, Cols, Order, true> : public MapBase<Reshaped<XprType, Rows, Cols, Order> > {
|
|
196
|
+
typedef Reshaped<XprType, Rows, Cols, Order> ReshapedType;
|
|
197
|
+
typedef typename internal::ref_selector<XprType>::non_const_type XprTypeNested;
|
|
198
|
+
|
|
199
|
+
public:
|
|
200
|
+
typedef MapBase<ReshapedType> Base;
|
|
201
|
+
EIGEN_DENSE_PUBLIC_INTERFACE(ReshapedType)
|
|
202
|
+
EIGEN_INHERIT_ASSIGNMENT_OPERATORS(ReshapedImpl_dense)
|
|
203
|
+
|
|
204
|
+
/** Fixed-size constructor
|
|
205
|
+
*/
|
|
206
|
+
EIGEN_DEVICE_FUNC inline ReshapedImpl_dense(XprType& xpr) : Base(xpr.data()), m_xpr(xpr) {}
|
|
207
|
+
|
|
208
|
+
/** Dynamic-size constructor
|
|
209
|
+
*/
|
|
210
|
+
EIGEN_DEVICE_FUNC inline ReshapedImpl_dense(XprType& xpr, Index nRows, Index nCols)
|
|
211
|
+
: Base(xpr.data(), nRows, nCols), m_xpr(xpr) {}
|
|
212
|
+
|
|
213
|
+
EIGEN_DEVICE_FUNC const internal::remove_all_t<XprTypeNested>& nestedExpression() const { return m_xpr; }
|
|
214
|
+
|
|
215
|
+
EIGEN_DEVICE_FUNC XprType& nestedExpression() { return m_xpr; }
|
|
216
|
+
|
|
217
|
+
/** \sa MapBase::innerStride() */
|
|
218
|
+
EIGEN_DEVICE_FUNC constexpr Index innerStride() const { return m_xpr.innerStride(); }
|
|
219
|
+
|
|
220
|
+
/** \sa MapBase::outerStride() */
|
|
221
|
+
EIGEN_DEVICE_FUNC constexpr Index outerStride() const {
|
|
222
|
+
return (((Flags & RowMajorBit) == RowMajorBit) ? this->cols() : this->rows()) * m_xpr.innerStride();
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
protected:
|
|
226
|
+
XprTypeNested m_xpr;
|
|
227
|
+
};
|
|
228
|
+
|
|
229
|
+
// Evaluators
|
|
230
|
+
template <typename ArgType, int Rows, int Cols, int Order, bool HasDirectAccess>
|
|
231
|
+
struct reshaped_evaluator;
|
|
232
|
+
|
|
233
|
+
template <typename ArgType, int Rows, int Cols, int Order>
|
|
234
|
+
struct evaluator<Reshaped<ArgType, Rows, Cols, Order> >
|
|
235
|
+
: reshaped_evaluator<ArgType, Rows, Cols, Order, traits<Reshaped<ArgType, Rows, Cols, Order> >::HasDirectAccess> {
|
|
236
|
+
typedef Reshaped<ArgType, Rows, Cols, Order> XprType;
|
|
237
|
+
typedef typename XprType::Scalar Scalar;
|
|
238
|
+
// TODO: should check for smaller packet types
|
|
239
|
+
typedef typename packet_traits<Scalar>::type PacketScalar;
|
|
240
|
+
|
|
241
|
+
enum {
|
|
242
|
+
CoeffReadCost = evaluator<ArgType>::CoeffReadCost,
|
|
243
|
+
HasDirectAccess = traits<XprType>::HasDirectAccess,
|
|
244
|
+
|
|
245
|
+
// RowsAtCompileTime = traits<XprType>::RowsAtCompileTime,
|
|
246
|
+
// ColsAtCompileTime = traits<XprType>::ColsAtCompileTime,
|
|
247
|
+
// MaxRowsAtCompileTime = traits<XprType>::MaxRowsAtCompileTime,
|
|
248
|
+
// MaxColsAtCompileTime = traits<XprType>::MaxColsAtCompileTime,
|
|
249
|
+
//
|
|
250
|
+
// InnerStrideAtCompileTime = traits<XprType>::HasSameStorageOrderAsXprType
|
|
251
|
+
// ? int(inner_stride_at_compile_time<ArgType>::ret)
|
|
252
|
+
// : Dynamic,
|
|
253
|
+
// OuterStrideAtCompileTime = Dynamic,
|
|
254
|
+
|
|
255
|
+
FlagsLinearAccessBit =
|
|
256
|
+
(traits<XprType>::RowsAtCompileTime == 1 || traits<XprType>::ColsAtCompileTime == 1 || HasDirectAccess)
|
|
257
|
+
? LinearAccessBit
|
|
258
|
+
: 0,
|
|
259
|
+
FlagsRowMajorBit = (traits<XprType>::ReshapedStorageOrder == int(RowMajor)) ? RowMajorBit : 0,
|
|
260
|
+
FlagsDirectAccessBit = HasDirectAccess ? DirectAccessBit : 0,
|
|
261
|
+
Flags0 = evaluator<ArgType>::Flags & (HereditaryBits & ~RowMajorBit),
|
|
262
|
+
Flags = Flags0 | FlagsLinearAccessBit | FlagsRowMajorBit | FlagsDirectAccessBit,
|
|
263
|
+
|
|
264
|
+
PacketAlignment = unpacket_traits<PacketScalar>::alignment,
|
|
265
|
+
Alignment = evaluator<ArgType>::Alignment
|
|
266
|
+
};
|
|
267
|
+
typedef reshaped_evaluator<ArgType, Rows, Cols, Order, HasDirectAccess> reshaped_evaluator_type;
|
|
268
|
+
EIGEN_DEVICE_FUNC explicit evaluator(const XprType& xpr) : reshaped_evaluator_type(xpr) {
|
|
269
|
+
EIGEN_INTERNAL_CHECK_COST_VALUE(CoeffReadCost);
|
|
270
|
+
}
|
|
271
|
+
};
|
|
272
|
+
|
|
273
|
+
template <typename ArgType, int Rows, int Cols, int Order>
|
|
274
|
+
struct reshaped_evaluator<ArgType, Rows, Cols, Order, /* HasDirectAccess */ false>
|
|
275
|
+
: evaluator_base<Reshaped<ArgType, Rows, Cols, Order> > {
|
|
276
|
+
typedef Reshaped<ArgType, Rows, Cols, Order> XprType;
|
|
277
|
+
|
|
278
|
+
enum {
|
|
279
|
+
CoeffReadCost = evaluator<ArgType>::CoeffReadCost /* TODO + cost of index computations */,
|
|
280
|
+
|
|
281
|
+
Flags = (evaluator<ArgType>::Flags & (HereditaryBits /*| LinearAccessBit | DirectAccessBit*/)),
|
|
282
|
+
|
|
283
|
+
Alignment = 0
|
|
284
|
+
};
|
|
285
|
+
|
|
286
|
+
EIGEN_DEVICE_FUNC explicit reshaped_evaluator(const XprType& xpr) : m_argImpl(xpr.nestedExpression()), m_xpr(xpr) {
|
|
287
|
+
EIGEN_INTERNAL_CHECK_COST_VALUE(CoeffReadCost);
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
typedef typename XprType::Scalar Scalar;
|
|
291
|
+
typedef typename XprType::CoeffReturnType CoeffReturnType;
|
|
292
|
+
|
|
293
|
+
typedef std::pair<Index, Index> RowCol;
|
|
294
|
+
|
|
295
|
+
EIGEN_DEVICE_FUNC inline RowCol index_remap(Index rowId, Index colId) const {
|
|
296
|
+
if (Order == ColMajor) {
|
|
297
|
+
const Index nth_elem_idx = colId * m_xpr.rows() + rowId;
|
|
298
|
+
return RowCol(nth_elem_idx % m_xpr.nestedExpression().rows(), nth_elem_idx / m_xpr.nestedExpression().rows());
|
|
299
|
+
} else {
|
|
300
|
+
const Index nth_elem_idx = colId + rowId * m_xpr.cols();
|
|
301
|
+
return RowCol(nth_elem_idx / m_xpr.nestedExpression().cols(), nth_elem_idx % m_xpr.nestedExpression().cols());
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
EIGEN_DEVICE_FUNC inline Scalar& coeffRef(Index rowId, Index colId) {
|
|
306
|
+
EIGEN_STATIC_ASSERT_LVALUE(XprType)
|
|
307
|
+
const RowCol row_col = index_remap(rowId, colId);
|
|
308
|
+
return m_argImpl.coeffRef(row_col.first, row_col.second);
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
EIGEN_DEVICE_FUNC inline const Scalar& coeffRef(Index rowId, Index colId) const {
|
|
312
|
+
const RowCol row_col = index_remap(rowId, colId);
|
|
313
|
+
return m_argImpl.coeffRef(row_col.first, row_col.second);
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const CoeffReturnType coeff(Index rowId, Index colId) const {
|
|
317
|
+
const RowCol row_col = index_remap(rowId, colId);
|
|
318
|
+
return m_argImpl.coeff(row_col.first, row_col.second);
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
EIGEN_DEVICE_FUNC inline Scalar& coeffRef(Index index) {
|
|
322
|
+
EIGEN_STATIC_ASSERT_LVALUE(XprType)
|
|
323
|
+
const RowCol row_col = index_remap(Rows == 1 ? 0 : index, Rows == 1 ? index : 0);
|
|
324
|
+
return m_argImpl.coeffRef(row_col.first, row_col.second);
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
EIGEN_DEVICE_FUNC inline const Scalar& coeffRef(Index index) const {
|
|
328
|
+
const RowCol row_col = index_remap(Rows == 1 ? 0 : index, Rows == 1 ? index : 0);
|
|
329
|
+
return m_argImpl.coeffRef(row_col.first, row_col.second);
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
EIGEN_DEVICE_FUNC inline const CoeffReturnType coeff(Index index) const {
|
|
333
|
+
const RowCol row_col = index_remap(Rows == 1 ? 0 : index, Rows == 1 ? index : 0);
|
|
334
|
+
return m_argImpl.coeff(row_col.first, row_col.second);
|
|
335
|
+
}
|
|
336
|
+
#if 0
|
|
337
|
+
EIGEN_DEVICE_FUNC
|
|
338
|
+
template<int LoadMode>
|
|
339
|
+
inline PacketScalar packet(Index rowId, Index colId) const
|
|
340
|
+
{
|
|
341
|
+
const RowCol row_col = index_remap(rowId, colId);
|
|
342
|
+
return m_argImpl.template packet<Unaligned>(row_col.first, row_col.second);
|
|
343
|
+
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
template<int LoadMode>
|
|
347
|
+
EIGEN_DEVICE_FUNC
|
|
348
|
+
inline void writePacket(Index rowId, Index colId, const PacketScalar& val)
|
|
349
|
+
{
|
|
350
|
+
const RowCol row_col = index_remap(rowId, colId);
|
|
351
|
+
m_argImpl.const_cast_derived().template writePacket<Unaligned>
|
|
352
|
+
(row_col.first, row_col.second, val);
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
template<int LoadMode>
|
|
356
|
+
EIGEN_DEVICE_FUNC
|
|
357
|
+
inline PacketScalar packet(Index index) const
|
|
358
|
+
{
|
|
359
|
+
const RowCol row_col = index_remap(RowsAtCompileTime == 1 ? 0 : index,
|
|
360
|
+
RowsAtCompileTime == 1 ? index : 0);
|
|
361
|
+
return m_argImpl.template packet<Unaligned>(row_col.first, row_col.second);
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
template<int LoadMode>
|
|
365
|
+
EIGEN_DEVICE_FUNC
|
|
366
|
+
inline void writePacket(Index index, const PacketScalar& val)
|
|
367
|
+
{
|
|
368
|
+
const RowCol row_col = index_remap(RowsAtCompileTime == 1 ? 0 : index,
|
|
369
|
+
RowsAtCompileTime == 1 ? index : 0);
|
|
370
|
+
return m_argImpl.template packet<Unaligned>(row_col.first, row_col.second, val);
|
|
371
|
+
}
|
|
372
|
+
#endif
|
|
373
|
+
protected:
|
|
374
|
+
evaluator<ArgType> m_argImpl;
|
|
375
|
+
const XprType& m_xpr;
|
|
376
|
+
};
|
|
377
|
+
|
|
378
|
+
template <typename ArgType, int Rows, int Cols, int Order>
|
|
379
|
+
struct reshaped_evaluator<ArgType, Rows, Cols, Order, /* HasDirectAccess */ true>
|
|
380
|
+
: mapbase_evaluator<Reshaped<ArgType, Rows, Cols, Order>,
|
|
381
|
+
typename Reshaped<ArgType, Rows, Cols, Order>::PlainObject> {
|
|
382
|
+
typedef Reshaped<ArgType, Rows, Cols, Order> XprType;
|
|
383
|
+
typedef typename XprType::Scalar Scalar;
|
|
384
|
+
|
|
385
|
+
EIGEN_DEVICE_FUNC explicit reshaped_evaluator(const XprType& xpr)
|
|
386
|
+
: mapbase_evaluator<XprType, typename XprType::PlainObject>(xpr) {
|
|
387
|
+
// TODO: for the 3.4 release, this should be turned to an internal assertion, but let's keep it as is for the beta
|
|
388
|
+
// lifetime
|
|
389
|
+
eigen_assert(((std::uintptr_t(xpr.data()) % plain_enum_max(1, evaluator<XprType>::Alignment)) == 0) &&
|
|
390
|
+
"data is not aligned");
|
|
391
|
+
}
|
|
392
|
+
};
|
|
393
|
+
|
|
394
|
+
} // end namespace internal
|
|
395
|
+
|
|
396
|
+
} // end namespace Eigen
|
|
397
|
+
|
|
398
|
+
#endif // EIGEN_RESHAPED_H
|