@smake/eigen 1.0.2 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/eigen/Eigen/AccelerateSupport +52 -0
- package/eigen/Eigen/Cholesky +18 -21
- package/eigen/Eigen/CholmodSupport +28 -28
- package/eigen/Eigen/Core +235 -326
- package/eigen/Eigen/Eigenvalues +16 -14
- package/eigen/Eigen/Geometry +21 -24
- package/eigen/Eigen/Householder +9 -8
- package/eigen/Eigen/IterativeLinearSolvers +8 -4
- package/eigen/Eigen/Jacobi +14 -14
- package/eigen/Eigen/KLUSupport +43 -0
- package/eigen/Eigen/LU +16 -20
- package/eigen/Eigen/MetisSupport +12 -12
- package/eigen/Eigen/OrderingMethods +54 -54
- package/eigen/Eigen/PaStiXSupport +23 -20
- package/eigen/Eigen/PardisoSupport +17 -14
- package/eigen/Eigen/QR +18 -21
- package/eigen/Eigen/QtAlignedMalloc +5 -13
- package/eigen/Eigen/SPQRSupport +21 -14
- package/eigen/Eigen/SVD +23 -18
- package/eigen/Eigen/Sparse +1 -4
- package/eigen/Eigen/SparseCholesky +18 -23
- package/eigen/Eigen/SparseCore +18 -17
- package/eigen/Eigen/SparseLU +12 -8
- package/eigen/Eigen/SparseQR +16 -14
- package/eigen/Eigen/StdDeque +5 -2
- package/eigen/Eigen/StdList +5 -2
- package/eigen/Eigen/StdVector +5 -2
- package/eigen/Eigen/SuperLUSupport +30 -24
- package/eigen/Eigen/ThreadPool +80 -0
- package/eigen/Eigen/UmfPackSupport +19 -17
- package/eigen/Eigen/Version +14 -0
- package/eigen/Eigen/src/AccelerateSupport/AccelerateSupport.h +423 -0
- package/eigen/Eigen/src/AccelerateSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Cholesky/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Cholesky/LDLT.h +377 -401
- package/eigen/Eigen/src/Cholesky/LLT.h +332 -360
- package/eigen/Eigen/src/Cholesky/LLT_LAPACKE.h +81 -56
- package/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +620 -521
- package/eigen/Eigen/src/CholmodSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Core/ArithmeticSequence.h +239 -0
- package/eigen/Eigen/src/Core/Array.h +341 -294
- package/eigen/Eigen/src/Core/ArrayBase.h +190 -203
- package/eigen/Eigen/src/Core/ArrayWrapper.h +127 -171
- package/eigen/Eigen/src/Core/Assign.h +30 -40
- package/eigen/Eigen/src/Core/AssignEvaluator.h +711 -589
- package/eigen/Eigen/src/Core/Assign_MKL.h +130 -125
- package/eigen/Eigen/src/Core/BandMatrix.h +268 -283
- package/eigen/Eigen/src/Core/Block.h +375 -398
- package/eigen/Eigen/src/Core/CommaInitializer.h +86 -97
- package/eigen/Eigen/src/Core/ConditionEstimator.h +51 -53
- package/eigen/Eigen/src/Core/CoreEvaluators.h +1356 -1026
- package/eigen/Eigen/src/Core/CoreIterators.h +73 -59
- package/eigen/Eigen/src/Core/CwiseBinaryOp.h +114 -132
- package/eigen/Eigen/src/Core/CwiseNullaryOp.h +726 -617
- package/eigen/Eigen/src/Core/CwiseTernaryOp.h +77 -103
- package/eigen/Eigen/src/Core/CwiseUnaryOp.h +56 -68
- package/eigen/Eigen/src/Core/CwiseUnaryView.h +132 -95
- package/eigen/Eigen/src/Core/DenseBase.h +632 -571
- package/eigen/Eigen/src/Core/DenseCoeffsBase.h +511 -624
- package/eigen/Eigen/src/Core/DenseStorage.h +512 -509
- package/eigen/Eigen/src/Core/DeviceWrapper.h +153 -0
- package/eigen/Eigen/src/Core/Diagonal.h +169 -210
- package/eigen/Eigen/src/Core/DiagonalMatrix.h +351 -274
- package/eigen/Eigen/src/Core/DiagonalProduct.h +12 -10
- package/eigen/Eigen/src/Core/Dot.h +172 -222
- package/eigen/Eigen/src/Core/EigenBase.h +75 -85
- package/eigen/Eigen/src/Core/Fill.h +138 -0
- package/eigen/Eigen/src/Core/FindCoeff.h +464 -0
- package/eigen/Eigen/src/Core/ForceAlignedAccess.h +90 -109
- package/eigen/Eigen/src/Core/Fuzzy.h +82 -105
- package/eigen/Eigen/src/Core/GeneralProduct.h +327 -263
- package/eigen/Eigen/src/Core/GenericPacketMath.h +1472 -360
- package/eigen/Eigen/src/Core/GlobalFunctions.h +194 -151
- package/eigen/Eigen/src/Core/IO.h +147 -139
- package/eigen/Eigen/src/Core/IndexedView.h +321 -0
- package/eigen/Eigen/src/Core/InnerProduct.h +260 -0
- package/eigen/Eigen/src/Core/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Core/Inverse.h +56 -66
- package/eigen/Eigen/src/Core/Map.h +124 -142
- package/eigen/Eigen/src/Core/MapBase.h +256 -281
- package/eigen/Eigen/src/Core/MathFunctions.h +1620 -938
- package/eigen/Eigen/src/Core/MathFunctionsImpl.h +233 -71
- package/eigen/Eigen/src/Core/Matrix.h +491 -416
- package/eigen/Eigen/src/Core/MatrixBase.h +468 -453
- package/eigen/Eigen/src/Core/NestByValue.h +66 -85
- package/eigen/Eigen/src/Core/NoAlias.h +79 -85
- package/eigen/Eigen/src/Core/NumTraits.h +235 -148
- package/eigen/Eigen/src/Core/PartialReduxEvaluator.h +253 -0
- package/eigen/Eigen/src/Core/PermutationMatrix.h +461 -511
- package/eigen/Eigen/src/Core/PlainObjectBase.h +871 -894
- package/eigen/Eigen/src/Core/Product.h +260 -139
- package/eigen/Eigen/src/Core/ProductEvaluators.h +863 -714
- package/eigen/Eigen/src/Core/Random.h +161 -136
- package/eigen/Eigen/src/Core/RandomImpl.h +262 -0
- package/eigen/Eigen/src/Core/RealView.h +250 -0
- package/eigen/Eigen/src/Core/Redux.h +366 -336
- package/eigen/Eigen/src/Core/Ref.h +308 -209
- package/eigen/Eigen/src/Core/Replicate.h +94 -106
- package/eigen/Eigen/src/Core/Reshaped.h +398 -0
- package/eigen/Eigen/src/Core/ReturnByValue.h +49 -55
- package/eigen/Eigen/src/Core/Reverse.h +136 -145
- package/eigen/Eigen/src/Core/Select.h +70 -140
- package/eigen/Eigen/src/Core/SelfAdjointView.h +262 -285
- package/eigen/Eigen/src/Core/SelfCwiseBinaryOp.h +23 -20
- package/eigen/Eigen/src/Core/SkewSymmetricMatrix3.h +382 -0
- package/eigen/Eigen/src/Core/Solve.h +97 -111
- package/eigen/Eigen/src/Core/SolveTriangular.h +131 -129
- package/eigen/Eigen/src/Core/SolverBase.h +138 -101
- package/eigen/Eigen/src/Core/StableNorm.h +156 -160
- package/eigen/Eigen/src/Core/StlIterators.h +619 -0
- package/eigen/Eigen/src/Core/Stride.h +91 -88
- package/eigen/Eigen/src/Core/Swap.h +70 -38
- package/eigen/Eigen/src/Core/Transpose.h +295 -273
- package/eigen/Eigen/src/Core/Transpositions.h +272 -317
- package/eigen/Eigen/src/Core/TriangularMatrix.h +670 -755
- package/eigen/Eigen/src/Core/VectorBlock.h +59 -72
- package/eigen/Eigen/src/Core/VectorwiseOp.h +668 -630
- package/eigen/Eigen/src/Core/Visitor.h +480 -216
- package/eigen/Eigen/src/Core/arch/AVX/Complex.h +407 -293
- package/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +79 -388
- package/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +2935 -491
- package/eigen/Eigen/src/Core/arch/AVX/Reductions.h +353 -0
- package/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +279 -22
- package/eigen/Eigen/src/Core/arch/AVX512/Complex.h +472 -0
- package/eigen/Eigen/src/Core/arch/AVX512/GemmKernel.h +1245 -0
- package/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +85 -333
- package/eigen/Eigen/src/Core/arch/AVX512/MathFunctionsFP16.h +75 -0
- package/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +2490 -649
- package/eigen/Eigen/src/Core/arch/AVX512/PacketMathFP16.h +1413 -0
- package/eigen/Eigen/src/Core/arch/AVX512/Reductions.h +297 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TrsmKernel.h +1167 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TrsmUnrolls.inc +1219 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TypeCasting.h +277 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TypeCastingFP16.h +130 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +521 -298
- package/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +39 -280
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +3686 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +205 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +901 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMAbfloat16.h +742 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixVectorProduct.inc +2818 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h +3391 -723
- package/eigen/Eigen/src/Core/arch/AltiVec/TypeCasting.h +153 -0
- package/eigen/Eigen/src/Core/arch/Default/BFloat16.h +866 -0
- package/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +113 -14
- package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +2634 -0
- package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +227 -0
- package/eigen/Eigen/src/Core/arch/Default/Half.h +1091 -0
- package/eigen/Eigen/src/Core/arch/Default/Settings.h +11 -13
- package/eigen/Eigen/src/Core/arch/GPU/Complex.h +244 -0
- package/eigen/Eigen/src/Core/arch/GPU/MathFunctions.h +104 -0
- package/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +1712 -0
- package/eigen/Eigen/src/Core/arch/GPU/Tuple.h +268 -0
- package/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +77 -0
- package/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
- package/eigen/Eigen/src/Core/arch/HVX/PacketMath.h +1088 -0
- package/eigen/Eigen/src/Core/arch/LSX/Complex.h +520 -0
- package/eigen/Eigen/src/Core/arch/LSX/GeneralBlockPanelKernel.h +23 -0
- package/eigen/Eigen/src/Core/arch/LSX/MathFunctions.h +43 -0
- package/eigen/Eigen/src/Core/arch/LSX/PacketMath.h +2866 -0
- package/eigen/Eigen/src/Core/arch/LSX/TypeCasting.h +526 -0
- package/eigen/Eigen/src/Core/arch/MSA/Complex.h +620 -0
- package/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +379 -0
- package/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +1237 -0
- package/eigen/Eigen/src/Core/arch/NEON/Complex.h +531 -289
- package/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +243 -0
- package/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +50 -73
- package/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +5915 -579
- package/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +1642 -0
- package/eigen/Eigen/src/Core/arch/NEON/UnaryFunctors.h +57 -0
- package/eigen/Eigen/src/Core/arch/SSE/Complex.h +366 -334
- package/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +40 -514
- package/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +2164 -675
- package/eigen/Eigen/src/Core/arch/SSE/Reductions.h +324 -0
- package/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +188 -35
- package/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +48 -0
- package/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +674 -0
- package/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +52 -0
- package/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +227 -0
- package/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +303 -0
- package/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +576 -0
- package/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +83 -0
- package/eigen/Eigen/src/Core/arch/ZVector/Complex.h +434 -261
- package/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +160 -53
- package/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +1073 -605
- package/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +123 -117
- package/eigen/Eigen/src/Core/functors/BinaryFunctors.h +594 -322
- package/eigen/Eigen/src/Core/functors/NullaryFunctors.h +204 -118
- package/eigen/Eigen/src/Core/functors/StlFunctors.h +110 -97
- package/eigen/Eigen/src/Core/functors/TernaryFunctors.h +34 -7
- package/eigen/Eigen/src/Core/functors/UnaryFunctors.h +1158 -530
- package/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +2329 -1333
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +328 -364
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +191 -178
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +85 -82
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +154 -73
- package/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +396 -542
- package/eigen/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +80 -77
- package/eigen/Eigen/src/Core/products/Parallelizer.h +208 -92
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +331 -375
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +206 -224
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +139 -146
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +58 -61
- package/eigen/Eigen/src/Core/products/SelfadjointProduct.h +71 -71
- package/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h +48 -46
- package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h +294 -369
- package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +246 -238
- package/eigen/Eigen/src/Core/products/TriangularMatrixVector.h +244 -247
- package/eigen/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +212 -192
- package/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h +328 -275
- package/eigen/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +108 -109
- package/eigen/Eigen/src/Core/products/TriangularSolverVector.h +70 -93
- package/eigen/Eigen/src/Core/util/Assert.h +158 -0
- package/eigen/Eigen/src/Core/util/BlasUtil.h +413 -290
- package/eigen/Eigen/src/Core/util/ConfigureVectorization.h +543 -0
- package/eigen/Eigen/src/Core/util/Constants.h +314 -263
- package/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +130 -78
- package/eigen/Eigen/src/Core/util/EmulateArray.h +270 -0
- package/eigen/Eigen/src/Core/util/ForwardDeclarations.h +450 -224
- package/eigen/Eigen/src/Core/util/GpuHipCudaDefines.inc +101 -0
- package/eigen/Eigen/src/Core/util/GpuHipCudaUndefines.inc +45 -0
- package/eigen/Eigen/src/Core/util/IndexedViewHelper.h +487 -0
- package/eigen/Eigen/src/Core/util/IntegralConstant.h +279 -0
- package/eigen/Eigen/src/Core/util/MKL_support.h +39 -30
- package/eigen/Eigen/src/Core/util/Macros.h +939 -646
- package/eigen/Eigen/src/Core/util/MaxSizeVector.h +139 -0
- package/eigen/Eigen/src/Core/util/Memory.h +1042 -650
- package/eigen/Eigen/src/Core/util/Meta.h +618 -426
- package/eigen/Eigen/src/Core/util/MoreMeta.h +638 -0
- package/eigen/Eigen/src/Core/util/ReenableStupidWarnings.h +32 -19
- package/eigen/Eigen/src/Core/util/ReshapedHelper.h +51 -0
- package/eigen/Eigen/src/Core/util/Serializer.h +209 -0
- package/eigen/Eigen/src/Core/util/StaticAssert.h +51 -164
- package/eigen/Eigen/src/Core/util/SymbolicIndex.h +445 -0
- package/eigen/Eigen/src/Core/util/XprHelper.h +793 -538
- package/eigen/Eigen/src/Eigenvalues/ComplexEigenSolver.h +246 -277
- package/eigen/Eigen/src/Eigenvalues/ComplexSchur.h +299 -319
- package/eigen/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +52 -48
- package/eigen/Eigen/src/Eigenvalues/EigenSolver.h +413 -456
- package/eigen/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +309 -325
- package/eigen/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +157 -171
- package/eigen/Eigen/src/Eigenvalues/HessenbergDecomposition.h +292 -310
- package/eigen/Eigen/src/Eigenvalues/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +91 -107
- package/eigen/Eigen/src/Eigenvalues/RealQZ.h +539 -606
- package/eigen/Eigen/src/Eigenvalues/RealSchur.h +348 -382
- package/eigen/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +41 -35
- package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +579 -600
- package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +47 -44
- package/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +434 -461
- package/eigen/Eigen/src/Geometry/AlignedBox.h +307 -214
- package/eigen/Eigen/src/Geometry/AngleAxis.h +135 -137
- package/eigen/Eigen/src/Geometry/EulerAngles.h +163 -74
- package/eigen/Eigen/src/Geometry/Homogeneous.h +289 -333
- package/eigen/Eigen/src/Geometry/Hyperplane.h +152 -161
- package/eigen/Eigen/src/Geometry/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Geometry/OrthoMethods.h +168 -145
- package/eigen/Eigen/src/Geometry/ParametrizedLine.h +141 -104
- package/eigen/Eigen/src/Geometry/Quaternion.h +595 -497
- package/eigen/Eigen/src/Geometry/Rotation2D.h +110 -108
- package/eigen/Eigen/src/Geometry/RotationBase.h +148 -145
- package/eigen/Eigen/src/Geometry/Scaling.h +115 -90
- package/eigen/Eigen/src/Geometry/Transform.h +896 -953
- package/eigen/Eigen/src/Geometry/Translation.h +100 -98
- package/eigen/Eigen/src/Geometry/Umeyama.h +79 -84
- package/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +154 -0
- package/eigen/Eigen/src/Householder/BlockHouseholder.h +54 -42
- package/eigen/Eigen/src/Householder/Householder.h +104 -122
- package/eigen/Eigen/src/Householder/HouseholderSequence.h +416 -382
- package/eigen/Eigen/src/Householder/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +153 -166
- package/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +127 -138
- package/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +95 -124
- package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +269 -267
- package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +246 -259
- package/eigen/Eigen/src/IterativeLinearSolvers/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +218 -217
- package/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +80 -103
- package/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +59 -63
- package/eigen/Eigen/src/Jacobi/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Jacobi/Jacobi.h +256 -291
- package/eigen/Eigen/src/KLUSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/KLUSupport/KLUSupport.h +339 -0
- package/eigen/Eigen/src/LU/Determinant.h +60 -63
- package/eigen/Eigen/src/LU/FullPivLU.h +561 -626
- package/eigen/Eigen/src/LU/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/LU/InverseImpl.h +213 -275
- package/eigen/Eigen/src/LU/PartialPivLU.h +407 -435
- package/eigen/Eigen/src/LU/PartialPivLU_LAPACKE.h +54 -40
- package/eigen/Eigen/src/LU/arch/InverseSize4.h +353 -0
- package/eigen/Eigen/src/MetisSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/MetisSupport/MetisSupport.h +81 -93
- package/eigen/Eigen/src/OrderingMethods/Amd.h +250 -282
- package/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +950 -1103
- package/eigen/Eigen/src/OrderingMethods/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/OrderingMethods/Ordering.h +111 -122
- package/eigen/Eigen/src/PaStiXSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/PaStiXSupport/PaStiXSupport.h +524 -570
- package/eigen/Eigen/src/PardisoSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/PardisoSupport/PardisoSupport.h +385 -429
- package/eigen/Eigen/src/QR/ColPivHouseholderQR.h +494 -473
- package/eigen/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +120 -56
- package/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +223 -137
- package/eigen/Eigen/src/QR/FullPivHouseholderQR.h +517 -460
- package/eigen/Eigen/src/QR/HouseholderQR.h +412 -278
- package/eigen/Eigen/src/QR/HouseholderQR_LAPACKE.h +32 -23
- package/eigen/Eigen/src/QR/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SPQRSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +263 -261
- package/eigen/Eigen/src/SVD/BDCSVD.h +872 -679
- package/eigen/Eigen/src/SVD/BDCSVD_LAPACKE.h +174 -0
- package/eigen/Eigen/src/SVD/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SVD/JacobiSVD.h +585 -543
- package/eigen/Eigen/src/SVD/JacobiSVD_LAPACKE.h +85 -49
- package/eigen/Eigen/src/SVD/SVDBase.h +281 -160
- package/eigen/Eigen/src/SVD/UpperBidiagonalization.h +202 -237
- package/eigen/Eigen/src/SparseCholesky/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +769 -590
- package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +318 -129
- package/eigen/Eigen/src/SparseCore/AmbiVector.h +202 -251
- package/eigen/Eigen/src/SparseCore/CompressedStorage.h +184 -236
- package/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +140 -184
- package/eigen/Eigen/src/SparseCore/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseCore/SparseAssign.h +174 -111
- package/eigen/Eigen/src/SparseCore/SparseBlock.h +408 -477
- package/eigen/Eigen/src/SparseCore/SparseColEtree.h +100 -112
- package/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +531 -280
- package/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +559 -347
- package/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +100 -108
- package/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +185 -191
- package/eigen/Eigen/src/SparseCore/SparseDiagonalProduct.h +71 -71
- package/eigen/Eigen/src/SparseCore/SparseDot.h +49 -47
- package/eigen/Eigen/src/SparseCore/SparseFuzzy.h +13 -11
- package/eigen/Eigen/src/SparseCore/SparseMap.h +243 -253
- package/eigen/Eigen/src/SparseCore/SparseMatrix.h +1614 -1142
- package/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +403 -357
- package/eigen/Eigen/src/SparseCore/SparsePermutation.h +186 -115
- package/eigen/Eigen/src/SparseCore/SparseProduct.h +100 -91
- package/eigen/Eigen/src/SparseCore/SparseRedux.h +22 -24
- package/eigen/Eigen/src/SparseCore/SparseRef.h +268 -295
- package/eigen/Eigen/src/SparseCore/SparseSelfAdjointView.h +371 -414
- package/eigen/Eigen/src/SparseCore/SparseSolverBase.h +78 -87
- package/eigen/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +81 -95
- package/eigen/Eigen/src/SparseCore/SparseTranspose.h +62 -71
- package/eigen/Eigen/src/SparseCore/SparseTriangularView.h +132 -144
- package/eigen/Eigen/src/SparseCore/SparseUtil.h +146 -115
- package/eigen/Eigen/src/SparseCore/SparseVector.h +426 -372
- package/eigen/Eigen/src/SparseCore/SparseView.h +164 -193
- package/eigen/Eigen/src/SparseCore/TriangularSolver.h +129 -170
- package/eigen/Eigen/src/SparseLU/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseLU/SparseLU.h +814 -618
- package/eigen/Eigen/src/SparseLU/SparseLUImpl.h +61 -48
- package/eigen/Eigen/src/SparseLU/SparseLU_Memory.h +102 -118
- package/eigen/Eigen/src/SparseLU/SparseLU_Structs.h +38 -35
- package/eigen/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +273 -255
- package/eigen/Eigen/src/SparseLU/SparseLU_Utils.h +44 -49
- package/eigen/Eigen/src/SparseLU/SparseLU_column_bmod.h +104 -108
- package/eigen/Eigen/src/SparseLU/SparseLU_column_dfs.h +90 -101
- package/eigen/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +57 -58
- package/eigen/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +43 -55
- package/eigen/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +74 -71
- package/eigen/Eigen/src/SparseLU/SparseLU_panel_bmod.h +125 -133
- package/eigen/Eigen/src/SparseLU/SparseLU_panel_dfs.h +136 -159
- package/eigen/Eigen/src/SparseLU/SparseLU_pivotL.h +51 -52
- package/eigen/Eigen/src/SparseLU/SparseLU_pruneL.h +67 -73
- package/eigen/Eigen/src/SparseLU/SparseLU_relax_snode.h +24 -26
- package/eigen/Eigen/src/SparseQR/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseQR/SparseQR.h +451 -490
- package/eigen/Eigen/src/StlSupport/StdDeque.h +28 -105
- package/eigen/Eigen/src/StlSupport/StdList.h +28 -84
- package/eigen/Eigen/src/StlSupport/StdVector.h +28 -108
- package/eigen/Eigen/src/StlSupport/details.h +48 -50
- package/eigen/Eigen/src/SuperLUSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SuperLUSupport/SuperLUSupport.h +634 -732
- package/eigen/Eigen/src/ThreadPool/Barrier.h +70 -0
- package/eigen/Eigen/src/ThreadPool/CoreThreadPoolDevice.h +336 -0
- package/eigen/Eigen/src/ThreadPool/EventCount.h +241 -0
- package/eigen/Eigen/src/ThreadPool/ForkJoin.h +140 -0
- package/eigen/Eigen/src/ThreadPool/InternalHeaderCheck.h +4 -0
- package/eigen/Eigen/src/ThreadPool/NonBlockingThreadPool.h +587 -0
- package/eigen/Eigen/src/ThreadPool/RunQueue.h +230 -0
- package/eigen/Eigen/src/ThreadPool/ThreadCancel.h +21 -0
- package/eigen/Eigen/src/ThreadPool/ThreadEnvironment.h +43 -0
- package/eigen/Eigen/src/ThreadPool/ThreadLocal.h +289 -0
- package/eigen/Eigen/src/ThreadPool/ThreadPoolInterface.h +50 -0
- package/eigen/Eigen/src/ThreadPool/ThreadYield.h +16 -0
- package/eigen/Eigen/src/UmfPackSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/UmfPackSupport/UmfPackSupport.h +480 -380
- package/eigen/Eigen/src/misc/Image.h +41 -43
- package/eigen/Eigen/src/misc/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/misc/Kernel.h +39 -41
- package/eigen/Eigen/src/misc/RealSvd2x2.h +19 -21
- package/eigen/Eigen/src/misc/blas.h +83 -426
- package/eigen/Eigen/src/misc/lapacke.h +9976 -16182
- package/eigen/Eigen/src/misc/lapacke_helpers.h +163 -0
- package/eigen/Eigen/src/misc/lapacke_mangling.h +4 -5
- package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.inc +344 -0
- package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.inc +544 -0
- package/eigen/Eigen/src/plugins/BlockMethods.inc +1370 -0
- package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.inc +116 -0
- package/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.inc +167 -0
- package/eigen/Eigen/src/plugins/IndexedViewMethods.inc +192 -0
- package/eigen/Eigen/src/plugins/InternalHeaderCheck.inc +3 -0
- package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.inc +331 -0
- package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.inc +118 -0
- package/eigen/Eigen/src/plugins/ReshapedMethods.inc +133 -0
- package/lib/LibEigen.d.ts +4 -0
- package/lib/LibEigen.js +14 -0
- package/lib/index.d.ts +1 -1
- package/lib/index.js +7 -3
- package/package.json +2 -10
- package/eigen/Eigen/CMakeLists.txt +0 -19
- package/eigen/Eigen/src/Core/BooleanRedux.h +0 -164
- package/eigen/Eigen/src/Core/arch/CUDA/Complex.h +0 -103
- package/eigen/Eigen/src/Core/arch/CUDA/Half.h +0 -675
- package/eigen/Eigen/src/Core/arch/CUDA/MathFunctions.h +0 -91
- package/eigen/Eigen/src/Core/arch/CUDA/PacketMath.h +0 -333
- package/eigen/Eigen/src/Core/arch/CUDA/PacketMathHalf.h +0 -1124
- package/eigen/Eigen/src/Core/arch/CUDA/TypeCasting.h +0 -212
- package/eigen/Eigen/src/Core/util/NonMPL2.h +0 -3
- package/eigen/Eigen/src/Geometry/arch/Geometry_SSE.h +0 -161
- package/eigen/Eigen/src/LU/arch/Inverse_SSE.h +0 -338
- package/eigen/Eigen/src/SparseCore/MappedSparseMatrix.h +0 -67
- package/eigen/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +0 -280
- package/eigen/Eigen/src/misc/lapack.h +0 -152
- package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h +0 -332
- package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +0 -552
- package/eigen/Eigen/src/plugins/BlockMethods.h +0 -1058
- package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.h +0 -115
- package/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.h +0 -163
- package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +0 -152
- package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +0 -85
- package/lib/eigen.d.ts +0 -2
- package/lib/eigen.js +0 -15
|
@@ -11,222 +11,297 @@
|
|
|
11
11
|
#ifndef EIGEN_DIAGONALMATRIX_H
|
|
12
12
|
#define EIGEN_DIAGONALMATRIX_H
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
// IWYU pragma: private
|
|
15
|
+
#include "./InternalHeaderCheck.h"
|
|
16
|
+
|
|
17
|
+
namespace Eigen {
|
|
18
|
+
|
|
19
|
+
/** \class DiagonalBase
|
|
20
|
+
* \ingroup Core_Module
|
|
21
|
+
*
|
|
22
|
+
* \brief Base class for diagonal matrices and expressions
|
|
23
|
+
*
|
|
24
|
+
* This is the base class that is inherited by diagonal matrix and related expression
|
|
25
|
+
* types, which internally use a vector for storing the diagonal entries. Diagonal
|
|
26
|
+
* types always represent square matrices.
|
|
27
|
+
*
|
|
28
|
+
* \tparam Derived is the derived type, a DiagonalMatrix or DiagonalWrapper.
|
|
29
|
+
*
|
|
30
|
+
* \sa class DiagonalMatrix, class DiagonalWrapper
|
|
31
|
+
*/
|
|
32
|
+
template <typename Derived>
|
|
33
|
+
class DiagonalBase : public EigenBase<Derived> {
|
|
34
|
+
public:
|
|
35
|
+
typedef typename internal::traits<Derived>::DiagonalVectorType DiagonalVectorType;
|
|
36
|
+
typedef typename DiagonalVectorType::Scalar Scalar;
|
|
37
|
+
typedef typename DiagonalVectorType::RealScalar RealScalar;
|
|
38
|
+
typedef typename internal::traits<Derived>::StorageKind StorageKind;
|
|
39
|
+
typedef typename internal::traits<Derived>::StorageIndex StorageIndex;
|
|
15
40
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
typedef typename internal::traits<Derived>::StorageKind StorageKind;
|
|
25
|
-
typedef typename internal::traits<Derived>::StorageIndex StorageIndex;
|
|
26
|
-
|
|
27
|
-
enum {
|
|
28
|
-
RowsAtCompileTime = DiagonalVectorType::SizeAtCompileTime,
|
|
29
|
-
ColsAtCompileTime = DiagonalVectorType::SizeAtCompileTime,
|
|
30
|
-
MaxRowsAtCompileTime = DiagonalVectorType::MaxSizeAtCompileTime,
|
|
31
|
-
MaxColsAtCompileTime = DiagonalVectorType::MaxSizeAtCompileTime,
|
|
32
|
-
IsVectorAtCompileTime = 0,
|
|
33
|
-
Flags = NoPreferredStorageOrderBit
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
typedef Matrix<Scalar, RowsAtCompileTime, ColsAtCompileTime, 0, MaxRowsAtCompileTime, MaxColsAtCompileTime> DenseMatrixType;
|
|
37
|
-
typedef DenseMatrixType DenseType;
|
|
38
|
-
typedef DiagonalMatrix<Scalar,DiagonalVectorType::SizeAtCompileTime,DiagonalVectorType::MaxSizeAtCompileTime> PlainObject;
|
|
39
|
-
|
|
40
|
-
EIGEN_DEVICE_FUNC
|
|
41
|
-
inline const Derived& derived() const { return *static_cast<const Derived*>(this); }
|
|
42
|
-
EIGEN_DEVICE_FUNC
|
|
43
|
-
inline Derived& derived() { return *static_cast<Derived*>(this); }
|
|
44
|
-
|
|
45
|
-
EIGEN_DEVICE_FUNC
|
|
46
|
-
DenseMatrixType toDenseMatrix() const { return derived(); }
|
|
47
|
-
|
|
48
|
-
EIGEN_DEVICE_FUNC
|
|
49
|
-
inline const DiagonalVectorType& diagonal() const { return derived().diagonal(); }
|
|
50
|
-
EIGEN_DEVICE_FUNC
|
|
51
|
-
inline DiagonalVectorType& diagonal() { return derived().diagonal(); }
|
|
52
|
-
|
|
53
|
-
EIGEN_DEVICE_FUNC
|
|
54
|
-
inline Index rows() const { return diagonal().size(); }
|
|
55
|
-
EIGEN_DEVICE_FUNC
|
|
56
|
-
inline Index cols() const { return diagonal().size(); }
|
|
57
|
-
|
|
58
|
-
template<typename MatrixDerived>
|
|
59
|
-
EIGEN_DEVICE_FUNC
|
|
60
|
-
const Product<Derived,MatrixDerived,LazyProduct>
|
|
61
|
-
operator*(const MatrixBase<MatrixDerived> &matrix) const
|
|
62
|
-
{
|
|
63
|
-
return Product<Derived, MatrixDerived, LazyProduct>(derived(),matrix.derived());
|
|
64
|
-
}
|
|
41
|
+
enum {
|
|
42
|
+
RowsAtCompileTime = DiagonalVectorType::SizeAtCompileTime,
|
|
43
|
+
ColsAtCompileTime = DiagonalVectorType::SizeAtCompileTime,
|
|
44
|
+
MaxRowsAtCompileTime = DiagonalVectorType::MaxSizeAtCompileTime,
|
|
45
|
+
MaxColsAtCompileTime = DiagonalVectorType::MaxSizeAtCompileTime,
|
|
46
|
+
IsVectorAtCompileTime = 0,
|
|
47
|
+
Flags = NoPreferredStorageOrderBit
|
|
48
|
+
};
|
|
65
49
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
}
|
|
50
|
+
typedef Matrix<Scalar, RowsAtCompileTime, ColsAtCompileTime, 0, MaxRowsAtCompileTime, MaxColsAtCompileTime>
|
|
51
|
+
DenseMatrixType;
|
|
52
|
+
typedef DenseMatrixType DenseType;
|
|
53
|
+
typedef DiagonalMatrix<Scalar, DiagonalVectorType::SizeAtCompileTime, DiagonalVectorType::MaxSizeAtCompileTime>
|
|
54
|
+
PlainObject;
|
|
55
|
+
|
|
56
|
+
/** \returns a reference to the derived object. */
|
|
57
|
+
EIGEN_DEVICE_FUNC inline const Derived& derived() const { return *static_cast<const Derived*>(this); }
|
|
58
|
+
/** \returns a const reference to the derived object. */
|
|
59
|
+
EIGEN_DEVICE_FUNC inline Derived& derived() { return *static_cast<Derived*>(this); }
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Constructs a dense matrix from \c *this. Note, this directly returns a dense matrix type,
|
|
63
|
+
* not an expression.
|
|
64
|
+
* \returns A dense matrix, with its diagonal entries set from the the derived object. */
|
|
65
|
+
EIGEN_DEVICE_FUNC DenseMatrixType toDenseMatrix() const { return derived(); }
|
|
66
|
+
|
|
67
|
+
/** \returns a reference to the derived object's vector of diagonal coefficients. */
|
|
68
|
+
EIGEN_DEVICE_FUNC inline const DiagonalVectorType& diagonal() const { return derived().diagonal(); }
|
|
69
|
+
/** \returns a const reference to the derived object's vector of diagonal coefficients. */
|
|
70
|
+
EIGEN_DEVICE_FUNC inline DiagonalVectorType& diagonal() { return derived().diagonal(); }
|
|
71
|
+
|
|
72
|
+
/** \returns the value of the coefficient as if \c *this was a dense matrix. */
|
|
73
|
+
EIGEN_DEVICE_FUNC inline Scalar coeff(Index row, Index col) const {
|
|
74
|
+
eigen_assert(row >= 0 && col >= 0 && row < rows() && col <= cols());
|
|
75
|
+
return row == col ? diagonal().coeff(row) : Scalar(0);
|
|
76
|
+
}
|
|
87
77
|
|
|
88
|
-
|
|
78
|
+
/** \returns the number of rows. */
|
|
79
|
+
EIGEN_DEVICE_FUNC constexpr Index rows() const { return diagonal().size(); }
|
|
80
|
+
/** \returns the number of columns. */
|
|
81
|
+
EIGEN_DEVICE_FUNC constexpr Index cols() const { return diagonal().size(); }
|
|
82
|
+
|
|
83
|
+
/** \returns the diagonal matrix product of \c *this by the dense matrix, \a matrix */
|
|
84
|
+
template <typename MatrixDerived>
|
|
85
|
+
EIGEN_DEVICE_FUNC const Product<Derived, MatrixDerived, LazyProduct> operator*(
|
|
86
|
+
const MatrixBase<MatrixDerived>& matrix) const {
|
|
87
|
+
return Product<Derived, MatrixDerived, LazyProduct>(derived(), matrix.derived());
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
template <typename OtherDerived>
|
|
91
|
+
using DiagonalProductReturnType = DiagonalWrapper<const EIGEN_CWISE_BINARY_RETURN_TYPE(
|
|
92
|
+
DiagonalVectorType, typename OtherDerived::DiagonalVectorType, product)>;
|
|
93
|
+
|
|
94
|
+
/** \returns the diagonal matrix product of \c *this by the diagonal matrix \a other */
|
|
95
|
+
template <typename OtherDerived>
|
|
96
|
+
EIGEN_DEVICE_FUNC const DiagonalProductReturnType<OtherDerived> operator*(
|
|
97
|
+
const DiagonalBase<OtherDerived>& other) const {
|
|
98
|
+
return diagonal().cwiseProduct(other.diagonal()).asDiagonal();
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
using DiagonalInverseReturnType =
|
|
102
|
+
DiagonalWrapper<const CwiseUnaryOp<internal::scalar_inverse_op<Scalar>, const DiagonalVectorType>>;
|
|
103
|
+
|
|
104
|
+
/** \returns the inverse \c *this. Computed as the coefficient-wise inverse of the diagonal. */
|
|
105
|
+
EIGEN_DEVICE_FUNC inline const DiagonalInverseReturnType inverse() const {
|
|
106
|
+
return diagonal().cwiseInverse().asDiagonal();
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
using DiagonalScaleReturnType =
|
|
110
|
+
DiagonalWrapper<const EIGEN_EXPR_BINARYOP_SCALAR_RETURN_TYPE(DiagonalVectorType, Scalar, product)>;
|
|
111
|
+
|
|
112
|
+
/** \returns the product of \c *this by the scalar \a scalar */
|
|
113
|
+
EIGEN_DEVICE_FUNC inline const DiagonalScaleReturnType operator*(const Scalar& scalar) const {
|
|
114
|
+
return (diagonal() * scalar).asDiagonal();
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
using ScaleDiagonalReturnType =
|
|
118
|
+
DiagonalWrapper<const EIGEN_SCALAR_BINARYOP_EXPR_RETURN_TYPE(Scalar, DiagonalVectorType, product)>;
|
|
119
|
+
|
|
120
|
+
/** \returns the product of a scalar and the diagonal matrix \a other */
|
|
121
|
+
EIGEN_DEVICE_FUNC friend inline const ScaleDiagonalReturnType operator*(const Scalar& scalar,
|
|
122
|
+
const DiagonalBase& other) {
|
|
123
|
+
return (scalar * other.diagonal()).asDiagonal();
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
template <typename OtherDerived>
|
|
127
|
+
using DiagonalSumReturnType = DiagonalWrapper<const EIGEN_CWISE_BINARY_RETURN_TYPE(
|
|
128
|
+
DiagonalVectorType, typename OtherDerived::DiagonalVectorType, sum)>;
|
|
129
|
+
|
|
130
|
+
/** \returns the sum of \c *this and the diagonal matrix \a other */
|
|
131
|
+
template <typename OtherDerived>
|
|
132
|
+
EIGEN_DEVICE_FUNC inline const DiagonalSumReturnType<OtherDerived> operator+(
|
|
133
|
+
const DiagonalBase<OtherDerived>& other) const {
|
|
134
|
+
return (diagonal() + other.diagonal()).asDiagonal();
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
template <typename OtherDerived>
|
|
138
|
+
using DiagonalDifferenceReturnType = DiagonalWrapper<const EIGEN_CWISE_BINARY_RETURN_TYPE(
|
|
139
|
+
DiagonalVectorType, typename OtherDerived::DiagonalVectorType, difference)>;
|
|
140
|
+
|
|
141
|
+
/** \returns the difference of \c *this and the diagonal matrix \a other */
|
|
142
|
+
template <typename OtherDerived>
|
|
143
|
+
EIGEN_DEVICE_FUNC inline const DiagonalDifferenceReturnType<OtherDerived> operator-(
|
|
144
|
+
const DiagonalBase<OtherDerived>& other) const {
|
|
145
|
+
return (diagonal() - other.diagonal()).asDiagonal();
|
|
146
|
+
}
|
|
147
|
+
};
|
|
89
148
|
|
|
90
149
|
/** \class DiagonalMatrix
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
150
|
+
* \ingroup Core_Module
|
|
151
|
+
*
|
|
152
|
+
* \brief Represents a diagonal matrix with its storage
|
|
153
|
+
*
|
|
154
|
+
* \tparam Scalar_ the type of coefficients
|
|
155
|
+
* \tparam SizeAtCompileTime the dimension of the matrix, or Dynamic
|
|
156
|
+
* \tparam MaxSizeAtCompileTime the dimension of the matrix, or Dynamic. This parameter is optional and defaults
|
|
157
|
+
* to SizeAtCompileTime. Most of the time, you do not need to specify it.
|
|
158
|
+
*
|
|
159
|
+
* \sa class DiagonalBase, class DiagonalWrapper
|
|
160
|
+
*/
|
|
102
161
|
|
|
103
162
|
namespace internal {
|
|
104
|
-
template<typename
|
|
105
|
-
struct traits<DiagonalMatrix<
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
typedef Matrix<_Scalar,SizeAtCompileTime,1,0,MaxSizeAtCompileTime,1> DiagonalVectorType;
|
|
163
|
+
template <typename Scalar_, int SizeAtCompileTime, int MaxSizeAtCompileTime>
|
|
164
|
+
struct traits<DiagonalMatrix<Scalar_, SizeAtCompileTime, MaxSizeAtCompileTime>>
|
|
165
|
+
: traits<Matrix<Scalar_, SizeAtCompileTime, SizeAtCompileTime, 0, MaxSizeAtCompileTime, MaxSizeAtCompileTime>> {
|
|
166
|
+
typedef Matrix<Scalar_, SizeAtCompileTime, 1, 0, MaxSizeAtCompileTime, 1> DiagonalVectorType;
|
|
109
167
|
typedef DiagonalShape StorageKind;
|
|
110
|
-
enum {
|
|
111
|
-
Flags = LvalueBit | NoPreferredStorageOrderBit
|
|
112
|
-
};
|
|
168
|
+
enum { Flags = LvalueBit | NoPreferredStorageOrderBit | NestByRefBit };
|
|
113
169
|
};
|
|
114
|
-
}
|
|
115
|
-
template<typename
|
|
116
|
-
class DiagonalMatrix
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
typedef typename internal::traits<DiagonalMatrix>::StorageIndex StorageIndex;
|
|
126
|
-
#endif
|
|
127
|
-
|
|
128
|
-
protected:
|
|
129
|
-
|
|
130
|
-
DiagonalVectorType m_diagonal;
|
|
131
|
-
|
|
132
|
-
public:
|
|
133
|
-
|
|
134
|
-
/** const version of diagonal(). */
|
|
135
|
-
EIGEN_DEVICE_FUNC
|
|
136
|
-
inline const DiagonalVectorType& diagonal() const { return m_diagonal; }
|
|
137
|
-
/** \returns a reference to the stored vector of diagonal coefficients. */
|
|
138
|
-
EIGEN_DEVICE_FUNC
|
|
139
|
-
inline DiagonalVectorType& diagonal() { return m_diagonal; }
|
|
140
|
-
|
|
141
|
-
/** Default constructor without initialization */
|
|
142
|
-
EIGEN_DEVICE_FUNC
|
|
143
|
-
inline DiagonalMatrix() {}
|
|
144
|
-
|
|
145
|
-
/** Constructs a diagonal matrix with given dimension */
|
|
146
|
-
EIGEN_DEVICE_FUNC
|
|
147
|
-
explicit inline DiagonalMatrix(Index dim) : m_diagonal(dim) {}
|
|
148
|
-
|
|
149
|
-
/** 2D constructor. */
|
|
150
|
-
EIGEN_DEVICE_FUNC
|
|
151
|
-
inline DiagonalMatrix(const Scalar& x, const Scalar& y) : m_diagonal(x,y) {}
|
|
152
|
-
|
|
153
|
-
/** 3D constructor. */
|
|
154
|
-
EIGEN_DEVICE_FUNC
|
|
155
|
-
inline DiagonalMatrix(const Scalar& x, const Scalar& y, const Scalar& z) : m_diagonal(x,y,z) {}
|
|
156
|
-
|
|
157
|
-
/** Copy constructor. */
|
|
158
|
-
template<typename OtherDerived>
|
|
159
|
-
EIGEN_DEVICE_FUNC
|
|
160
|
-
inline DiagonalMatrix(const DiagonalBase<OtherDerived>& other) : m_diagonal(other.diagonal()) {}
|
|
161
|
-
|
|
162
|
-
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
|
163
|
-
/** copy constructor. prevent a default copy constructor from hiding the other templated constructor */
|
|
164
|
-
inline DiagonalMatrix(const DiagonalMatrix& other) : m_diagonal(other.diagonal()) {}
|
|
165
|
-
#endif
|
|
166
|
-
|
|
167
|
-
/** generic constructor from expression of the diagonal coefficients */
|
|
168
|
-
template<typename OtherDerived>
|
|
169
|
-
EIGEN_DEVICE_FUNC
|
|
170
|
-
explicit inline DiagonalMatrix(const MatrixBase<OtherDerived>& other) : m_diagonal(other)
|
|
171
|
-
{}
|
|
172
|
-
|
|
173
|
-
/** Copy operator. */
|
|
174
|
-
template<typename OtherDerived>
|
|
175
|
-
EIGEN_DEVICE_FUNC
|
|
176
|
-
DiagonalMatrix& operator=(const DiagonalBase<OtherDerived>& other)
|
|
177
|
-
{
|
|
178
|
-
m_diagonal = other.diagonal();
|
|
179
|
-
return *this;
|
|
180
|
-
}
|
|
170
|
+
} // namespace internal
|
|
171
|
+
template <typename Scalar_, int SizeAtCompileTime, int MaxSizeAtCompileTime>
|
|
172
|
+
class DiagonalMatrix : public DiagonalBase<DiagonalMatrix<Scalar_, SizeAtCompileTime, MaxSizeAtCompileTime>> {
|
|
173
|
+
public:
|
|
174
|
+
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
|
175
|
+
typedef typename internal::traits<DiagonalMatrix>::DiagonalVectorType DiagonalVectorType;
|
|
176
|
+
typedef const DiagonalMatrix& Nested;
|
|
177
|
+
typedef Scalar_ Scalar;
|
|
178
|
+
typedef typename internal::traits<DiagonalMatrix>::StorageKind StorageKind;
|
|
179
|
+
typedef typename internal::traits<DiagonalMatrix>::StorageIndex StorageIndex;
|
|
180
|
+
#endif
|
|
181
181
|
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
182
|
+
protected:
|
|
183
|
+
DiagonalVectorType m_diagonal;
|
|
184
|
+
|
|
185
|
+
public:
|
|
186
|
+
/** const version of diagonal(). */
|
|
187
|
+
EIGEN_DEVICE_FUNC inline const DiagonalVectorType& diagonal() const { return m_diagonal; }
|
|
188
|
+
/** \returns a reference to the stored vector of diagonal coefficients. */
|
|
189
|
+
EIGEN_DEVICE_FUNC inline DiagonalVectorType& diagonal() { return m_diagonal; }
|
|
190
|
+
|
|
191
|
+
/** Default constructor without initialization */
|
|
192
|
+
EIGEN_DEVICE_FUNC inline DiagonalMatrix() {}
|
|
193
|
+
|
|
194
|
+
/** Constructs a diagonal matrix with given dimension */
|
|
195
|
+
EIGEN_DEVICE_FUNC explicit inline DiagonalMatrix(Index dim) : m_diagonal(dim) {}
|
|
196
|
+
|
|
197
|
+
/** 2D constructor. */
|
|
198
|
+
EIGEN_DEVICE_FUNC inline DiagonalMatrix(const Scalar& x, const Scalar& y) : m_diagonal(x, y) {}
|
|
199
|
+
|
|
200
|
+
/** 3D constructor. */
|
|
201
|
+
EIGEN_DEVICE_FUNC inline DiagonalMatrix(const Scalar& x, const Scalar& y, const Scalar& z) : m_diagonal(x, y, z) {}
|
|
202
|
+
|
|
203
|
+
/** \brief Construct a diagonal matrix with fixed size from an arbitrary number of coefficients.
|
|
204
|
+
*
|
|
205
|
+
* \warning To construct a diagonal matrix of fixed size, the number of values passed to this
|
|
206
|
+
* constructor must match the fixed dimension of \c *this.
|
|
207
|
+
*
|
|
208
|
+
* \sa DiagonalMatrix(const Scalar&, const Scalar&)
|
|
209
|
+
* \sa DiagonalMatrix(const Scalar&, const Scalar&, const Scalar&)
|
|
210
|
+
*/
|
|
211
|
+
template <typename... ArgTypes>
|
|
212
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE DiagonalMatrix(const Scalar& a0, const Scalar& a1, const Scalar& a2,
|
|
213
|
+
const ArgTypes&... args)
|
|
214
|
+
: m_diagonal(a0, a1, a2, args...) {}
|
|
215
|
+
|
|
216
|
+
/** \brief Constructs a DiagonalMatrix and initializes it by elements given by an initializer list of initializer
|
|
217
|
+
* lists \cpp11
|
|
218
|
+
*/
|
|
219
|
+
EIGEN_DEVICE_FUNC explicit EIGEN_STRONG_INLINE DiagonalMatrix(
|
|
220
|
+
const std::initializer_list<std::initializer_list<Scalar>>& list)
|
|
221
|
+
: m_diagonal(list) {}
|
|
222
|
+
|
|
223
|
+
/** \brief Constructs a DiagonalMatrix from an r-value diagonal vector type */
|
|
224
|
+
EIGEN_DEVICE_FUNC explicit inline DiagonalMatrix(DiagonalVectorType&& diag) : m_diagonal(std::move(diag)) {}
|
|
225
|
+
|
|
226
|
+
/** Copy constructor. */
|
|
227
|
+
template <typename OtherDerived>
|
|
228
|
+
EIGEN_DEVICE_FUNC inline DiagonalMatrix(const DiagonalBase<OtherDerived>& other) : m_diagonal(other.diagonal()) {}
|
|
229
|
+
|
|
230
|
+
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
|
231
|
+
/** copy constructor. prevent a default copy constructor from hiding the other templated constructor */
|
|
232
|
+
inline DiagonalMatrix(const DiagonalMatrix& other) : m_diagonal(other.diagonal()) {}
|
|
233
|
+
#endif
|
|
234
|
+
|
|
235
|
+
/** generic constructor from expression of the diagonal coefficients */
|
|
236
|
+
template <typename OtherDerived>
|
|
237
|
+
EIGEN_DEVICE_FUNC explicit inline DiagonalMatrix(const MatrixBase<OtherDerived>& other) : m_diagonal(other) {}
|
|
238
|
+
|
|
239
|
+
/** Copy operator. */
|
|
240
|
+
template <typename OtherDerived>
|
|
241
|
+
EIGEN_DEVICE_FUNC DiagonalMatrix& operator=(const DiagonalBase<OtherDerived>& other) {
|
|
242
|
+
m_diagonal = other.diagonal();
|
|
243
|
+
return *this;
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
|
247
|
+
/** This is a special case of the templated operator=. Its purpose is to
|
|
248
|
+
* prevent a default operator= from hiding the templated operator=.
|
|
249
|
+
*/
|
|
250
|
+
EIGEN_DEVICE_FUNC DiagonalMatrix& operator=(const DiagonalMatrix& other) {
|
|
251
|
+
m_diagonal = other.diagonal();
|
|
252
|
+
return *this;
|
|
253
|
+
}
|
|
254
|
+
#endif
|
|
255
|
+
|
|
256
|
+
typedef DiagonalWrapper<const CwiseNullaryOp<internal::scalar_constant_op<Scalar>, DiagonalVectorType>>
|
|
257
|
+
InitializeReturnType;
|
|
258
|
+
|
|
259
|
+
typedef DiagonalWrapper<const CwiseNullaryOp<internal::scalar_zero_op<Scalar>, DiagonalVectorType>>
|
|
260
|
+
ZeroInitializeReturnType;
|
|
261
|
+
|
|
262
|
+
/** Initializes a diagonal matrix of size SizeAtCompileTime with coefficients set to zero */
|
|
263
|
+
EIGEN_DEVICE_FUNC static const ZeroInitializeReturnType Zero() { return DiagonalVectorType::Zero().asDiagonal(); }
|
|
264
|
+
/** Initializes a diagonal matrix of size dim with coefficients set to zero */
|
|
265
|
+
EIGEN_DEVICE_FUNC static const ZeroInitializeReturnType Zero(Index size) {
|
|
266
|
+
return DiagonalVectorType::Zero(size).asDiagonal();
|
|
267
|
+
}
|
|
268
|
+
/** Initializes a identity matrix of size SizeAtCompileTime */
|
|
269
|
+
EIGEN_DEVICE_FUNC static const InitializeReturnType Identity() { return DiagonalVectorType::Ones().asDiagonal(); }
|
|
270
|
+
/** Initializes a identity matrix of size dim */
|
|
271
|
+
EIGEN_DEVICE_FUNC static const InitializeReturnType Identity(Index size) {
|
|
272
|
+
return DiagonalVectorType::Ones(size).asDiagonal();
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
/** Resizes to given size. */
|
|
276
|
+
EIGEN_DEVICE_FUNC inline void resize(Index size) { m_diagonal.resize(size); }
|
|
277
|
+
/** Sets all coefficients to zero. */
|
|
278
|
+
EIGEN_DEVICE_FUNC inline void setZero() { m_diagonal.setZero(); }
|
|
279
|
+
/** Resizes and sets all coefficients to zero. */
|
|
280
|
+
EIGEN_DEVICE_FUNC inline void setZero(Index size) { m_diagonal.setZero(size); }
|
|
281
|
+
/** Sets this matrix to be the identity matrix of the current size. */
|
|
282
|
+
EIGEN_DEVICE_FUNC inline void setIdentity() { m_diagonal.setOnes(); }
|
|
283
|
+
/** Sets this matrix to be the identity matrix of the given size. */
|
|
284
|
+
EIGEN_DEVICE_FUNC inline void setIdentity(Index size) { m_diagonal.setOnes(size); }
|
|
209
285
|
};
|
|
210
286
|
|
|
211
287
|
/** \class DiagonalWrapper
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
288
|
+
* \ingroup Core_Module
|
|
289
|
+
*
|
|
290
|
+
* \brief Expression of a diagonal matrix
|
|
291
|
+
*
|
|
292
|
+
* \tparam DiagonalVectorType_ the type of the vector of diagonal coefficients
|
|
293
|
+
*
|
|
294
|
+
* This class is an expression of a diagonal matrix, but not storing its own vector of diagonal coefficients,
|
|
295
|
+
* instead wrapping an existing vector expression. It is the return type of MatrixBase::asDiagonal()
|
|
296
|
+
* and most of the time this is the only way that it is used.
|
|
297
|
+
*
|
|
298
|
+
* \sa class DiagonalMatrix, class DiagonalBase, MatrixBase::asDiagonal()
|
|
299
|
+
*/
|
|
224
300
|
|
|
225
301
|
namespace internal {
|
|
226
|
-
template<typename
|
|
227
|
-
struct traits<DiagonalWrapper<
|
|
228
|
-
|
|
229
|
-
typedef _DiagonalVectorType DiagonalVectorType;
|
|
302
|
+
template <typename DiagonalVectorType_>
|
|
303
|
+
struct traits<DiagonalWrapper<DiagonalVectorType_>> {
|
|
304
|
+
typedef DiagonalVectorType_ DiagonalVectorType;
|
|
230
305
|
typedef typename DiagonalVectorType::Scalar Scalar;
|
|
231
306
|
typedef typename DiagonalVectorType::StorageIndex StorageIndex;
|
|
232
307
|
typedef DiagonalShape StorageKind;
|
|
@@ -236,108 +311,110 @@ struct traits<DiagonalWrapper<_DiagonalVectorType> >
|
|
|
236
311
|
ColsAtCompileTime = DiagonalVectorType::SizeAtCompileTime,
|
|
237
312
|
MaxRowsAtCompileTime = DiagonalVectorType::MaxSizeAtCompileTime,
|
|
238
313
|
MaxColsAtCompileTime = DiagonalVectorType::MaxSizeAtCompileTime,
|
|
239
|
-
Flags =
|
|
314
|
+
Flags = (traits<DiagonalVectorType>::Flags & LvalueBit) | NoPreferredStorageOrderBit
|
|
240
315
|
};
|
|
241
316
|
};
|
|
242
|
-
}
|
|
317
|
+
} // namespace internal
|
|
318
|
+
|
|
319
|
+
template <typename DiagonalVectorType_>
|
|
320
|
+
class DiagonalWrapper : public DiagonalBase<DiagonalWrapper<DiagonalVectorType_>>, internal::no_assignment_operator {
|
|
321
|
+
public:
|
|
322
|
+
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
|
323
|
+
typedef DiagonalVectorType_ DiagonalVectorType;
|
|
324
|
+
typedef DiagonalWrapper Nested;
|
|
325
|
+
#endif
|
|
243
326
|
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
#endif
|
|
253
|
-
|
|
254
|
-
/** Constructor from expression of diagonal coefficients to wrap. */
|
|
255
|
-
EIGEN_DEVICE_FUNC
|
|
256
|
-
explicit inline DiagonalWrapper(DiagonalVectorType& a_diagonal) : m_diagonal(a_diagonal) {}
|
|
257
|
-
|
|
258
|
-
/** \returns a const reference to the wrapped expression of diagonal coefficients. */
|
|
259
|
-
EIGEN_DEVICE_FUNC
|
|
260
|
-
const DiagonalVectorType& diagonal() const { return m_diagonal; }
|
|
261
|
-
|
|
262
|
-
protected:
|
|
263
|
-
typename DiagonalVectorType::Nested m_diagonal;
|
|
327
|
+
/** Constructor from expression of diagonal coefficients to wrap. */
|
|
328
|
+
EIGEN_DEVICE_FUNC explicit inline DiagonalWrapper(DiagonalVectorType& a_diagonal) : m_diagonal(a_diagonal) {}
|
|
329
|
+
|
|
330
|
+
/** \returns a const reference to the wrapped expression of diagonal coefficients. */
|
|
331
|
+
EIGEN_DEVICE_FUNC const DiagonalVectorType& diagonal() const { return m_diagonal; }
|
|
332
|
+
|
|
333
|
+
protected:
|
|
334
|
+
typename DiagonalVectorType::Nested m_diagonal;
|
|
264
335
|
};
|
|
265
336
|
|
|
266
337
|
/** \returns a pseudo-expression of a diagonal matrix with *this as vector of diagonal coefficients
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
template<typename Derived>
|
|
276
|
-
inline const DiagonalWrapper<const Derived>
|
|
277
|
-
MatrixBase<Derived>::asDiagonal() const
|
|
278
|
-
{
|
|
338
|
+
*
|
|
339
|
+
* \only_for_vectors
|
|
340
|
+
*
|
|
341
|
+
* Example: \include MatrixBase_asDiagonal.cpp
|
|
342
|
+
* Output: \verbinclude MatrixBase_asDiagonal.out
|
|
343
|
+
*
|
|
344
|
+
* \sa class DiagonalWrapper, class DiagonalMatrix, diagonal(), isDiagonal()
|
|
345
|
+
**/
|
|
346
|
+
template <typename Derived>
|
|
347
|
+
EIGEN_DEVICE_FUNC inline const DiagonalWrapper<const Derived> MatrixBase<Derived>::asDiagonal() const {
|
|
279
348
|
return DiagonalWrapper<const Derived>(derived());
|
|
280
349
|
}
|
|
281
350
|
|
|
282
351
|
/** \returns true if *this is approximately equal to a diagonal matrix,
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
template<typename Derived>
|
|
291
|
-
bool MatrixBase<Derived>::isDiagonal(const RealScalar& prec) const
|
|
292
|
-
|
|
293
|
-
if(cols() != rows()) return false;
|
|
352
|
+
* within the precision given by \a prec.
|
|
353
|
+
*
|
|
354
|
+
* Example: \include MatrixBase_isDiagonal.cpp
|
|
355
|
+
* Output: \verbinclude MatrixBase_isDiagonal.out
|
|
356
|
+
*
|
|
357
|
+
* \sa asDiagonal()
|
|
358
|
+
*/
|
|
359
|
+
template <typename Derived>
|
|
360
|
+
bool MatrixBase<Derived>::isDiagonal(const RealScalar& prec) const {
|
|
361
|
+
if (cols() != rows()) return false;
|
|
294
362
|
RealScalar maxAbsOnDiagonal = static_cast<RealScalar>(-1);
|
|
295
|
-
for(Index j = 0; j < cols(); ++j)
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
if(absOnDiagonal > maxAbsOnDiagonal) maxAbsOnDiagonal = absOnDiagonal;
|
|
363
|
+
for (Index j = 0; j < cols(); ++j) {
|
|
364
|
+
RealScalar absOnDiagonal = numext::abs(coeff(j, j));
|
|
365
|
+
if (absOnDiagonal > maxAbsOnDiagonal) maxAbsOnDiagonal = absOnDiagonal;
|
|
299
366
|
}
|
|
300
|
-
for(Index j = 0; j < cols(); ++j)
|
|
301
|
-
for(Index i = 0; i < j; ++i)
|
|
302
|
-
|
|
303
|
-
if(!internal::isMuchSmallerThan(coeff(
|
|
304
|
-
if(!internal::isMuchSmallerThan(coeff(j, i), maxAbsOnDiagonal, prec)) return false;
|
|
367
|
+
for (Index j = 0; j < cols(); ++j)
|
|
368
|
+
for (Index i = 0; i < j; ++i) {
|
|
369
|
+
if (!internal::isMuchSmallerThan(coeff(i, j), maxAbsOnDiagonal, prec)) return false;
|
|
370
|
+
if (!internal::isMuchSmallerThan(coeff(j, i), maxAbsOnDiagonal, prec)) return false;
|
|
305
371
|
}
|
|
306
372
|
return true;
|
|
307
373
|
}
|
|
308
374
|
|
|
309
375
|
namespace internal {
|
|
310
376
|
|
|
311
|
-
template<>
|
|
377
|
+
template <>
|
|
378
|
+
struct storage_kind_to_shape<DiagonalShape> {
|
|
379
|
+
typedef DiagonalShape Shape;
|
|
380
|
+
};
|
|
312
381
|
|
|
313
382
|
struct Diagonal2Dense {};
|
|
314
383
|
|
|
315
|
-
template<>
|
|
384
|
+
template <>
|
|
385
|
+
struct AssignmentKind<DenseShape, DiagonalShape> {
|
|
386
|
+
typedef Diagonal2Dense Kind;
|
|
387
|
+
};
|
|
316
388
|
|
|
317
389
|
// Diagonal matrix to Dense assignment
|
|
318
|
-
template<
|
|
319
|
-
struct Assignment<DstXprType, SrcXprType, Functor, Diagonal2Dense>
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
390
|
+
template <typename DstXprType, typename SrcXprType, typename Functor>
|
|
391
|
+
struct Assignment<DstXprType, SrcXprType, Functor, Diagonal2Dense> {
|
|
392
|
+
static EIGEN_DEVICE_FUNC void run(
|
|
393
|
+
DstXprType& dst, const SrcXprType& src,
|
|
394
|
+
const internal::assign_op<typename DstXprType::Scalar, typename SrcXprType::Scalar>& /*func*/) {
|
|
323
395
|
Index dstRows = src.rows();
|
|
324
396
|
Index dstCols = src.cols();
|
|
325
|
-
if((dst.rows()!=dstRows) || (dst.cols()!=dstCols))
|
|
326
|
-
|
|
327
|
-
|
|
397
|
+
if ((dst.rows() != dstRows) || (dst.cols() != dstCols)) dst.resize(dstRows, dstCols);
|
|
398
|
+
|
|
328
399
|
dst.setZero();
|
|
329
400
|
dst.diagonal() = src.diagonal();
|
|
330
401
|
}
|
|
331
|
-
|
|
332
|
-
static void run(
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
402
|
+
|
|
403
|
+
static EIGEN_DEVICE_FUNC void run(
|
|
404
|
+
DstXprType& dst, const SrcXprType& src,
|
|
405
|
+
const internal::add_assign_op<typename DstXprType::Scalar, typename SrcXprType::Scalar>& /*func*/) {
|
|
406
|
+
dst.diagonal() += src.diagonal();
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
static EIGEN_DEVICE_FUNC void run(
|
|
410
|
+
DstXprType& dst, const SrcXprType& src,
|
|
411
|
+
const internal::sub_assign_op<typename DstXprType::Scalar, typename SrcXprType::Scalar>& /*func*/) {
|
|
412
|
+
dst.diagonal() -= src.diagonal();
|
|
413
|
+
}
|
|
337
414
|
};
|
|
338
415
|
|
|
339
|
-
}
|
|
416
|
+
} // namespace internal
|
|
340
417
|
|
|
341
|
-
}
|
|
418
|
+
} // end namespace Eigen
|
|
342
419
|
|
|
343
|
-
#endif
|
|
420
|
+
#endif // EIGEN_DIAGONALMATRIX_H
|