@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
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
#ifndef EIGEN_TRANSPOSE_H
|
|
12
12
|
#define EIGEN_TRANSPOSE_H
|
|
13
13
|
|
|
14
|
-
namespace Eigen {
|
|
14
|
+
namespace Eigen {
|
|
15
15
|
|
|
16
16
|
namespace internal {
|
|
17
17
|
template<typename MatrixType>
|
|
@@ -61,24 +61,27 @@ template<typename MatrixType> class Transpose
|
|
|
61
61
|
typedef typename internal::remove_all<MatrixType>::type NestedExpression;
|
|
62
62
|
|
|
63
63
|
EIGEN_DEVICE_FUNC
|
|
64
|
-
explicit
|
|
64
|
+
explicit EIGEN_STRONG_INLINE Transpose(MatrixType& matrix) : m_matrix(matrix) {}
|
|
65
65
|
|
|
66
66
|
EIGEN_INHERIT_ASSIGNMENT_OPERATORS(Transpose)
|
|
67
67
|
|
|
68
|
-
EIGEN_DEVICE_FUNC
|
|
69
|
-
|
|
68
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR
|
|
69
|
+
Index rows() const EIGEN_NOEXCEPT { return m_matrix.cols(); }
|
|
70
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR
|
|
71
|
+
Index cols() const EIGEN_NOEXCEPT { return m_matrix.rows(); }
|
|
70
72
|
|
|
71
73
|
/** \returns the nested expression */
|
|
72
|
-
EIGEN_DEVICE_FUNC
|
|
74
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
|
73
75
|
const typename internal::remove_all<MatrixTypeNested>::type&
|
|
74
76
|
nestedExpression() const { return m_matrix; }
|
|
75
77
|
|
|
76
78
|
/** \returns the nested expression */
|
|
77
|
-
EIGEN_DEVICE_FUNC
|
|
79
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
|
78
80
|
typename internal::remove_reference<MatrixTypeNested>::type&
|
|
79
81
|
nestedExpression() { return m_matrix; }
|
|
80
82
|
|
|
81
83
|
/** \internal */
|
|
84
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
|
82
85
|
void resize(Index nrows, Index ncols) {
|
|
83
86
|
m_matrix.resize(ncols,nrows);
|
|
84
87
|
}
|
|
@@ -122,8 +125,10 @@ template<typename MatrixType> class TransposeImpl<MatrixType,Dense>
|
|
|
122
125
|
EIGEN_DENSE_PUBLIC_INTERFACE(Transpose<MatrixType>)
|
|
123
126
|
EIGEN_INHERIT_ASSIGNMENT_OPERATORS(TransposeImpl)
|
|
124
127
|
|
|
125
|
-
EIGEN_DEVICE_FUNC
|
|
126
|
-
|
|
128
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
|
129
|
+
Index innerStride() const { return derived().nestedExpression().innerStride(); }
|
|
130
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
|
131
|
+
Index outerStride() const { return derived().nestedExpression().outerStride(); }
|
|
127
132
|
|
|
128
133
|
typedef typename internal::conditional<
|
|
129
134
|
internal::is_lvalue<MatrixType>::value,
|
|
@@ -131,18 +136,20 @@ template<typename MatrixType> class TransposeImpl<MatrixType,Dense>
|
|
|
131
136
|
const Scalar
|
|
132
137
|
>::type ScalarWithConstIfNotLvalue;
|
|
133
138
|
|
|
134
|
-
EIGEN_DEVICE_FUNC
|
|
135
|
-
|
|
139
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
|
140
|
+
ScalarWithConstIfNotLvalue* data() { return derived().nestedExpression().data(); }
|
|
141
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
|
142
|
+
const Scalar* data() const { return derived().nestedExpression().data(); }
|
|
136
143
|
|
|
137
144
|
// FIXME: shall we keep the const version of coeffRef?
|
|
138
|
-
EIGEN_DEVICE_FUNC
|
|
139
|
-
|
|
145
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
|
146
|
+
const Scalar& coeffRef(Index rowId, Index colId) const
|
|
140
147
|
{
|
|
141
148
|
return derived().nestedExpression().coeffRef(colId, rowId);
|
|
142
149
|
}
|
|
143
150
|
|
|
144
|
-
EIGEN_DEVICE_FUNC
|
|
145
|
-
|
|
151
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
|
152
|
+
const Scalar& coeffRef(Index index) const
|
|
146
153
|
{
|
|
147
154
|
return derived().nestedExpression().coeffRef(index);
|
|
148
155
|
}
|
|
@@ -170,7 +177,8 @@ template<typename MatrixType> class TransposeImpl<MatrixType,Dense>
|
|
|
170
177
|
*
|
|
171
178
|
* \sa transposeInPlace(), adjoint() */
|
|
172
179
|
template<typename Derived>
|
|
173
|
-
|
|
180
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
|
181
|
+
Transpose<Derived>
|
|
174
182
|
DenseBase<Derived>::transpose()
|
|
175
183
|
{
|
|
176
184
|
return TransposeReturnType(derived());
|
|
@@ -182,7 +190,8 @@ DenseBase<Derived>::transpose()
|
|
|
182
190
|
*
|
|
183
191
|
* \sa transposeInPlace(), adjoint() */
|
|
184
192
|
template<typename Derived>
|
|
185
|
-
|
|
193
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
|
194
|
+
typename DenseBase<Derived>::ConstTransposeReturnType
|
|
186
195
|
DenseBase<Derived>::transpose() const
|
|
187
196
|
{
|
|
188
197
|
return ConstTransposeReturnType(derived());
|
|
@@ -208,7 +217,7 @@ DenseBase<Derived>::transpose() const
|
|
|
208
217
|
*
|
|
209
218
|
* \sa adjointInPlace(), transpose(), conjugate(), class Transpose, class internal::scalar_conjugate_op */
|
|
210
219
|
template<typename Derived>
|
|
211
|
-
inline const typename MatrixBase<Derived>::AdjointReturnType
|
|
220
|
+
EIGEN_DEVICE_FUNC inline const typename MatrixBase<Derived>::AdjointReturnType
|
|
212
221
|
MatrixBase<Derived>::adjoint() const
|
|
213
222
|
{
|
|
214
223
|
return AdjointReturnType(this->transpose());
|
|
@@ -230,11 +239,10 @@ struct inplace_transpose_selector;
|
|
|
230
239
|
template<typename MatrixType>
|
|
231
240
|
struct inplace_transpose_selector<MatrixType,true,false> { // square matrix
|
|
232
241
|
static void run(MatrixType& m) {
|
|
233
|
-
m.matrix().template triangularView<StrictlyUpper>().swap(m.matrix().transpose());
|
|
242
|
+
m.matrix().template triangularView<StrictlyUpper>().swap(m.matrix().transpose().template triangularView<StrictlyUpper>());
|
|
234
243
|
}
|
|
235
244
|
};
|
|
236
245
|
|
|
237
|
-
// TODO: vectorized path is currently limited to LargestPacketSize x LargestPacketSize cases only.
|
|
238
246
|
template<typename MatrixType>
|
|
239
247
|
struct inplace_transpose_selector<MatrixType,true,true> { // PacketSize x PacketSize
|
|
240
248
|
static void run(MatrixType& m) {
|
|
@@ -251,16 +259,66 @@ struct inplace_transpose_selector<MatrixType,true,true> { // PacketSize x Packet
|
|
|
251
259
|
}
|
|
252
260
|
};
|
|
253
261
|
|
|
262
|
+
|
|
263
|
+
template <typename MatrixType, Index Alignment>
|
|
264
|
+
void BlockedInPlaceTranspose(MatrixType& m) {
|
|
265
|
+
typedef typename MatrixType::Scalar Scalar;
|
|
266
|
+
typedef typename internal::packet_traits<typename MatrixType::Scalar>::type Packet;
|
|
267
|
+
const Index PacketSize = internal::packet_traits<Scalar>::size;
|
|
268
|
+
eigen_assert(m.rows() == m.cols());
|
|
269
|
+
int row_start = 0;
|
|
270
|
+
for (; row_start + PacketSize <= m.rows(); row_start += PacketSize) {
|
|
271
|
+
for (int col_start = row_start; col_start + PacketSize <= m.cols(); col_start += PacketSize) {
|
|
272
|
+
PacketBlock<Packet> A;
|
|
273
|
+
if (row_start == col_start) {
|
|
274
|
+
for (Index i=0; i<PacketSize; ++i)
|
|
275
|
+
A.packet[i] = m.template packetByOuterInner<Alignment>(row_start + i,col_start);
|
|
276
|
+
internal::ptranspose(A);
|
|
277
|
+
for (Index i=0; i<PacketSize; ++i)
|
|
278
|
+
m.template writePacket<Alignment>(m.rowIndexByOuterInner(row_start + i, col_start), m.colIndexByOuterInner(row_start + i,col_start), A.packet[i]);
|
|
279
|
+
} else {
|
|
280
|
+
PacketBlock<Packet> B;
|
|
281
|
+
for (Index i=0; i<PacketSize; ++i) {
|
|
282
|
+
A.packet[i] = m.template packetByOuterInner<Alignment>(row_start + i,col_start);
|
|
283
|
+
B.packet[i] = m.template packetByOuterInner<Alignment>(col_start + i, row_start);
|
|
284
|
+
}
|
|
285
|
+
internal::ptranspose(A);
|
|
286
|
+
internal::ptranspose(B);
|
|
287
|
+
for (Index i=0; i<PacketSize; ++i) {
|
|
288
|
+
m.template writePacket<Alignment>(m.rowIndexByOuterInner(row_start + i, col_start), m.colIndexByOuterInner(row_start + i,col_start), B.packet[i]);
|
|
289
|
+
m.template writePacket<Alignment>(m.rowIndexByOuterInner(col_start + i, row_start), m.colIndexByOuterInner(col_start + i,row_start), A.packet[i]);
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
for (Index row = row_start; row < m.rows(); ++row) {
|
|
295
|
+
m.matrix().row(row).head(row).swap(
|
|
296
|
+
m.matrix().col(row).head(row).transpose());
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
|
|
254
300
|
template<typename MatrixType,bool MatchPacketSize>
|
|
255
|
-
struct inplace_transpose_selector<MatrixType,false,MatchPacketSize> { // non square matrix
|
|
301
|
+
struct inplace_transpose_selector<MatrixType,false,MatchPacketSize> { // non square or dynamic matrix
|
|
256
302
|
static void run(MatrixType& m) {
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
303
|
+
typedef typename MatrixType::Scalar Scalar;
|
|
304
|
+
if (m.rows() == m.cols()) {
|
|
305
|
+
const Index PacketSize = internal::packet_traits<Scalar>::size;
|
|
306
|
+
if (!NumTraits<Scalar>::IsComplex && m.rows() >= PacketSize) {
|
|
307
|
+
if ((m.rows() % PacketSize) == 0)
|
|
308
|
+
BlockedInPlaceTranspose<MatrixType,internal::evaluator<MatrixType>::Alignment>(m);
|
|
309
|
+
else
|
|
310
|
+
BlockedInPlaceTranspose<MatrixType,Unaligned>(m);
|
|
311
|
+
}
|
|
312
|
+
else {
|
|
313
|
+
m.matrix().template triangularView<StrictlyUpper>().swap(m.matrix().transpose().template triangularView<StrictlyUpper>());
|
|
314
|
+
}
|
|
315
|
+
} else {
|
|
260
316
|
m = m.transpose().eval();
|
|
317
|
+
}
|
|
261
318
|
}
|
|
262
319
|
};
|
|
263
320
|
|
|
321
|
+
|
|
264
322
|
} // end namespace internal
|
|
265
323
|
|
|
266
324
|
/** This is the "in place" version of transpose(): it replaces \c *this by its own transpose.
|
|
@@ -278,12 +336,12 @@ struct inplace_transpose_selector<MatrixType,false,MatchPacketSize> { // non squ
|
|
|
278
336
|
* Notice however that this method is only useful if you want to replace a matrix by its own transpose.
|
|
279
337
|
* If you just need the transpose of a matrix, use transpose().
|
|
280
338
|
*
|
|
281
|
-
* \note if the matrix is not square, then \c *this must be a resizable matrix.
|
|
339
|
+
* \note if the matrix is not square, then \c *this must be a resizable matrix.
|
|
282
340
|
* This excludes (non-square) fixed-size matrices, block-expressions and maps.
|
|
283
341
|
*
|
|
284
342
|
* \sa transpose(), adjoint(), adjointInPlace() */
|
|
285
343
|
template<typename Derived>
|
|
286
|
-
inline void DenseBase<Derived>::transposeInPlace()
|
|
344
|
+
EIGEN_DEVICE_FUNC inline void DenseBase<Derived>::transposeInPlace()
|
|
287
345
|
{
|
|
288
346
|
eigen_assert((rows() == cols() || (RowsAtCompileTime == Dynamic && ColsAtCompileTime == Dynamic))
|
|
289
347
|
&& "transposeInPlace() called on a non-square non-resizable matrix");
|
|
@@ -314,7 +372,7 @@ inline void DenseBase<Derived>::transposeInPlace()
|
|
|
314
372
|
*
|
|
315
373
|
* \sa transpose(), adjoint(), transposeInPlace() */
|
|
316
374
|
template<typename Derived>
|
|
317
|
-
inline void MatrixBase<Derived>::adjointInPlace()
|
|
375
|
+
EIGEN_DEVICE_FUNC inline void MatrixBase<Derived>::adjointInPlace()
|
|
318
376
|
{
|
|
319
377
|
derived() = adjoint().eval();
|
|
320
378
|
}
|
|
@@ -393,7 +451,8 @@ struct checkTransposeAliasing_impl<Derived, OtherDerived, false>
|
|
|
393
451
|
template<typename Dst, typename Src>
|
|
394
452
|
void check_for_aliasing(const Dst &dst, const Src &src)
|
|
395
453
|
{
|
|
396
|
-
|
|
454
|
+
if((!Dst::IsVectorAtCompileTime) && dst.rows()>1 && dst.cols()>1)
|
|
455
|
+
internal::checkTransposeAliasing_impl<Dst, Src>::run(dst, src);
|
|
397
456
|
}
|
|
398
457
|
|
|
399
458
|
} // end namespace internal
|
|
@@ -10,20 +10,22 @@
|
|
|
10
10
|
#ifndef EIGEN_TRANSPOSITIONS_H
|
|
11
11
|
#define EIGEN_TRANSPOSITIONS_H
|
|
12
12
|
|
|
13
|
-
namespace Eigen {
|
|
13
|
+
namespace Eigen {
|
|
14
14
|
|
|
15
15
|
template<typename Derived>
|
|
16
16
|
class TranspositionsBase
|
|
17
17
|
{
|
|
18
18
|
typedef internal::traits<Derived> Traits;
|
|
19
|
-
|
|
19
|
+
|
|
20
20
|
public:
|
|
21
21
|
|
|
22
22
|
typedef typename Traits::IndicesType IndicesType;
|
|
23
23
|
typedef typename IndicesType::Scalar StorageIndex;
|
|
24
24
|
typedef Eigen::Index Index; ///< \deprecated since Eigen 3.3
|
|
25
25
|
|
|
26
|
+
EIGEN_DEVICE_FUNC
|
|
26
27
|
Derived& derived() { return *static_cast<Derived*>(this); }
|
|
28
|
+
EIGEN_DEVICE_FUNC
|
|
27
29
|
const Derived& derived() const { return *static_cast<const Derived*>(this); }
|
|
28
30
|
|
|
29
31
|
/** Copies the \a other transpositions into \c *this */
|
|
@@ -35,13 +37,17 @@ class TranspositionsBase
|
|
|
35
37
|
}
|
|
36
38
|
|
|
37
39
|
/** \returns the number of transpositions */
|
|
40
|
+
EIGEN_DEVICE_FUNC
|
|
38
41
|
Index size() const { return indices().size(); }
|
|
39
42
|
/** \returns the number of rows of the equivalent permutation matrix */
|
|
43
|
+
EIGEN_DEVICE_FUNC
|
|
40
44
|
Index rows() const { return indices().size(); }
|
|
41
45
|
/** \returns the number of columns of the equivalent permutation matrix */
|
|
46
|
+
EIGEN_DEVICE_FUNC
|
|
42
47
|
Index cols() const { return indices().size(); }
|
|
43
48
|
|
|
44
49
|
/** Direct access to the underlying index vector */
|
|
50
|
+
EIGEN_DEVICE_FUNC
|
|
45
51
|
inline const StorageIndex& coeff(Index i) const { return indices().coeff(i); }
|
|
46
52
|
/** Direct access to the underlying index vector */
|
|
47
53
|
inline StorageIndex& coeffRef(Index i) { return indices().coeffRef(i); }
|
|
@@ -55,8 +61,10 @@ class TranspositionsBase
|
|
|
55
61
|
inline StorageIndex& operator[](Index i) { return indices()(i); }
|
|
56
62
|
|
|
57
63
|
/** const version of indices(). */
|
|
64
|
+
EIGEN_DEVICE_FUNC
|
|
58
65
|
const IndicesType& indices() const { return derived().indices(); }
|
|
59
66
|
/** \returns a reference to the stored array representing the transpositions. */
|
|
67
|
+
EIGEN_DEVICE_FUNC
|
|
60
68
|
IndicesType& indices() { return derived().indices(); }
|
|
61
69
|
|
|
62
70
|
/** Resizes to given size. */
|
|
@@ -73,7 +81,7 @@ class TranspositionsBase
|
|
|
73
81
|
}
|
|
74
82
|
|
|
75
83
|
// FIXME: do we want such methods ?
|
|
76
|
-
// might be
|
|
84
|
+
// might be useful when the target matrix expression is complex, e.g.:
|
|
77
85
|
// object.matrix().block(..,..,..,..) = trans * object.matrix().block(..,..,..,..);
|
|
78
86
|
/*
|
|
79
87
|
template<typename MatrixType>
|
|
@@ -178,8 +186,10 @@ class Transpositions : public TranspositionsBase<Transpositions<SizeAtCompileTim
|
|
|
178
186
|
{}
|
|
179
187
|
|
|
180
188
|
/** const version of indices(). */
|
|
189
|
+
EIGEN_DEVICE_FUNC
|
|
181
190
|
const IndicesType& indices() const { return m_indices; }
|
|
182
191
|
/** \returns a reference to the stored array representing the transpositions. */
|
|
192
|
+
EIGEN_DEVICE_FUNC
|
|
183
193
|
IndicesType& indices() { return m_indices; }
|
|
184
194
|
|
|
185
195
|
protected:
|
|
@@ -237,9 +247,11 @@ class Map<Transpositions<SizeAtCompileTime,MaxSizeAtCompileTime,_StorageIndex>,P
|
|
|
237
247
|
#endif
|
|
238
248
|
|
|
239
249
|
/** const version of indices(). */
|
|
250
|
+
EIGEN_DEVICE_FUNC
|
|
240
251
|
const IndicesType& indices() const { return m_indices; }
|
|
241
|
-
|
|
252
|
+
|
|
242
253
|
/** \returns a reference to the stored array representing the transpositions. */
|
|
254
|
+
EIGEN_DEVICE_FUNC
|
|
243
255
|
IndicesType& indices() { return m_indices; }
|
|
244
256
|
|
|
245
257
|
protected:
|
|
@@ -279,9 +291,11 @@ class TranspositionsWrapper
|
|
|
279
291
|
}
|
|
280
292
|
|
|
281
293
|
/** const version of indices(). */
|
|
294
|
+
EIGEN_DEVICE_FUNC
|
|
282
295
|
const IndicesType& indices() const { return m_indices; }
|
|
283
296
|
|
|
284
297
|
/** \returns a reference to the stored array representing the transpositions. */
|
|
298
|
+
EIGEN_DEVICE_FUNC
|
|
285
299
|
IndicesType& indices() { return m_indices; }
|
|
286
300
|
|
|
287
301
|
protected:
|
|
@@ -335,9 +349,12 @@ class Transpose<TranspositionsBase<TranspositionsDerived> >
|
|
|
335
349
|
|
|
336
350
|
explicit Transpose(const TranspositionType& t) : m_transpositions(t) {}
|
|
337
351
|
|
|
338
|
-
|
|
339
|
-
Index
|
|
340
|
-
|
|
352
|
+
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
|
|
353
|
+
Index size() const EIGEN_NOEXCEPT { return m_transpositions.size(); }
|
|
354
|
+
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
|
|
355
|
+
Index rows() const EIGEN_NOEXCEPT { return m_transpositions.size(); }
|
|
356
|
+
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
|
|
357
|
+
Index cols() const EIGEN_NOEXCEPT { return m_transpositions.size(); }
|
|
341
358
|
|
|
342
359
|
/** \returns the \a matrix with the inverse transpositions applied to the columns.
|
|
343
360
|
*/
|
|
@@ -356,7 +373,8 @@ class Transpose<TranspositionsBase<TranspositionsDerived> >
|
|
|
356
373
|
{
|
|
357
374
|
return Product<Transpose, OtherDerived, AliasFreeProduct>(*this, matrix.derived());
|
|
358
375
|
}
|
|
359
|
-
|
|
376
|
+
|
|
377
|
+
EIGEN_DEVICE_FUNC
|
|
360
378
|
const TranspositionType& nestedExpression() const { return m_transpositions; }
|
|
361
379
|
|
|
362
380
|
protected:
|