@smake/eigen 1.0.2 → 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 +26 -0
- package/eigen/COPYING.GPL +674 -0
- package/eigen/COPYING.LGPL +502 -0
- package/eigen/COPYING.MINPACK +51 -0
- package/eigen/COPYING.MPL2 +373 -0
- package/eigen/COPYING.README +18 -0
- 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 +5 -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
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
#ifndef EIGEN_REF_H
|
|
11
11
|
#define EIGEN_REF_H
|
|
12
12
|
|
|
13
|
-
namespace Eigen {
|
|
13
|
+
namespace Eigen {
|
|
14
14
|
|
|
15
15
|
namespace internal {
|
|
16
16
|
|
|
@@ -48,7 +48,7 @@ struct traits<Ref<_PlainObjectType, _Options, _StrideType> >
|
|
|
48
48
|
};
|
|
49
49
|
typedef typename internal::conditional<MatchAtCompileTime,internal::true_type,internal::false_type>::type type;
|
|
50
50
|
};
|
|
51
|
-
|
|
51
|
+
|
|
52
52
|
};
|
|
53
53
|
|
|
54
54
|
template<typename Derived>
|
|
@@ -67,12 +67,12 @@ public:
|
|
|
67
67
|
typedef MapBase<Derived> Base;
|
|
68
68
|
EIGEN_DENSE_PUBLIC_INTERFACE(RefBase)
|
|
69
69
|
|
|
70
|
-
EIGEN_DEVICE_FUNC inline Index innerStride() const
|
|
70
|
+
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR inline Index innerStride() const
|
|
71
71
|
{
|
|
72
72
|
return StrideType::InnerStrideAtCompileTime != 0 ? m_stride.inner() : 1;
|
|
73
73
|
}
|
|
74
74
|
|
|
75
|
-
EIGEN_DEVICE_FUNC inline Index outerStride() const
|
|
75
|
+
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR inline Index outerStride() const
|
|
76
76
|
{
|
|
77
77
|
return StrideType::OuterStrideAtCompileTime != 0 ? m_stride.outer()
|
|
78
78
|
: IsVectorAtCompileTime ? this->size()
|
|
@@ -86,36 +86,122 @@ public:
|
|
|
86
86
|
m_stride(StrideType::OuterStrideAtCompileTime==Dynamic?0:StrideType::OuterStrideAtCompileTime,
|
|
87
87
|
StrideType::InnerStrideAtCompileTime==Dynamic?0:StrideType::InnerStrideAtCompileTime)
|
|
88
88
|
{}
|
|
89
|
-
|
|
89
|
+
|
|
90
90
|
EIGEN_INHERIT_ASSIGNMENT_OPERATORS(RefBase)
|
|
91
91
|
|
|
92
92
|
protected:
|
|
93
93
|
|
|
94
94
|
typedef Stride<StrideType::OuterStrideAtCompileTime,StrideType::InnerStrideAtCompileTime> StrideBase;
|
|
95
95
|
|
|
96
|
+
// Resolves inner stride if default 0.
|
|
97
|
+
static EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Index resolveInnerStride(Index inner) {
|
|
98
|
+
return inner == 0 ? 1 : inner;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// Resolves outer stride if default 0.
|
|
102
|
+
static EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Index resolveOuterStride(Index inner, Index outer, Index rows, Index cols, bool isVectorAtCompileTime, bool isRowMajor) {
|
|
103
|
+
return outer == 0 ? isVectorAtCompileTime ? inner * rows * cols : isRowMajor ? inner * cols : inner * rows : outer;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
// Returns true if construction is valid, false if there is a stride mismatch,
|
|
107
|
+
// and fails if there is a size mismatch.
|
|
96
108
|
template<typename Expression>
|
|
97
|
-
EIGEN_DEVICE_FUNC
|
|
109
|
+
EIGEN_DEVICE_FUNC bool construct(Expression& expr)
|
|
98
110
|
{
|
|
99
|
-
|
|
100
|
-
|
|
111
|
+
// Check matrix sizes. If this is a compile-time vector, we do allow
|
|
112
|
+
// implicitly transposing.
|
|
113
|
+
EIGEN_STATIC_ASSERT(
|
|
114
|
+
EIGEN_PREDICATE_SAME_MATRIX_SIZE(PlainObjectType, Expression)
|
|
115
|
+
// If it is a vector, the transpose sizes might match.
|
|
116
|
+
|| ( PlainObjectType::IsVectorAtCompileTime
|
|
117
|
+
&& ((int(PlainObjectType::RowsAtCompileTime)==Eigen::Dynamic
|
|
118
|
+
|| int(Expression::ColsAtCompileTime)==Eigen::Dynamic
|
|
119
|
+
|| int(PlainObjectType::RowsAtCompileTime)==int(Expression::ColsAtCompileTime))
|
|
120
|
+
&& (int(PlainObjectType::ColsAtCompileTime)==Eigen::Dynamic
|
|
121
|
+
|| int(Expression::RowsAtCompileTime)==Eigen::Dynamic
|
|
122
|
+
|| int(PlainObjectType::ColsAtCompileTime)==int(Expression::RowsAtCompileTime)))),
|
|
123
|
+
YOU_MIXED_MATRICES_OF_DIFFERENT_SIZES
|
|
124
|
+
)
|
|
125
|
+
|
|
126
|
+
// Determine runtime rows and columns.
|
|
127
|
+
Index rows = expr.rows();
|
|
128
|
+
Index cols = expr.cols();
|
|
101
129
|
if(PlainObjectType::RowsAtCompileTime==1)
|
|
102
130
|
{
|
|
103
131
|
eigen_assert(expr.rows()==1 || expr.cols()==1);
|
|
104
|
-
|
|
132
|
+
rows = 1;
|
|
133
|
+
cols = expr.size();
|
|
105
134
|
}
|
|
106
135
|
else if(PlainObjectType::ColsAtCompileTime==1)
|
|
107
136
|
{
|
|
108
137
|
eigen_assert(expr.rows()==1 || expr.cols()==1);
|
|
109
|
-
|
|
138
|
+
rows = expr.size();
|
|
139
|
+
cols = 1;
|
|
140
|
+
}
|
|
141
|
+
// Verify that the sizes are valid.
|
|
142
|
+
eigen_assert(
|
|
143
|
+
(PlainObjectType::RowsAtCompileTime == Dynamic) || (PlainObjectType::RowsAtCompileTime == rows));
|
|
144
|
+
eigen_assert(
|
|
145
|
+
(PlainObjectType::ColsAtCompileTime == Dynamic) || (PlainObjectType::ColsAtCompileTime == cols));
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
// If this is a vector, we might be transposing, which means that stride should swap.
|
|
149
|
+
const bool transpose = PlainObjectType::IsVectorAtCompileTime && (rows != expr.rows());
|
|
150
|
+
// If the storage format differs, we also need to swap the stride.
|
|
151
|
+
const bool row_major = ((PlainObjectType::Flags)&RowMajorBit) != 0;
|
|
152
|
+
const bool expr_row_major = (Expression::Flags&RowMajorBit) != 0;
|
|
153
|
+
const bool storage_differs = (row_major != expr_row_major);
|
|
154
|
+
|
|
155
|
+
const bool swap_stride = (transpose != storage_differs);
|
|
156
|
+
|
|
157
|
+
// Determine expr's actual strides, resolving any defaults if zero.
|
|
158
|
+
const Index expr_inner_actual = resolveInnerStride(expr.innerStride());
|
|
159
|
+
const Index expr_outer_actual = resolveOuterStride(expr_inner_actual,
|
|
160
|
+
expr.outerStride(),
|
|
161
|
+
expr.rows(),
|
|
162
|
+
expr.cols(),
|
|
163
|
+
Expression::IsVectorAtCompileTime != 0,
|
|
164
|
+
expr_row_major);
|
|
165
|
+
|
|
166
|
+
// If this is a column-major row vector or row-major column vector, the inner-stride
|
|
167
|
+
// is arbitrary, so set it to either the compile-time inner stride or 1.
|
|
168
|
+
const bool row_vector = (rows == 1);
|
|
169
|
+
const bool col_vector = (cols == 1);
|
|
170
|
+
const Index inner_stride =
|
|
171
|
+
( (!row_major && row_vector) || (row_major && col_vector) ) ?
|
|
172
|
+
( StrideType::InnerStrideAtCompileTime > 0 ? Index(StrideType::InnerStrideAtCompileTime) : 1)
|
|
173
|
+
: swap_stride ? expr_outer_actual : expr_inner_actual;
|
|
174
|
+
|
|
175
|
+
// If this is a column-major column vector or row-major row vector, the outer-stride
|
|
176
|
+
// is arbitrary, so set it to either the compile-time outer stride or vector size.
|
|
177
|
+
const Index outer_stride =
|
|
178
|
+
( (!row_major && col_vector) || (row_major && row_vector) ) ?
|
|
179
|
+
( StrideType::OuterStrideAtCompileTime > 0 ? Index(StrideType::OuterStrideAtCompileTime) : rows * cols * inner_stride)
|
|
180
|
+
: swap_stride ? expr_inner_actual : expr_outer_actual;
|
|
181
|
+
|
|
182
|
+
// Check if given inner/outer strides are compatible with compile-time strides.
|
|
183
|
+
const bool inner_valid = (StrideType::InnerStrideAtCompileTime == Dynamic)
|
|
184
|
+
|| (resolveInnerStride(Index(StrideType::InnerStrideAtCompileTime)) == inner_stride);
|
|
185
|
+
if (!inner_valid) {
|
|
186
|
+
return false;
|
|
110
187
|
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
188
|
+
|
|
189
|
+
const bool outer_valid = (StrideType::OuterStrideAtCompileTime == Dynamic)
|
|
190
|
+
|| (resolveOuterStride(
|
|
191
|
+
inner_stride,
|
|
192
|
+
Index(StrideType::OuterStrideAtCompileTime),
|
|
193
|
+
rows, cols, PlainObjectType::IsVectorAtCompileTime != 0,
|
|
194
|
+
row_major)
|
|
195
|
+
== outer_stride);
|
|
196
|
+
if (!outer_valid) {
|
|
197
|
+
return false;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
::new (static_cast<Base*>(this)) Base(expr.data(), rows, cols);
|
|
201
|
+
::new (&m_stride) StrideBase(
|
|
202
|
+
(StrideType::OuterStrideAtCompileTime == 0) ? 0 : outer_stride,
|
|
203
|
+
(StrideType::InnerStrideAtCompileTime == 0) ? 0 : inner_stride );
|
|
204
|
+
return true;
|
|
119
205
|
}
|
|
120
206
|
|
|
121
207
|
StrideBase m_stride;
|
|
@@ -187,6 +273,8 @@ protected:
|
|
|
187
273
|
* void foo(const Ref<MatrixXf,0,Stride<> >& A) { foo_impl(A); }
|
|
188
274
|
* \endcode
|
|
189
275
|
*
|
|
276
|
+
* See also the following stackoverflow questions for further references:
|
|
277
|
+
* - <a href="http://stackoverflow.com/questions/21132538/correct-usage-of-the-eigenref-class">Correct usage of the Eigen::Ref<> class</a>
|
|
190
278
|
*
|
|
191
279
|
* \sa PlainObjectBase::Map(), \ref TopicStorageOrders
|
|
192
280
|
*/
|
|
@@ -210,7 +298,10 @@ template<typename PlainObjectType, int Options, typename StrideType> class Ref
|
|
|
210
298
|
typename internal::enable_if<bool(Traits::template match<Derived>::MatchAtCompileTime),Derived>::type* = 0)
|
|
211
299
|
{
|
|
212
300
|
EIGEN_STATIC_ASSERT(bool(Traits::template match<Derived>::MatchAtCompileTime), STORAGE_LAYOUT_DOES_NOT_MATCH);
|
|
213
|
-
|
|
301
|
+
// Construction must pass since we will not create temprary storage in the non-const case.
|
|
302
|
+
const bool success = Base::construct(expr.derived());
|
|
303
|
+
EIGEN_UNUSED_VARIABLE(success)
|
|
304
|
+
eigen_assert(success);
|
|
214
305
|
}
|
|
215
306
|
template<typename Derived>
|
|
216
307
|
EIGEN_DEVICE_FUNC inline Ref(const DenseBase<Derived>& expr,
|
|
@@ -224,7 +315,10 @@ template<typename PlainObjectType, int Options, typename StrideType> class Ref
|
|
|
224
315
|
EIGEN_STATIC_ASSERT(bool(internal::is_lvalue<Derived>::value), THIS_EXPRESSION_IS_NOT_A_LVALUE__IT_IS_READ_ONLY);
|
|
225
316
|
EIGEN_STATIC_ASSERT(bool(Traits::template match<Derived>::MatchAtCompileTime), STORAGE_LAYOUT_DOES_NOT_MATCH);
|
|
226
317
|
EIGEN_STATIC_ASSERT(!Derived::IsPlainObjectBase,THIS_EXPRESSION_IS_NOT_A_LVALUE__IT_IS_READ_ONLY);
|
|
227
|
-
|
|
318
|
+
// Construction must pass since we will not create temporary storage in the non-const case.
|
|
319
|
+
const bool success = Base::construct(expr.const_cast_derived());
|
|
320
|
+
EIGEN_UNUSED_VARIABLE(success)
|
|
321
|
+
eigen_assert(success);
|
|
228
322
|
}
|
|
229
323
|
|
|
230
324
|
EIGEN_INHERIT_ASSIGNMENT_OPERATORS(Ref)
|
|
@@ -265,7 +359,10 @@ template<typename TPlainObjectType, int Options, typename StrideType> class Ref<
|
|
|
265
359
|
template<typename Expression>
|
|
266
360
|
EIGEN_DEVICE_FUNC void construct(const Expression& expr,internal::true_type)
|
|
267
361
|
{
|
|
268
|
-
|
|
362
|
+
// Check if we can use the underlying expr's storage directly, otherwise call the copy version.
|
|
363
|
+
if (!Base::construct(expr)) {
|
|
364
|
+
construct(expr, internal::false_type());
|
|
365
|
+
}
|
|
269
366
|
}
|
|
270
367
|
|
|
271
368
|
template<typename Expression>
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
#ifndef EIGEN_REPLICATE_H
|
|
11
11
|
#define EIGEN_REPLICATE_H
|
|
12
12
|
|
|
13
|
-
namespace Eigen {
|
|
13
|
+
namespace Eigen {
|
|
14
14
|
|
|
15
15
|
namespace internal {
|
|
16
16
|
template<typename MatrixType,int RowFactor,int ColFactor>
|
|
@@ -35,7 +35,7 @@ struct traits<Replicate<MatrixType,RowFactor,ColFactor> >
|
|
|
35
35
|
IsRowMajor = MaxRowsAtCompileTime==1 && MaxColsAtCompileTime!=1 ? 1
|
|
36
36
|
: MaxColsAtCompileTime==1 && MaxRowsAtCompileTime!=1 ? 0
|
|
37
37
|
: (MatrixType::Flags & RowMajorBit) ? 1 : 0,
|
|
38
|
-
|
|
38
|
+
|
|
39
39
|
// FIXME enable DirectAccess with negative strides?
|
|
40
40
|
Flags = IsRowMajor ? RowMajorBit : 0
|
|
41
41
|
};
|
|
@@ -88,15 +88,15 @@ template<typename MatrixType,int RowFactor,int ColFactor> class Replicate
|
|
|
88
88
|
THE_MATRIX_OR_EXPRESSION_THAT_YOU_PASSED_DOES_NOT_HAVE_THE_EXPECTED_TYPE)
|
|
89
89
|
}
|
|
90
90
|
|
|
91
|
-
EIGEN_DEVICE_FUNC
|
|
91
|
+
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
|
|
92
92
|
inline Index rows() const { return m_matrix.rows() * m_rowFactor.value(); }
|
|
93
|
-
EIGEN_DEVICE_FUNC
|
|
93
|
+
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
|
|
94
94
|
inline Index cols() const { return m_matrix.cols() * m_colFactor.value(); }
|
|
95
95
|
|
|
96
96
|
EIGEN_DEVICE_FUNC
|
|
97
97
|
const _MatrixTypeNested& nestedExpression() const
|
|
98
|
-
{
|
|
99
|
-
return m_matrix;
|
|
98
|
+
{
|
|
99
|
+
return m_matrix;
|
|
100
100
|
}
|
|
101
101
|
|
|
102
102
|
protected:
|
|
@@ -115,7 +115,7 @@ template<typename MatrixType,int RowFactor,int ColFactor> class Replicate
|
|
|
115
115
|
*/
|
|
116
116
|
template<typename Derived>
|
|
117
117
|
template<int RowFactor, int ColFactor>
|
|
118
|
-
const Replicate<Derived,RowFactor,ColFactor>
|
|
118
|
+
EIGEN_DEVICE_FUNC const Replicate<Derived,RowFactor,ColFactor>
|
|
119
119
|
DenseBase<Derived>::replicate() const
|
|
120
120
|
{
|
|
121
121
|
return Replicate<Derived,RowFactor,ColFactor>(derived());
|
|
@@ -130,7 +130,7 @@ DenseBase<Derived>::replicate() const
|
|
|
130
130
|
* \sa VectorwiseOp::replicate(), DenseBase::replicate(), class Replicate
|
|
131
131
|
*/
|
|
132
132
|
template<typename ExpressionType, int Direction>
|
|
133
|
-
const typename VectorwiseOp<ExpressionType,Direction>::ReplicateReturnType
|
|
133
|
+
EIGEN_DEVICE_FUNC const typename VectorwiseOp<ExpressionType,Direction>::ReplicateReturnType
|
|
134
134
|
VectorwiseOp<ExpressionType,Direction>::replicate(Index factor) const
|
|
135
135
|
{
|
|
136
136
|
return typename VectorwiseOp<ExpressionType,Direction>::ReplicateReturnType
|