@smake/eigen 1.0.1 → 1.1.0
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/COPYING.APACHE +203 -0
- package/eigen/COPYING.BSD +1 -1
- package/eigen/COPYING.MINPACK +51 -52
- package/eigen/Eigen/Cholesky +0 -1
- package/eigen/Eigen/Core +108 -266
- package/eigen/Eigen/Eigenvalues +0 -1
- package/eigen/Eigen/Geometry +3 -6
- package/eigen/Eigen/Householder +0 -1
- package/eigen/Eigen/Jacobi +0 -1
- package/eigen/Eigen/KLUSupport +41 -0
- package/eigen/Eigen/LU +2 -5
- package/eigen/Eigen/OrderingMethods +0 -3
- package/eigen/Eigen/PaStiXSupport +1 -0
- package/eigen/Eigen/PardisoSupport +0 -0
- package/eigen/Eigen/QR +0 -1
- package/eigen/Eigen/QtAlignedMalloc +0 -1
- package/eigen/Eigen/SVD +0 -1
- package/eigen/Eigen/Sparse +0 -2
- package/eigen/Eigen/SparseCholesky +0 -8
- package/eigen/Eigen/SparseLU +4 -0
- package/eigen/Eigen/src/Cholesky/LDLT.h +42 -27
- package/eigen/Eigen/src/Cholesky/LLT.h +39 -23
- package/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +90 -47
- package/eigen/Eigen/src/Core/ArithmeticSequence.h +413 -0
- package/eigen/Eigen/src/Core/Array.h +99 -11
- package/eigen/Eigen/src/Core/ArrayBase.h +1 -1
- package/eigen/Eigen/src/Core/ArrayWrapper.h +21 -21
- package/eigen/Eigen/src/Core/Assign.h +1 -1
- package/eigen/Eigen/src/Core/AssignEvaluator.h +125 -50
- package/eigen/Eigen/src/Core/Assign_MKL.h +10 -10
- package/eigen/Eigen/src/Core/BandMatrix.h +16 -16
- package/eigen/Eigen/src/Core/Block.h +56 -60
- package/eigen/Eigen/src/Core/BooleanRedux.h +29 -31
- package/eigen/Eigen/src/Core/CommaInitializer.h +7 -3
- package/eigen/Eigen/src/Core/CoreEvaluators.h +325 -272
- package/eigen/Eigen/src/Core/CoreIterators.h +5 -0
- package/eigen/Eigen/src/Core/CwiseBinaryOp.h +21 -22
- package/eigen/Eigen/src/Core/CwiseNullaryOp.h +153 -18
- package/eigen/Eigen/src/Core/CwiseUnaryOp.h +6 -6
- package/eigen/Eigen/src/Core/CwiseUnaryView.h +12 -10
- package/eigen/Eigen/src/Core/DenseBase.h +128 -39
- package/eigen/Eigen/src/Core/DenseCoeffsBase.h +25 -21
- package/eigen/Eigen/src/Core/DenseStorage.h +150 -68
- package/eigen/Eigen/src/Core/Diagonal.h +21 -23
- package/eigen/Eigen/src/Core/DiagonalMatrix.h +50 -2
- package/eigen/Eigen/src/Core/DiagonalProduct.h +1 -1
- package/eigen/Eigen/src/Core/Dot.h +10 -10
- package/eigen/Eigen/src/Core/EigenBase.h +10 -9
- package/eigen/Eigen/src/Core/ForceAlignedAccess.h +8 -4
- package/eigen/Eigen/src/Core/Fuzzy.h +3 -3
- package/eigen/Eigen/src/Core/GeneralProduct.h +20 -10
- package/eigen/Eigen/src/Core/GenericPacketMath.h +597 -147
- package/eigen/Eigen/src/Core/GlobalFunctions.h +40 -33
- package/eigen/Eigen/src/Core/IO.h +40 -7
- package/eigen/Eigen/src/Core/IndexedView.h +237 -0
- package/eigen/Eigen/src/Core/Inverse.h +9 -10
- package/eigen/Eigen/src/Core/Map.h +7 -7
- package/eigen/Eigen/src/Core/MapBase.h +5 -3
- package/eigen/Eigen/src/Core/MathFunctions.h +756 -120
- package/eigen/Eigen/src/Core/MathFunctionsImpl.h +118 -19
- package/eigen/Eigen/src/Core/Matrix.h +131 -25
- package/eigen/Eigen/src/Core/MatrixBase.h +19 -2
- package/eigen/Eigen/src/Core/NestByValue.h +25 -50
- package/eigen/Eigen/src/Core/NoAlias.h +4 -3
- package/eigen/Eigen/src/Core/NumTraits.h +107 -20
- package/eigen/Eigen/src/Core/PartialReduxEvaluator.h +232 -0
- package/eigen/Eigen/src/Core/PermutationMatrix.h +3 -3
- package/eigen/Eigen/src/Core/PlainObjectBase.h +145 -54
- package/eigen/Eigen/src/Core/Product.h +30 -25
- package/eigen/Eigen/src/Core/ProductEvaluators.h +183 -142
- package/eigen/Eigen/src/Core/Random.h +37 -1
- package/eigen/Eigen/src/Core/Redux.h +180 -170
- package/eigen/Eigen/src/Core/Ref.h +118 -21
- package/eigen/Eigen/src/Core/Replicate.h +8 -8
- package/eigen/Eigen/src/Core/Reshaped.h +454 -0
- package/eigen/Eigen/src/Core/ReturnByValue.h +7 -5
- package/eigen/Eigen/src/Core/Reverse.h +18 -12
- package/eigen/Eigen/src/Core/Select.h +8 -6
- package/eigen/Eigen/src/Core/SelfAdjointView.h +33 -20
- package/eigen/Eigen/src/Core/Solve.h +14 -14
- package/eigen/Eigen/src/Core/SolveTriangular.h +13 -13
- package/eigen/Eigen/src/Core/SolverBase.h +41 -3
- package/eigen/Eigen/src/Core/StableNorm.h +100 -70
- package/eigen/Eigen/src/Core/StlIterators.h +463 -0
- package/eigen/Eigen/src/Core/Stride.h +9 -4
- package/eigen/Eigen/src/Core/Swap.h +5 -4
- package/eigen/Eigen/src/Core/Transpose.h +86 -27
- package/eigen/Eigen/src/Core/Transpositions.h +26 -8
- package/eigen/Eigen/src/Core/TriangularMatrix.h +88 -72
- package/eigen/Eigen/src/Core/VectorBlock.h +5 -5
- package/eigen/Eigen/src/Core/VectorwiseOp.h +159 -70
- package/eigen/Eigen/src/Core/Visitor.h +137 -29
- package/eigen/Eigen/src/Core/arch/AVX/Complex.h +50 -129
- package/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +126 -337
- package/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +1092 -155
- package/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +65 -1
- package/eigen/Eigen/src/Core/arch/AVX512/Complex.h +422 -0
- package/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +186 -213
- package/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +1250 -252
- package/eigen/Eigen/src/Core/arch/AVX512/TypeCasting.h +89 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +152 -165
- package/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +19 -251
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +2937 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +221 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +629 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h +2042 -392
- package/eigen/Eigen/src/Core/arch/CUDA/Complex.h +235 -80
- package/eigen/Eigen/src/Core/arch/Default/BFloat16.h +700 -0
- package/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +102 -14
- package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +1649 -0
- package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +110 -0
- package/eigen/Eigen/src/Core/arch/Default/Half.h +942 -0
- package/eigen/Eigen/src/Core/arch/Default/Settings.h +1 -1
- package/eigen/Eigen/src/Core/arch/Default/TypeCasting.h +120 -0
- package/eigen/Eigen/src/Core/arch/{CUDA → GPU}/MathFunctions.h +16 -4
- package/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +1685 -0
- package/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +80 -0
- package/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
- package/eigen/Eigen/src/Core/arch/MSA/Complex.h +648 -0
- package/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +387 -0
- package/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +1233 -0
- package/eigen/Eigen/src/Core/arch/NEON/Complex.h +313 -219
- package/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +183 -0
- package/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +54 -70
- package/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +4376 -549
- package/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +1419 -0
- package/eigen/Eigen/src/Core/arch/SSE/Complex.h +59 -179
- package/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +65 -428
- package/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +893 -283
- package/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +65 -0
- package/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +44 -0
- package/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +752 -0
- package/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +49 -0
- package/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +232 -0
- package/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +301 -0
- package/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +670 -0
- package/eigen/Eigen/src/Core/arch/SYCL/SyclMemoryModel.h +694 -0
- package/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +85 -0
- package/eigen/Eigen/src/Core/arch/ZVector/Complex.h +212 -183
- package/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +101 -5
- package/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +510 -395
- package/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +11 -2
- package/eigen/Eigen/src/Core/functors/BinaryFunctors.h +112 -46
- package/eigen/Eigen/src/Core/functors/NullaryFunctors.h +31 -30
- package/eigen/Eigen/src/Core/functors/StlFunctors.h +32 -2
- package/eigen/Eigen/src/Core/functors/UnaryFunctors.h +354 -15
- package/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +1073 -585
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +29 -7
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +4 -4
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +1 -1
- package/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +382 -483
- package/eigen/Eigen/src/Core/products/Parallelizer.h +23 -9
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +23 -6
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +8 -6
- package/eigen/Eigen/src/Core/products/SelfadjointProduct.h +2 -2
- package/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h +5 -4
- package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h +3 -3
- package/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h +5 -3
- package/eigen/Eigen/src/Core/products/TriangularSolverVector.h +13 -10
- package/eigen/Eigen/src/Core/util/BlasUtil.h +208 -124
- package/eigen/Eigen/src/Core/util/ConfigureVectorization.h +512 -0
- package/eigen/Eigen/src/Core/util/Constants.h +25 -9
- package/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +14 -2
- package/eigen/Eigen/src/Core/util/ForwardDeclarations.h +28 -4
- package/eigen/Eigen/src/Core/util/IndexedViewHelper.h +186 -0
- package/eigen/Eigen/src/Core/util/IntegralConstant.h +272 -0
- package/eigen/Eigen/src/Core/util/MKL_support.h +8 -1
- package/eigen/Eigen/src/Core/util/Macros.h +661 -250
- package/eigen/Eigen/src/Core/util/Memory.h +222 -52
- package/eigen/Eigen/src/Core/util/Meta.h +349 -105
- package/eigen/Eigen/src/Core/util/ReshapedHelper.h +51 -0
- package/eigen/Eigen/src/Core/util/StaticAssert.h +8 -5
- package/eigen/Eigen/src/Core/util/SymbolicIndex.h +293 -0
- package/eigen/Eigen/src/Core/util/XprHelper.h +48 -30
- package/eigen/Eigen/src/Eigenvalues/ComplexEigenSolver.h +1 -1
- package/eigen/Eigen/src/Eigenvalues/ComplexSchur.h +1 -1
- package/eigen/Eigen/src/Eigenvalues/EigenSolver.h +2 -2
- package/eigen/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +1 -1
- package/eigen/Eigen/src/Eigenvalues/HessenbergDecomposition.h +2 -2
- package/eigen/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +2 -2
- package/eigen/Eigen/src/Eigenvalues/RealQZ.h +9 -6
- package/eigen/Eigen/src/Eigenvalues/RealSchur.h +10 -5
- package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +75 -42
- package/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +20 -15
- package/eigen/Eigen/src/Geometry/AlignedBox.h +99 -5
- package/eigen/Eigen/src/Geometry/AngleAxis.h +4 -4
- package/eigen/Eigen/src/Geometry/EulerAngles.h +3 -3
- package/eigen/Eigen/src/Geometry/Homogeneous.h +15 -11
- package/eigen/Eigen/src/Geometry/Hyperplane.h +1 -1
- package/eigen/Eigen/src/Geometry/OrthoMethods.h +3 -2
- package/eigen/Eigen/src/Geometry/ParametrizedLine.h +39 -2
- package/eigen/Eigen/src/Geometry/Quaternion.h +52 -14
- package/eigen/Eigen/src/Geometry/Rotation2D.h +3 -3
- package/eigen/Eigen/src/Geometry/Scaling.h +22 -4
- package/eigen/Eigen/src/Geometry/Transform.h +86 -65
- package/eigen/Eigen/src/Geometry/Translation.h +6 -6
- package/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +168 -0
- package/eigen/Eigen/src/Householder/BlockHouseholder.h +9 -2
- package/eigen/Eigen/src/Householder/Householder.h +8 -4
- package/eigen/Eigen/src/Householder/HouseholderSequence.h +123 -48
- package/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +15 -15
- package/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +7 -23
- package/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +5 -22
- package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +41 -47
- package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +51 -60
- package/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +70 -20
- package/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +2 -20
- package/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +11 -9
- package/eigen/Eigen/src/Jacobi/Jacobi.h +31 -10
- package/eigen/Eigen/src/KLUSupport/KLUSupport.h +358 -0
- package/eigen/Eigen/src/LU/Determinant.h +35 -19
- package/eigen/Eigen/src/LU/FullPivLU.h +29 -43
- package/eigen/Eigen/src/LU/InverseImpl.h +25 -8
- package/eigen/Eigen/src/LU/PartialPivLU.h +67 -57
- package/eigen/Eigen/src/LU/arch/InverseSize4.h +351 -0
- package/eigen/Eigen/src/OrderingMethods/Amd.h +7 -17
- package/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +297 -277
- package/eigen/Eigen/src/OrderingMethods/Ordering.h +6 -10
- package/eigen/Eigen/src/PaStiXSupport/PaStiXSupport.h +1 -1
- package/eigen/Eigen/src/PardisoSupport/PardisoSupport.h +10 -9
- package/eigen/Eigen/src/QR/ColPivHouseholderQR.h +41 -20
- package/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +100 -27
- package/eigen/Eigen/src/QR/FullPivHouseholderQR.h +59 -22
- package/eigen/Eigen/src/QR/HouseholderQR.h +48 -23
- package/eigen/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +25 -3
- package/eigen/Eigen/src/SVD/BDCSVD.h +137 -48
- package/eigen/Eigen/src/SVD/JacobiSVD.h +22 -14
- package/eigen/Eigen/src/SVD/SVDBase.h +82 -21
- package/eigen/Eigen/src/SVD/UpperBidiagonalization.h +3 -3
- package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +16 -8
- package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +11 -36
- package/eigen/Eigen/src/SparseCore/CompressedStorage.h +16 -0
- package/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +6 -6
- package/eigen/Eigen/src/SparseCore/SparseAssign.h +81 -27
- package/eigen/Eigen/src/SparseCore/SparseBlock.h +25 -57
- package/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +40 -11
- package/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +11 -15
- package/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +2 -2
- package/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +30 -8
- package/eigen/Eigen/src/SparseCore/SparseMatrix.h +124 -10
- package/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +5 -12
- package/eigen/Eigen/src/SparseCore/SparseProduct.h +13 -1
- package/eigen/Eigen/src/SparseCore/SparseRef.h +7 -7
- package/eigen/Eigen/src/SparseCore/SparseSelfAdjointView.h +3 -0
- package/eigen/Eigen/src/SparseCore/SparseUtil.h +8 -0
- package/eigen/Eigen/src/SparseCore/SparseVector.h +1 -1
- package/eigen/Eigen/src/SparseLU/SparseLU.h +160 -10
- package/eigen/Eigen/src/SparseLU/SparseLU_Memory.h +1 -1
- package/eigen/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +76 -2
- package/eigen/Eigen/src/SparseLU/SparseLU_column_dfs.h +2 -2
- package/eigen/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +1 -1
- package/eigen/Eigen/src/SparseLU/SparseLU_panel_bmod.h +1 -1
- package/eigen/Eigen/src/SparseQR/SparseQR.h +19 -6
- package/eigen/Eigen/src/StlSupport/StdDeque.h +2 -14
- package/eigen/Eigen/src/StlSupport/StdList.h +2 -2
- package/eigen/Eigen/src/StlSupport/StdVector.h +2 -2
- package/eigen/Eigen/src/SuperLUSupport/SuperLUSupport.h +6 -8
- package/eigen/Eigen/src/UmfPackSupport/UmfPackSupport.h +175 -39
- package/eigen/Eigen/src/misc/lapacke.h +5 -4
- package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h +27 -1
- package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +155 -11
- package/eigen/Eigen/src/plugins/BlockMethods.h +626 -242
- package/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.h +14 -0
- package/eigen/Eigen/src/plugins/IndexedViewMethods.h +262 -0
- package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +4 -4
- package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +10 -0
- package/eigen/Eigen/src/plugins/ReshapedMethods.h +149 -0
- package/eigen/README.md +2 -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/arch/CUDA/Half.h +0 -675
- 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/Geometry/arch/Geometry_SSE.h +0 -161
- package/eigen/Eigen/src/LU/arch/Inverse_SSE.h +0 -338
- package/lib/eigen.d.ts +0 -2
- package/lib/eigen.js +0 -15
|
@@ -47,21 +47,21 @@ struct plain_array
|
|
|
47
47
|
|
|
48
48
|
EIGEN_DEVICE_FUNC
|
|
49
49
|
plain_array()
|
|
50
|
-
{
|
|
50
|
+
{
|
|
51
51
|
check_static_allocation_size<T,Size>();
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
EIGEN_DEVICE_FUNC
|
|
55
55
|
plain_array(constructor_without_unaligned_array_assert)
|
|
56
|
-
{
|
|
56
|
+
{
|
|
57
57
|
check_static_allocation_size<T,Size>();
|
|
58
58
|
}
|
|
59
59
|
};
|
|
60
60
|
|
|
61
61
|
#if defined(EIGEN_DISABLE_UNALIGNED_ARRAY_ASSERT)
|
|
62
62
|
#define EIGEN_MAKE_UNALIGNED_ARRAY_ASSERT(sizemask)
|
|
63
|
-
#elif EIGEN_GNUC_AT_LEAST(4,7)
|
|
64
|
-
// GCC 4.7 is too aggressive in its optimizations and remove the
|
|
63
|
+
#elif EIGEN_GNUC_AT_LEAST(4,7)
|
|
64
|
+
// GCC 4.7 is too aggressive in its optimizations and remove the alignment test based on the fact the array is declared to be aligned.
|
|
65
65
|
// See this bug report: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53900
|
|
66
66
|
// Hiding the origin of the array pointer behind a function argument seems to do the trick even if the function is inlined:
|
|
67
67
|
template<typename PtrType>
|
|
@@ -85,15 +85,15 @@ struct plain_array<T, Size, MatrixOrArrayOptions, 8>
|
|
|
85
85
|
EIGEN_ALIGN_TO_BOUNDARY(8) T array[Size];
|
|
86
86
|
|
|
87
87
|
EIGEN_DEVICE_FUNC
|
|
88
|
-
plain_array()
|
|
88
|
+
plain_array()
|
|
89
89
|
{
|
|
90
90
|
EIGEN_MAKE_UNALIGNED_ARRAY_ASSERT(7);
|
|
91
91
|
check_static_allocation_size<T,Size>();
|
|
92
92
|
}
|
|
93
93
|
|
|
94
94
|
EIGEN_DEVICE_FUNC
|
|
95
|
-
plain_array(constructor_without_unaligned_array_assert)
|
|
96
|
-
{
|
|
95
|
+
plain_array(constructor_without_unaligned_array_assert)
|
|
96
|
+
{
|
|
97
97
|
check_static_allocation_size<T,Size>();
|
|
98
98
|
}
|
|
99
99
|
};
|
|
@@ -104,15 +104,15 @@ struct plain_array<T, Size, MatrixOrArrayOptions, 16>
|
|
|
104
104
|
EIGEN_ALIGN_TO_BOUNDARY(16) T array[Size];
|
|
105
105
|
|
|
106
106
|
EIGEN_DEVICE_FUNC
|
|
107
|
-
plain_array()
|
|
108
|
-
{
|
|
107
|
+
plain_array()
|
|
108
|
+
{
|
|
109
109
|
EIGEN_MAKE_UNALIGNED_ARRAY_ASSERT(15);
|
|
110
110
|
check_static_allocation_size<T,Size>();
|
|
111
111
|
}
|
|
112
112
|
|
|
113
113
|
EIGEN_DEVICE_FUNC
|
|
114
|
-
plain_array(constructor_without_unaligned_array_assert)
|
|
115
|
-
{
|
|
114
|
+
plain_array(constructor_without_unaligned_array_assert)
|
|
115
|
+
{
|
|
116
116
|
check_static_allocation_size<T,Size>();
|
|
117
117
|
}
|
|
118
118
|
};
|
|
@@ -123,15 +123,15 @@ struct plain_array<T, Size, MatrixOrArrayOptions, 32>
|
|
|
123
123
|
EIGEN_ALIGN_TO_BOUNDARY(32) T array[Size];
|
|
124
124
|
|
|
125
125
|
EIGEN_DEVICE_FUNC
|
|
126
|
-
plain_array()
|
|
126
|
+
plain_array()
|
|
127
127
|
{
|
|
128
128
|
EIGEN_MAKE_UNALIGNED_ARRAY_ASSERT(31);
|
|
129
129
|
check_static_allocation_size<T,Size>();
|
|
130
130
|
}
|
|
131
131
|
|
|
132
132
|
EIGEN_DEVICE_FUNC
|
|
133
|
-
plain_array(constructor_without_unaligned_array_assert)
|
|
134
|
-
{
|
|
133
|
+
plain_array(constructor_without_unaligned_array_assert)
|
|
134
|
+
{
|
|
135
135
|
check_static_allocation_size<T,Size>();
|
|
136
136
|
}
|
|
137
137
|
};
|
|
@@ -142,15 +142,15 @@ struct plain_array<T, Size, MatrixOrArrayOptions, 64>
|
|
|
142
142
|
EIGEN_ALIGN_TO_BOUNDARY(64) T array[Size];
|
|
143
143
|
|
|
144
144
|
EIGEN_DEVICE_FUNC
|
|
145
|
-
plain_array()
|
|
146
|
-
{
|
|
145
|
+
plain_array()
|
|
146
|
+
{
|
|
147
147
|
EIGEN_MAKE_UNALIGNED_ARRAY_ASSERT(63);
|
|
148
148
|
check_static_allocation_size<T,Size>();
|
|
149
149
|
}
|
|
150
150
|
|
|
151
151
|
EIGEN_DEVICE_FUNC
|
|
152
|
-
plain_array(constructor_without_unaligned_array_assert)
|
|
153
|
-
{
|
|
152
|
+
plain_array(constructor_without_unaligned_array_assert)
|
|
153
|
+
{
|
|
154
154
|
check_static_allocation_size<T,Size>();
|
|
155
155
|
}
|
|
156
156
|
};
|
|
@@ -163,6 +163,30 @@ struct plain_array<T, 0, MatrixOrArrayOptions, Alignment>
|
|
|
163
163
|
EIGEN_DEVICE_FUNC plain_array(constructor_without_unaligned_array_assert) {}
|
|
164
164
|
};
|
|
165
165
|
|
|
166
|
+
struct plain_array_helper {
|
|
167
|
+
template<typename T, int Size, int MatrixOrArrayOptions, int Alignment>
|
|
168
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
|
169
|
+
static void copy(const plain_array<T, Size, MatrixOrArrayOptions, Alignment>& src, const Eigen::Index size,
|
|
170
|
+
plain_array<T, Size, MatrixOrArrayOptions, Alignment>& dst) {
|
|
171
|
+
smart_copy(src.array, src.array + size, dst.array);
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
template<typename T, int Size, int MatrixOrArrayOptions, int Alignment>
|
|
175
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
|
176
|
+
static void swap(plain_array<T, Size, MatrixOrArrayOptions, Alignment>& a, const Eigen::Index a_size,
|
|
177
|
+
plain_array<T, Size, MatrixOrArrayOptions, Alignment>& b, const Eigen::Index b_size) {
|
|
178
|
+
if (a_size < b_size) {
|
|
179
|
+
std::swap_ranges(b.array, b.array + a_size, a.array);
|
|
180
|
+
smart_move(b.array + a_size, b.array + b_size, a.array + a_size);
|
|
181
|
+
} else if (a_size > b_size) {
|
|
182
|
+
std::swap_ranges(a.array, a.array + b_size, b.array);
|
|
183
|
+
smart_move(a.array + b_size, a.array + a_size, b.array + b_size);
|
|
184
|
+
} else {
|
|
185
|
+
std::swap_ranges(a.array, a.array + a_size, b.array);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
};
|
|
189
|
+
|
|
166
190
|
} // end namespace internal
|
|
167
191
|
|
|
168
192
|
/** \internal
|
|
@@ -190,16 +214,41 @@ template<typename T, int Size, int _Rows, int _Cols, int _Options> class DenseSt
|
|
|
190
214
|
EIGEN_DEVICE_FUNC
|
|
191
215
|
explicit DenseStorage(internal::constructor_without_unaligned_array_assert)
|
|
192
216
|
: m_data(internal::constructor_without_unaligned_array_assert()) {}
|
|
193
|
-
|
|
217
|
+
#if !EIGEN_HAS_CXX11 || defined(EIGEN_DENSE_STORAGE_CTOR_PLUGIN)
|
|
218
|
+
EIGEN_DEVICE_FUNC
|
|
194
219
|
DenseStorage(const DenseStorage& other) : m_data(other.m_data) {
|
|
195
220
|
EIGEN_INTERNAL_DENSE_STORAGE_CTOR_PLUGIN(Index size = Size)
|
|
196
221
|
}
|
|
197
|
-
|
|
222
|
+
#else
|
|
223
|
+
EIGEN_DEVICE_FUNC DenseStorage(const DenseStorage&) = default;
|
|
224
|
+
#endif
|
|
225
|
+
#if !EIGEN_HAS_CXX11
|
|
226
|
+
EIGEN_DEVICE_FUNC
|
|
198
227
|
DenseStorage& operator=(const DenseStorage& other)
|
|
199
|
-
{
|
|
228
|
+
{
|
|
200
229
|
if (this != &other) m_data = other.m_data;
|
|
201
|
-
return *this;
|
|
230
|
+
return *this;
|
|
231
|
+
}
|
|
232
|
+
#else
|
|
233
|
+
EIGEN_DEVICE_FUNC DenseStorage& operator=(const DenseStorage&) = default;
|
|
234
|
+
#endif
|
|
235
|
+
#if EIGEN_HAS_RVALUE_REFERENCES
|
|
236
|
+
#if !EIGEN_HAS_CXX11
|
|
237
|
+
EIGEN_DEVICE_FUNC DenseStorage(DenseStorage&& other) EIGEN_NOEXCEPT
|
|
238
|
+
: m_data(std::move(other.m_data))
|
|
239
|
+
{
|
|
202
240
|
}
|
|
241
|
+
EIGEN_DEVICE_FUNC DenseStorage& operator=(DenseStorage&& other) EIGEN_NOEXCEPT
|
|
242
|
+
{
|
|
243
|
+
if (this != &other)
|
|
244
|
+
m_data = std::move(other.m_data);
|
|
245
|
+
return *this;
|
|
246
|
+
}
|
|
247
|
+
#else
|
|
248
|
+
EIGEN_DEVICE_FUNC DenseStorage(DenseStorage&&) = default;
|
|
249
|
+
EIGEN_DEVICE_FUNC DenseStorage& operator=(DenseStorage&&) = default;
|
|
250
|
+
#endif
|
|
251
|
+
#endif
|
|
203
252
|
EIGEN_DEVICE_FUNC DenseStorage(Index size, Index rows, Index cols) {
|
|
204
253
|
EIGEN_INTERNAL_DENSE_STORAGE_CTOR_PLUGIN({})
|
|
205
254
|
eigen_internal_assert(size==rows*cols && rows==_Rows && cols==_Cols);
|
|
@@ -207,9 +256,11 @@ template<typename T, int Size, int _Rows, int _Cols, int _Options> class DenseSt
|
|
|
207
256
|
EIGEN_UNUSED_VARIABLE(rows);
|
|
208
257
|
EIGEN_UNUSED_VARIABLE(cols);
|
|
209
258
|
}
|
|
210
|
-
EIGEN_DEVICE_FUNC void swap(DenseStorage& other) {
|
|
211
|
-
|
|
212
|
-
|
|
259
|
+
EIGEN_DEVICE_FUNC void swap(DenseStorage& other) {
|
|
260
|
+
numext::swap(m_data, other.m_data);
|
|
261
|
+
}
|
|
262
|
+
EIGEN_DEVICE_FUNC static EIGEN_CONSTEXPR Index rows(void) EIGEN_NOEXCEPT {return _Rows;}
|
|
263
|
+
EIGEN_DEVICE_FUNC static EIGEN_CONSTEXPR Index cols(void) EIGEN_NOEXCEPT {return _Cols;}
|
|
213
264
|
EIGEN_DEVICE_FUNC void conservativeResize(Index,Index,Index) {}
|
|
214
265
|
EIGEN_DEVICE_FUNC void resize(Index,Index,Index) {}
|
|
215
266
|
EIGEN_DEVICE_FUNC const T *data() const { return m_data.array; }
|
|
@@ -226,8 +277,8 @@ template<typename T, int _Rows, int _Cols, int _Options> class DenseStorage<T, 0
|
|
|
226
277
|
EIGEN_DEVICE_FUNC DenseStorage& operator=(const DenseStorage&) { return *this; }
|
|
227
278
|
EIGEN_DEVICE_FUNC DenseStorage(Index,Index,Index) {}
|
|
228
279
|
EIGEN_DEVICE_FUNC void swap(DenseStorage& ) {}
|
|
229
|
-
EIGEN_DEVICE_FUNC static Index rows(void) {return _Rows;}
|
|
230
|
-
EIGEN_DEVICE_FUNC static Index cols(void) {return _Cols;}
|
|
280
|
+
EIGEN_DEVICE_FUNC static EIGEN_CONSTEXPR Index rows(void) EIGEN_NOEXCEPT {return _Rows;}
|
|
281
|
+
EIGEN_DEVICE_FUNC static EIGEN_CONSTEXPR Index cols(void) EIGEN_NOEXCEPT {return _Cols;}
|
|
231
282
|
EIGEN_DEVICE_FUNC void conservativeResize(Index,Index,Index) {}
|
|
232
283
|
EIGEN_DEVICE_FUNC void resize(Index,Index,Index) {}
|
|
233
284
|
EIGEN_DEVICE_FUNC const T *data() const { return 0; }
|
|
@@ -254,20 +305,28 @@ template<typename T, int Size, int _Options> class DenseStorage<T, Size, Dynamic
|
|
|
254
305
|
EIGEN_DEVICE_FUNC DenseStorage() : m_rows(0), m_cols(0) {}
|
|
255
306
|
EIGEN_DEVICE_FUNC explicit DenseStorage(internal::constructor_without_unaligned_array_assert)
|
|
256
307
|
: m_data(internal::constructor_without_unaligned_array_assert()), m_rows(0), m_cols(0) {}
|
|
257
|
-
EIGEN_DEVICE_FUNC DenseStorage(const DenseStorage& other)
|
|
258
|
-
|
|
259
|
-
{
|
|
308
|
+
EIGEN_DEVICE_FUNC DenseStorage(const DenseStorage& other)
|
|
309
|
+
: m_data(internal::constructor_without_unaligned_array_assert()), m_rows(other.m_rows), m_cols(other.m_cols)
|
|
310
|
+
{
|
|
311
|
+
internal::plain_array_helper::copy(other.m_data, m_rows * m_cols, m_data);
|
|
312
|
+
}
|
|
313
|
+
EIGEN_DEVICE_FUNC DenseStorage& operator=(const DenseStorage& other)
|
|
314
|
+
{
|
|
260
315
|
if (this != &other)
|
|
261
316
|
{
|
|
262
|
-
m_data = other.m_data;
|
|
263
317
|
m_rows = other.m_rows;
|
|
264
318
|
m_cols = other.m_cols;
|
|
319
|
+
internal::plain_array_helper::copy(other.m_data, m_rows * m_cols, m_data);
|
|
265
320
|
}
|
|
266
|
-
return *this;
|
|
321
|
+
return *this;
|
|
267
322
|
}
|
|
268
323
|
EIGEN_DEVICE_FUNC DenseStorage(Index, Index rows, Index cols) : m_rows(rows), m_cols(cols) {}
|
|
269
324
|
EIGEN_DEVICE_FUNC void swap(DenseStorage& other)
|
|
270
|
-
{
|
|
325
|
+
{
|
|
326
|
+
internal::plain_array_helper::swap(m_data, m_rows * m_cols, other.m_data, other.m_rows * other.m_cols);
|
|
327
|
+
numext::swap(m_rows,other.m_rows);
|
|
328
|
+
numext::swap(m_cols,other.m_cols);
|
|
329
|
+
}
|
|
271
330
|
EIGEN_DEVICE_FUNC Index rows() const {return m_rows;}
|
|
272
331
|
EIGEN_DEVICE_FUNC Index cols() const {return m_cols;}
|
|
273
332
|
EIGEN_DEVICE_FUNC void conservativeResize(Index, Index rows, Index cols) { m_rows = rows; m_cols = cols; }
|
|
@@ -285,20 +344,29 @@ template<typename T, int Size, int _Cols, int _Options> class DenseStorage<T, Si
|
|
|
285
344
|
EIGEN_DEVICE_FUNC DenseStorage() : m_rows(0) {}
|
|
286
345
|
EIGEN_DEVICE_FUNC explicit DenseStorage(internal::constructor_without_unaligned_array_assert)
|
|
287
346
|
: m_data(internal::constructor_without_unaligned_array_assert()), m_rows(0) {}
|
|
288
|
-
EIGEN_DEVICE_FUNC DenseStorage(const DenseStorage& other)
|
|
289
|
-
|
|
347
|
+
EIGEN_DEVICE_FUNC DenseStorage(const DenseStorage& other)
|
|
348
|
+
: m_data(internal::constructor_without_unaligned_array_assert()), m_rows(other.m_rows)
|
|
349
|
+
{
|
|
350
|
+
internal::plain_array_helper::copy(other.m_data, m_rows * _Cols, m_data);
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
EIGEN_DEVICE_FUNC DenseStorage& operator=(const DenseStorage& other)
|
|
290
354
|
{
|
|
291
355
|
if (this != &other)
|
|
292
356
|
{
|
|
293
|
-
m_data = other.m_data;
|
|
294
357
|
m_rows = other.m_rows;
|
|
358
|
+
internal::plain_array_helper::copy(other.m_data, m_rows * _Cols, m_data);
|
|
295
359
|
}
|
|
296
|
-
return *this;
|
|
360
|
+
return *this;
|
|
297
361
|
}
|
|
298
362
|
EIGEN_DEVICE_FUNC DenseStorage(Index, Index rows, Index) : m_rows(rows) {}
|
|
299
|
-
EIGEN_DEVICE_FUNC void swap(DenseStorage& other)
|
|
300
|
-
|
|
301
|
-
|
|
363
|
+
EIGEN_DEVICE_FUNC void swap(DenseStorage& other)
|
|
364
|
+
{
|
|
365
|
+
internal::plain_array_helper::swap(m_data, m_rows * _Cols, other.m_data, other.m_rows * _Cols);
|
|
366
|
+
numext::swap(m_rows, other.m_rows);
|
|
367
|
+
}
|
|
368
|
+
EIGEN_DEVICE_FUNC Index rows(void) const EIGEN_NOEXCEPT {return m_rows;}
|
|
369
|
+
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Index cols(void) const EIGEN_NOEXCEPT {return _Cols;}
|
|
302
370
|
EIGEN_DEVICE_FUNC void conservativeResize(Index, Index rows, Index) { m_rows = rows; }
|
|
303
371
|
EIGEN_DEVICE_FUNC void resize(Index, Index rows, Index) { m_rows = rows; }
|
|
304
372
|
EIGEN_DEVICE_FUNC const T *data() const { return m_data.array; }
|
|
@@ -314,22 +382,29 @@ template<typename T, int Size, int _Rows, int _Options> class DenseStorage<T, Si
|
|
|
314
382
|
EIGEN_DEVICE_FUNC DenseStorage() : m_cols(0) {}
|
|
315
383
|
EIGEN_DEVICE_FUNC explicit DenseStorage(internal::constructor_without_unaligned_array_assert)
|
|
316
384
|
: m_data(internal::constructor_without_unaligned_array_assert()), m_cols(0) {}
|
|
317
|
-
EIGEN_DEVICE_FUNC DenseStorage(const DenseStorage& other)
|
|
385
|
+
EIGEN_DEVICE_FUNC DenseStorage(const DenseStorage& other)
|
|
386
|
+
: m_data(internal::constructor_without_unaligned_array_assert()), m_cols(other.m_cols)
|
|
387
|
+
{
|
|
388
|
+
internal::plain_array_helper::copy(other.m_data, _Rows * m_cols, m_data);
|
|
389
|
+
}
|
|
318
390
|
EIGEN_DEVICE_FUNC DenseStorage& operator=(const DenseStorage& other)
|
|
319
391
|
{
|
|
320
392
|
if (this != &other)
|
|
321
393
|
{
|
|
322
|
-
m_data = other.m_data;
|
|
323
394
|
m_cols = other.m_cols;
|
|
395
|
+
internal::plain_array_helper::copy(other.m_data, _Rows * m_cols, m_data);
|
|
324
396
|
}
|
|
325
397
|
return *this;
|
|
326
398
|
}
|
|
327
399
|
EIGEN_DEVICE_FUNC DenseStorage(Index, Index, Index cols) : m_cols(cols) {}
|
|
328
|
-
EIGEN_DEVICE_FUNC void swap(DenseStorage& other) {
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
400
|
+
EIGEN_DEVICE_FUNC void swap(DenseStorage& other) {
|
|
401
|
+
internal::plain_array_helper::swap(m_data, _Rows * m_cols, other.m_data, _Rows * other.m_cols);
|
|
402
|
+
numext::swap(m_cols, other.m_cols);
|
|
403
|
+
}
|
|
404
|
+
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Index rows(void) const EIGEN_NOEXCEPT {return _Rows;}
|
|
405
|
+
EIGEN_DEVICE_FUNC Index cols(void) const EIGEN_NOEXCEPT {return m_cols;}
|
|
406
|
+
EIGEN_DEVICE_FUNC void conservativeResize(Index, Index, Index cols) { m_cols = cols; }
|
|
407
|
+
EIGEN_DEVICE_FUNC void resize(Index, Index, Index cols) { m_cols = cols; }
|
|
333
408
|
EIGEN_DEVICE_FUNC const T *data() const { return m_data.array; }
|
|
334
409
|
EIGEN_DEVICE_FUNC T *data() { return m_data.array; }
|
|
335
410
|
};
|
|
@@ -381,18 +456,21 @@ template<typename T, int _Options> class DenseStorage<T, Dynamic, Dynamic, Dynam
|
|
|
381
456
|
EIGEN_DEVICE_FUNC
|
|
382
457
|
DenseStorage& operator=(DenseStorage&& other) EIGEN_NOEXCEPT
|
|
383
458
|
{
|
|
384
|
-
|
|
385
|
-
swap(
|
|
386
|
-
swap(
|
|
387
|
-
swap(m_cols, other.m_cols);
|
|
459
|
+
numext::swap(m_data, other.m_data);
|
|
460
|
+
numext::swap(m_rows, other.m_rows);
|
|
461
|
+
numext::swap(m_cols, other.m_cols);
|
|
388
462
|
return *this;
|
|
389
463
|
}
|
|
390
464
|
#endif
|
|
391
465
|
EIGEN_DEVICE_FUNC ~DenseStorage() { internal::conditional_aligned_delete_auto<T,(_Options&DontAlign)==0>(m_data, m_rows*m_cols); }
|
|
392
466
|
EIGEN_DEVICE_FUNC void swap(DenseStorage& other)
|
|
393
|
-
{
|
|
394
|
-
|
|
395
|
-
|
|
467
|
+
{
|
|
468
|
+
numext::swap(m_data,other.m_data);
|
|
469
|
+
numext::swap(m_rows,other.m_rows);
|
|
470
|
+
numext::swap(m_cols,other.m_cols);
|
|
471
|
+
}
|
|
472
|
+
EIGEN_DEVICE_FUNC Index rows(void) const EIGEN_NOEXCEPT {return m_rows;}
|
|
473
|
+
EIGEN_DEVICE_FUNC Index cols(void) const EIGEN_NOEXCEPT {return m_cols;}
|
|
396
474
|
void conservativeResize(Index size, Index rows, Index cols)
|
|
397
475
|
{
|
|
398
476
|
m_data = internal::conditional_aligned_realloc_new_auto<T,(_Options&DontAlign)==0>(m_data, size, m_rows*m_cols);
|
|
@@ -446,7 +524,7 @@ template<typename T, int _Rows, int _Options> class DenseStorage<T, Dynamic, _Ro
|
|
|
446
524
|
this->swap(tmp);
|
|
447
525
|
}
|
|
448
526
|
return *this;
|
|
449
|
-
}
|
|
527
|
+
}
|
|
450
528
|
#if EIGEN_HAS_RVALUE_REFERENCES
|
|
451
529
|
EIGEN_DEVICE_FUNC
|
|
452
530
|
DenseStorage(DenseStorage&& other) EIGEN_NOEXCEPT
|
|
@@ -459,16 +537,18 @@ template<typename T, int _Rows, int _Options> class DenseStorage<T, Dynamic, _Ro
|
|
|
459
537
|
EIGEN_DEVICE_FUNC
|
|
460
538
|
DenseStorage& operator=(DenseStorage&& other) EIGEN_NOEXCEPT
|
|
461
539
|
{
|
|
462
|
-
|
|
463
|
-
swap(
|
|
464
|
-
swap(m_cols, other.m_cols);
|
|
540
|
+
numext::swap(m_data, other.m_data);
|
|
541
|
+
numext::swap(m_cols, other.m_cols);
|
|
465
542
|
return *this;
|
|
466
543
|
}
|
|
467
544
|
#endif
|
|
468
545
|
EIGEN_DEVICE_FUNC ~DenseStorage() { internal::conditional_aligned_delete_auto<T,(_Options&DontAlign)==0>(m_data, _Rows*m_cols); }
|
|
469
|
-
EIGEN_DEVICE_FUNC void swap(DenseStorage& other) {
|
|
470
|
-
|
|
471
|
-
|
|
546
|
+
EIGEN_DEVICE_FUNC void swap(DenseStorage& other) {
|
|
547
|
+
numext::swap(m_data,other.m_data);
|
|
548
|
+
numext::swap(m_cols,other.m_cols);
|
|
549
|
+
}
|
|
550
|
+
EIGEN_DEVICE_FUNC static EIGEN_CONSTEXPR Index rows(void) EIGEN_NOEXCEPT {return _Rows;}
|
|
551
|
+
EIGEN_DEVICE_FUNC Index cols(void) const EIGEN_NOEXCEPT {return m_cols;}
|
|
472
552
|
EIGEN_DEVICE_FUNC void conservativeResize(Index size, Index, Index cols)
|
|
473
553
|
{
|
|
474
554
|
m_data = internal::conditional_aligned_realloc_new_auto<T,(_Options&DontAlign)==0>(m_data, size, _Rows*m_cols);
|
|
@@ -520,7 +600,7 @@ template<typename T, int _Cols, int _Options> class DenseStorage<T, Dynamic, Dyn
|
|
|
520
600
|
this->swap(tmp);
|
|
521
601
|
}
|
|
522
602
|
return *this;
|
|
523
|
-
}
|
|
603
|
+
}
|
|
524
604
|
#if EIGEN_HAS_RVALUE_REFERENCES
|
|
525
605
|
EIGEN_DEVICE_FUNC
|
|
526
606
|
DenseStorage(DenseStorage&& other) EIGEN_NOEXCEPT
|
|
@@ -533,16 +613,18 @@ template<typename T, int _Cols, int _Options> class DenseStorage<T, Dynamic, Dyn
|
|
|
533
613
|
EIGEN_DEVICE_FUNC
|
|
534
614
|
DenseStorage& operator=(DenseStorage&& other) EIGEN_NOEXCEPT
|
|
535
615
|
{
|
|
536
|
-
|
|
537
|
-
swap(
|
|
538
|
-
swap(m_rows, other.m_rows);
|
|
616
|
+
numext::swap(m_data, other.m_data);
|
|
617
|
+
numext::swap(m_rows, other.m_rows);
|
|
539
618
|
return *this;
|
|
540
619
|
}
|
|
541
620
|
#endif
|
|
542
621
|
EIGEN_DEVICE_FUNC ~DenseStorage() { internal::conditional_aligned_delete_auto<T,(_Options&DontAlign)==0>(m_data, _Cols*m_rows); }
|
|
543
|
-
EIGEN_DEVICE_FUNC void swap(DenseStorage& other) {
|
|
544
|
-
|
|
545
|
-
|
|
622
|
+
EIGEN_DEVICE_FUNC void swap(DenseStorage& other) {
|
|
623
|
+
numext::swap(m_data,other.m_data);
|
|
624
|
+
numext::swap(m_rows,other.m_rows);
|
|
625
|
+
}
|
|
626
|
+
EIGEN_DEVICE_FUNC Index rows(void) const EIGEN_NOEXCEPT {return m_rows;}
|
|
627
|
+
EIGEN_DEVICE_FUNC static EIGEN_CONSTEXPR Index cols(void) {return _Cols;}
|
|
546
628
|
void conservativeResize(Index size, Index rows, Index)
|
|
547
629
|
{
|
|
548
630
|
m_data = internal::conditional_aligned_realloc_new_auto<T,(_Options&DontAlign)==0>(m_data, size, m_rows*_Cols);
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
#ifndef EIGEN_DIAGONAL_H
|
|
12
12
|
#define EIGEN_DIAGONAL_H
|
|
13
13
|
|
|
14
|
-
namespace Eigen {
|
|
14
|
+
namespace Eigen {
|
|
15
15
|
|
|
16
16
|
/** \class Diagonal
|
|
17
17
|
* \ingroup Core_Module
|
|
@@ -84,20 +84,16 @@ template<typename MatrixType, int _DiagIndex> class Diagonal
|
|
|
84
84
|
: numext::mini<Index>(m_matrix.rows(),m_matrix.cols()-m_index.value());
|
|
85
85
|
}
|
|
86
86
|
|
|
87
|
-
EIGEN_DEVICE_FUNC
|
|
88
|
-
inline Index cols() const { return 1; }
|
|
87
|
+
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
|
|
88
|
+
inline Index cols() const EIGEN_NOEXCEPT { return 1; }
|
|
89
89
|
|
|
90
|
-
EIGEN_DEVICE_FUNC
|
|
91
|
-
inline Index innerStride() const
|
|
92
|
-
{
|
|
90
|
+
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
|
|
91
|
+
inline Index innerStride() const EIGEN_NOEXCEPT {
|
|
93
92
|
return m_matrix.outerStride() + 1;
|
|
94
93
|
}
|
|
95
94
|
|
|
96
|
-
EIGEN_DEVICE_FUNC
|
|
97
|
-
inline Index outerStride() const
|
|
98
|
-
{
|
|
99
|
-
return 0;
|
|
100
|
-
}
|
|
95
|
+
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
|
|
96
|
+
inline Index outerStride() const EIGEN_NOEXCEPT { return 0; }
|
|
101
97
|
|
|
102
98
|
typedef typename internal::conditional<
|
|
103
99
|
internal::is_lvalue<MatrixType>::value,
|
|
@@ -149,8 +145,8 @@ template<typename MatrixType, int _DiagIndex> class Diagonal
|
|
|
149
145
|
}
|
|
150
146
|
|
|
151
147
|
EIGEN_DEVICE_FUNC
|
|
152
|
-
inline const typename internal::remove_all<typename MatrixType::Nested>::type&
|
|
153
|
-
nestedExpression() const
|
|
148
|
+
inline const typename internal::remove_all<typename MatrixType::Nested>::type&
|
|
149
|
+
nestedExpression() const
|
|
154
150
|
{
|
|
155
151
|
return m_matrix;
|
|
156
152
|
}
|
|
@@ -167,12 +163,12 @@ template<typename MatrixType, int _DiagIndex> class Diagonal
|
|
|
167
163
|
|
|
168
164
|
private:
|
|
169
165
|
// some compilers may fail to optimize std::max etc in case of compile-time constants...
|
|
170
|
-
EIGEN_DEVICE_FUNC
|
|
171
|
-
|
|
172
|
-
EIGEN_DEVICE_FUNC
|
|
173
|
-
|
|
174
|
-
EIGEN_DEVICE_FUNC
|
|
175
|
-
|
|
166
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR
|
|
167
|
+
Index absDiagIndex() const EIGEN_NOEXCEPT { return m_index.value()>0 ? m_index.value() : -m_index.value(); }
|
|
168
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR
|
|
169
|
+
Index rowOffset() const EIGEN_NOEXCEPT { return m_index.value()>0 ? 0 : -m_index.value(); }
|
|
170
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR
|
|
171
|
+
Index colOffset() const EIGEN_NOEXCEPT { return m_index.value()>0 ? m_index.value() : 0; }
|
|
176
172
|
// trigger a compile-time error if someone try to call packet
|
|
177
173
|
template<int LoadMode> typename MatrixType::PacketReturnType packet(Index) const;
|
|
178
174
|
template<int LoadMode> typename MatrixType::PacketReturnType packet(Index,Index) const;
|
|
@@ -187,7 +183,7 @@ template<typename MatrixType, int _DiagIndex> class Diagonal
|
|
|
187
183
|
*
|
|
188
184
|
* \sa class Diagonal */
|
|
189
185
|
template<typename Derived>
|
|
190
|
-
inline typename MatrixBase<Derived>::DiagonalReturnType
|
|
186
|
+
EIGEN_DEVICE_FUNC inline typename MatrixBase<Derived>::DiagonalReturnType
|
|
191
187
|
MatrixBase<Derived>::diagonal()
|
|
192
188
|
{
|
|
193
189
|
return DiagonalReturnType(derived());
|
|
@@ -195,7 +191,7 @@ MatrixBase<Derived>::diagonal()
|
|
|
195
191
|
|
|
196
192
|
/** This is the const version of diagonal(). */
|
|
197
193
|
template<typename Derived>
|
|
198
|
-
inline typename MatrixBase<Derived>::ConstDiagonalReturnType
|
|
194
|
+
EIGEN_DEVICE_FUNC inline typename MatrixBase<Derived>::ConstDiagonalReturnType
|
|
199
195
|
MatrixBase<Derived>::diagonal() const
|
|
200
196
|
{
|
|
201
197
|
return ConstDiagonalReturnType(derived());
|
|
@@ -213,7 +209,7 @@ MatrixBase<Derived>::diagonal() const
|
|
|
213
209
|
*
|
|
214
210
|
* \sa MatrixBase::diagonal(), class Diagonal */
|
|
215
211
|
template<typename Derived>
|
|
216
|
-
inline typename MatrixBase<Derived>::DiagonalDynamicIndexReturnType
|
|
212
|
+
EIGEN_DEVICE_FUNC inline typename MatrixBase<Derived>::DiagonalDynamicIndexReturnType
|
|
217
213
|
MatrixBase<Derived>::diagonal(Index index)
|
|
218
214
|
{
|
|
219
215
|
return DiagonalDynamicIndexReturnType(derived(), index);
|
|
@@ -221,7 +217,7 @@ MatrixBase<Derived>::diagonal(Index index)
|
|
|
221
217
|
|
|
222
218
|
/** This is the const version of diagonal(Index). */
|
|
223
219
|
template<typename Derived>
|
|
224
|
-
inline typename MatrixBase<Derived>::ConstDiagonalDynamicIndexReturnType
|
|
220
|
+
EIGEN_DEVICE_FUNC inline typename MatrixBase<Derived>::ConstDiagonalDynamicIndexReturnType
|
|
225
221
|
MatrixBase<Derived>::diagonal(Index index) const
|
|
226
222
|
{
|
|
227
223
|
return ConstDiagonalDynamicIndexReturnType(derived(), index);
|
|
@@ -240,6 +236,7 @@ MatrixBase<Derived>::diagonal(Index index) const
|
|
|
240
236
|
* \sa MatrixBase::diagonal(), class Diagonal */
|
|
241
237
|
template<typename Derived>
|
|
242
238
|
template<int Index_>
|
|
239
|
+
EIGEN_DEVICE_FUNC
|
|
243
240
|
inline typename MatrixBase<Derived>::template DiagonalIndexReturnType<Index_>::Type
|
|
244
241
|
MatrixBase<Derived>::diagonal()
|
|
245
242
|
{
|
|
@@ -249,6 +246,7 @@ MatrixBase<Derived>::diagonal()
|
|
|
249
246
|
/** This is the const version of diagonal<int>(). */
|
|
250
247
|
template<typename Derived>
|
|
251
248
|
template<int Index_>
|
|
249
|
+
EIGEN_DEVICE_FUNC
|
|
252
250
|
inline typename MatrixBase<Derived>::template ConstDiagonalIndexReturnType<Index_>::Type
|
|
253
251
|
MatrixBase<Derived>::diagonal() const
|
|
254
252
|
{
|
|
@@ -44,7 +44,7 @@ class DiagonalBase : public EigenBase<Derived>
|
|
|
44
44
|
|
|
45
45
|
EIGEN_DEVICE_FUNC
|
|
46
46
|
DenseMatrixType toDenseMatrix() const { return derived(); }
|
|
47
|
-
|
|
47
|
+
|
|
48
48
|
EIGEN_DEVICE_FUNC
|
|
49
49
|
inline const DiagonalVectorType& diagonal() const { return derived().diagonal(); }
|
|
50
50
|
EIGEN_DEVICE_FUNC
|
|
@@ -83,6 +83,30 @@ class DiagonalBase : public EigenBase<Derived>
|
|
|
83
83
|
{
|
|
84
84
|
return DiagonalWrapper<const EIGEN_SCALAR_BINARYOP_EXPR_RETURN_TYPE(Scalar,DiagonalVectorType,product) >(scalar * other.diagonal());
|
|
85
85
|
}
|
|
86
|
+
|
|
87
|
+
template<typename OtherDerived>
|
|
88
|
+
EIGEN_DEVICE_FUNC
|
|
89
|
+
#ifdef EIGEN_PARSED_BY_DOXYGEN
|
|
90
|
+
inline unspecified_expression_type
|
|
91
|
+
#else
|
|
92
|
+
inline const DiagonalWrapper<const EIGEN_CWISE_BINARY_RETURN_TYPE(DiagonalVectorType,typename OtherDerived::DiagonalVectorType,sum) >
|
|
93
|
+
#endif
|
|
94
|
+
operator+(const DiagonalBase<OtherDerived>& other) const
|
|
95
|
+
{
|
|
96
|
+
return (diagonal() + other.diagonal()).asDiagonal();
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
template<typename OtherDerived>
|
|
100
|
+
EIGEN_DEVICE_FUNC
|
|
101
|
+
#ifdef EIGEN_PARSED_BY_DOXYGEN
|
|
102
|
+
inline unspecified_expression_type
|
|
103
|
+
#else
|
|
104
|
+
inline const DiagonalWrapper<const EIGEN_CWISE_BINARY_RETURN_TYPE(DiagonalVectorType,typename OtherDerived::DiagonalVectorType,difference) >
|
|
105
|
+
#endif
|
|
106
|
+
operator-(const DiagonalBase<OtherDerived>& other) const
|
|
107
|
+
{
|
|
108
|
+
return (diagonal() - other.diagonal()).asDiagonal();
|
|
109
|
+
}
|
|
86
110
|
};
|
|
87
111
|
|
|
88
112
|
#endif
|
|
@@ -154,6 +178,30 @@ class DiagonalMatrix
|
|
|
154
178
|
EIGEN_DEVICE_FUNC
|
|
155
179
|
inline DiagonalMatrix(const Scalar& x, const Scalar& y, const Scalar& z) : m_diagonal(x,y,z) {}
|
|
156
180
|
|
|
181
|
+
#if EIGEN_HAS_CXX11
|
|
182
|
+
/** \brief Construct a diagonal matrix with fixed size from an arbitrary number of coefficients. \cpp11
|
|
183
|
+
*
|
|
184
|
+
* There exists C++98 anologue constructors for fixed-size diagonal matrices having 2 or 3 coefficients.
|
|
185
|
+
*
|
|
186
|
+
* \warning To construct a diagonal matrix of fixed size, the number of values passed to this
|
|
187
|
+
* constructor must match the fixed dimension of \c *this.
|
|
188
|
+
*
|
|
189
|
+
* \sa DiagonalMatrix(const Scalar&, const Scalar&)
|
|
190
|
+
* \sa DiagonalMatrix(const Scalar&, const Scalar&, const Scalar&)
|
|
191
|
+
*/
|
|
192
|
+
template <typename... ArgTypes>
|
|
193
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
|
194
|
+
DiagonalMatrix(const Scalar& a0, const Scalar& a1, const Scalar& a2, const ArgTypes&... args)
|
|
195
|
+
: m_diagonal(a0, a1, a2, args...) {}
|
|
196
|
+
|
|
197
|
+
/** \brief Constructs a DiagonalMatrix and initializes it by elements given by an initializer list of initializer
|
|
198
|
+
* lists \cpp11
|
|
199
|
+
*/
|
|
200
|
+
EIGEN_DEVICE_FUNC
|
|
201
|
+
explicit EIGEN_STRONG_INLINE DiagonalMatrix(const std::initializer_list<std::initializer_list<Scalar>>& list)
|
|
202
|
+
: m_diagonal(list) {}
|
|
203
|
+
#endif // EIGEN_HAS_CXX11
|
|
204
|
+
|
|
157
205
|
/** Copy constructor. */
|
|
158
206
|
template<typename OtherDerived>
|
|
159
207
|
EIGEN_DEVICE_FUNC
|
|
@@ -273,7 +321,7 @@ class DiagonalWrapper
|
|
|
273
321
|
* \sa class DiagonalWrapper, class DiagonalMatrix, diagonal(), isDiagonal()
|
|
274
322
|
**/
|
|
275
323
|
template<typename Derived>
|
|
276
|
-
inline const DiagonalWrapper<const Derived>
|
|
324
|
+
EIGEN_DEVICE_FUNC inline const DiagonalWrapper<const Derived>
|
|
277
325
|
MatrixBase<Derived>::asDiagonal() const
|
|
278
326
|
{
|
|
279
327
|
return DiagonalWrapper<const Derived>(derived());
|
|
@@ -17,7 +17,7 @@ namespace Eigen {
|
|
|
17
17
|
*/
|
|
18
18
|
template<typename Derived>
|
|
19
19
|
template<typename DiagonalDerived>
|
|
20
|
-
inline const Product<Derived, DiagonalDerived, LazyProduct>
|
|
20
|
+
EIGEN_DEVICE_FUNC inline const Product<Derived, DiagonalDerived, LazyProduct>
|
|
21
21
|
MatrixBase<Derived>::operator*(const DiagonalBase<DiagonalDerived> &a_diagonal) const
|
|
22
22
|
{
|
|
23
23
|
return Product<Derived, DiagonalDerived, LazyProduct>(derived(),a_diagonal.derived());
|