@smake/eigen 1.0.2 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/eigen/Eigen/AccelerateSupport +52 -0
- package/eigen/Eigen/Cholesky +18 -21
- package/eigen/Eigen/CholmodSupport +28 -28
- package/eigen/Eigen/Core +235 -326
- package/eigen/Eigen/Eigenvalues +16 -14
- package/eigen/Eigen/Geometry +21 -24
- package/eigen/Eigen/Householder +9 -8
- package/eigen/Eigen/IterativeLinearSolvers +8 -4
- package/eigen/Eigen/Jacobi +14 -14
- package/eigen/Eigen/KLUSupport +43 -0
- package/eigen/Eigen/LU +16 -20
- package/eigen/Eigen/MetisSupport +12 -12
- package/eigen/Eigen/OrderingMethods +54 -54
- package/eigen/Eigen/PaStiXSupport +23 -20
- package/eigen/Eigen/PardisoSupport +17 -14
- package/eigen/Eigen/QR +18 -21
- package/eigen/Eigen/QtAlignedMalloc +5 -13
- package/eigen/Eigen/SPQRSupport +21 -14
- package/eigen/Eigen/SVD +23 -18
- package/eigen/Eigen/Sparse +1 -4
- package/eigen/Eigen/SparseCholesky +18 -23
- package/eigen/Eigen/SparseCore +18 -17
- package/eigen/Eigen/SparseLU +12 -8
- package/eigen/Eigen/SparseQR +16 -14
- package/eigen/Eigen/StdDeque +5 -2
- package/eigen/Eigen/StdList +5 -2
- package/eigen/Eigen/StdVector +5 -2
- package/eigen/Eigen/SuperLUSupport +30 -24
- package/eigen/Eigen/ThreadPool +80 -0
- package/eigen/Eigen/UmfPackSupport +19 -17
- package/eigen/Eigen/Version +14 -0
- package/eigen/Eigen/src/AccelerateSupport/AccelerateSupport.h +423 -0
- package/eigen/Eigen/src/AccelerateSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Cholesky/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Cholesky/LDLT.h +377 -401
- package/eigen/Eigen/src/Cholesky/LLT.h +332 -360
- package/eigen/Eigen/src/Cholesky/LLT_LAPACKE.h +81 -56
- package/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +620 -521
- package/eigen/Eigen/src/CholmodSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Core/ArithmeticSequence.h +239 -0
- package/eigen/Eigen/src/Core/Array.h +341 -294
- package/eigen/Eigen/src/Core/ArrayBase.h +190 -203
- package/eigen/Eigen/src/Core/ArrayWrapper.h +127 -171
- package/eigen/Eigen/src/Core/Assign.h +30 -40
- package/eigen/Eigen/src/Core/AssignEvaluator.h +711 -589
- package/eigen/Eigen/src/Core/Assign_MKL.h +130 -125
- package/eigen/Eigen/src/Core/BandMatrix.h +268 -283
- package/eigen/Eigen/src/Core/Block.h +375 -398
- package/eigen/Eigen/src/Core/CommaInitializer.h +86 -97
- package/eigen/Eigen/src/Core/ConditionEstimator.h +51 -53
- package/eigen/Eigen/src/Core/CoreEvaluators.h +1356 -1026
- package/eigen/Eigen/src/Core/CoreIterators.h +73 -59
- package/eigen/Eigen/src/Core/CwiseBinaryOp.h +114 -132
- package/eigen/Eigen/src/Core/CwiseNullaryOp.h +726 -617
- package/eigen/Eigen/src/Core/CwiseTernaryOp.h +77 -103
- package/eigen/Eigen/src/Core/CwiseUnaryOp.h +56 -68
- package/eigen/Eigen/src/Core/CwiseUnaryView.h +132 -95
- package/eigen/Eigen/src/Core/DenseBase.h +632 -571
- package/eigen/Eigen/src/Core/DenseCoeffsBase.h +511 -624
- package/eigen/Eigen/src/Core/DenseStorage.h +512 -509
- package/eigen/Eigen/src/Core/DeviceWrapper.h +153 -0
- package/eigen/Eigen/src/Core/Diagonal.h +169 -210
- package/eigen/Eigen/src/Core/DiagonalMatrix.h +351 -274
- package/eigen/Eigen/src/Core/DiagonalProduct.h +12 -10
- package/eigen/Eigen/src/Core/Dot.h +172 -222
- package/eigen/Eigen/src/Core/EigenBase.h +75 -85
- package/eigen/Eigen/src/Core/Fill.h +138 -0
- package/eigen/Eigen/src/Core/FindCoeff.h +464 -0
- package/eigen/Eigen/src/Core/ForceAlignedAccess.h +90 -109
- package/eigen/Eigen/src/Core/Fuzzy.h +82 -105
- package/eigen/Eigen/src/Core/GeneralProduct.h +327 -263
- package/eigen/Eigen/src/Core/GenericPacketMath.h +1472 -360
- package/eigen/Eigen/src/Core/GlobalFunctions.h +194 -151
- package/eigen/Eigen/src/Core/IO.h +147 -139
- package/eigen/Eigen/src/Core/IndexedView.h +321 -0
- package/eigen/Eigen/src/Core/InnerProduct.h +260 -0
- package/eigen/Eigen/src/Core/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Core/Inverse.h +56 -66
- package/eigen/Eigen/src/Core/Map.h +124 -142
- package/eigen/Eigen/src/Core/MapBase.h +256 -281
- package/eigen/Eigen/src/Core/MathFunctions.h +1620 -938
- package/eigen/Eigen/src/Core/MathFunctionsImpl.h +233 -71
- package/eigen/Eigen/src/Core/Matrix.h +491 -416
- package/eigen/Eigen/src/Core/MatrixBase.h +468 -453
- package/eigen/Eigen/src/Core/NestByValue.h +66 -85
- package/eigen/Eigen/src/Core/NoAlias.h +79 -85
- package/eigen/Eigen/src/Core/NumTraits.h +235 -148
- package/eigen/Eigen/src/Core/PartialReduxEvaluator.h +253 -0
- package/eigen/Eigen/src/Core/PermutationMatrix.h +461 -511
- package/eigen/Eigen/src/Core/PlainObjectBase.h +871 -894
- package/eigen/Eigen/src/Core/Product.h +260 -139
- package/eigen/Eigen/src/Core/ProductEvaluators.h +863 -714
- package/eigen/Eigen/src/Core/Random.h +161 -136
- package/eigen/Eigen/src/Core/RandomImpl.h +262 -0
- package/eigen/Eigen/src/Core/RealView.h +250 -0
- package/eigen/Eigen/src/Core/Redux.h +366 -336
- package/eigen/Eigen/src/Core/Ref.h +308 -209
- package/eigen/Eigen/src/Core/Replicate.h +94 -106
- package/eigen/Eigen/src/Core/Reshaped.h +398 -0
- package/eigen/Eigen/src/Core/ReturnByValue.h +49 -55
- package/eigen/Eigen/src/Core/Reverse.h +136 -145
- package/eigen/Eigen/src/Core/Select.h +70 -140
- package/eigen/Eigen/src/Core/SelfAdjointView.h +262 -285
- package/eigen/Eigen/src/Core/SelfCwiseBinaryOp.h +23 -20
- package/eigen/Eigen/src/Core/SkewSymmetricMatrix3.h +382 -0
- package/eigen/Eigen/src/Core/Solve.h +97 -111
- package/eigen/Eigen/src/Core/SolveTriangular.h +131 -129
- package/eigen/Eigen/src/Core/SolverBase.h +138 -101
- package/eigen/Eigen/src/Core/StableNorm.h +156 -160
- package/eigen/Eigen/src/Core/StlIterators.h +619 -0
- package/eigen/Eigen/src/Core/Stride.h +91 -88
- package/eigen/Eigen/src/Core/Swap.h +70 -38
- package/eigen/Eigen/src/Core/Transpose.h +295 -273
- package/eigen/Eigen/src/Core/Transpositions.h +272 -317
- package/eigen/Eigen/src/Core/TriangularMatrix.h +670 -755
- package/eigen/Eigen/src/Core/VectorBlock.h +59 -72
- package/eigen/Eigen/src/Core/VectorwiseOp.h +668 -630
- package/eigen/Eigen/src/Core/Visitor.h +480 -216
- package/eigen/Eigen/src/Core/arch/AVX/Complex.h +407 -293
- package/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +79 -388
- package/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +2935 -491
- package/eigen/Eigen/src/Core/arch/AVX/Reductions.h +353 -0
- package/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +279 -22
- package/eigen/Eigen/src/Core/arch/AVX512/Complex.h +472 -0
- package/eigen/Eigen/src/Core/arch/AVX512/GemmKernel.h +1245 -0
- package/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +85 -333
- package/eigen/Eigen/src/Core/arch/AVX512/MathFunctionsFP16.h +75 -0
- package/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +2490 -649
- package/eigen/Eigen/src/Core/arch/AVX512/PacketMathFP16.h +1413 -0
- package/eigen/Eigen/src/Core/arch/AVX512/Reductions.h +297 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TrsmKernel.h +1167 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TrsmUnrolls.inc +1219 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TypeCasting.h +277 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TypeCastingFP16.h +130 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +521 -298
- package/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +39 -280
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +3686 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +205 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +901 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMAbfloat16.h +742 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixVectorProduct.inc +2818 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h +3391 -723
- package/eigen/Eigen/src/Core/arch/AltiVec/TypeCasting.h +153 -0
- package/eigen/Eigen/src/Core/arch/Default/BFloat16.h +866 -0
- package/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +113 -14
- package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +2634 -0
- package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +227 -0
- package/eigen/Eigen/src/Core/arch/Default/Half.h +1091 -0
- package/eigen/Eigen/src/Core/arch/Default/Settings.h +11 -13
- package/eigen/Eigen/src/Core/arch/GPU/Complex.h +244 -0
- package/eigen/Eigen/src/Core/arch/GPU/MathFunctions.h +104 -0
- package/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +1712 -0
- package/eigen/Eigen/src/Core/arch/GPU/Tuple.h +268 -0
- package/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +77 -0
- package/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
- package/eigen/Eigen/src/Core/arch/HVX/PacketMath.h +1088 -0
- package/eigen/Eigen/src/Core/arch/LSX/Complex.h +520 -0
- package/eigen/Eigen/src/Core/arch/LSX/GeneralBlockPanelKernel.h +23 -0
- package/eigen/Eigen/src/Core/arch/LSX/MathFunctions.h +43 -0
- package/eigen/Eigen/src/Core/arch/LSX/PacketMath.h +2866 -0
- package/eigen/Eigen/src/Core/arch/LSX/TypeCasting.h +526 -0
- package/eigen/Eigen/src/Core/arch/MSA/Complex.h +620 -0
- package/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +379 -0
- package/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +1237 -0
- package/eigen/Eigen/src/Core/arch/NEON/Complex.h +531 -289
- package/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +243 -0
- package/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +50 -73
- package/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +5915 -579
- package/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +1642 -0
- package/eigen/Eigen/src/Core/arch/NEON/UnaryFunctors.h +57 -0
- package/eigen/Eigen/src/Core/arch/SSE/Complex.h +366 -334
- package/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +40 -514
- package/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +2164 -675
- package/eigen/Eigen/src/Core/arch/SSE/Reductions.h +324 -0
- package/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +188 -35
- package/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +48 -0
- package/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +674 -0
- package/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +52 -0
- package/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +227 -0
- package/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +303 -0
- package/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +576 -0
- package/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +83 -0
- package/eigen/Eigen/src/Core/arch/ZVector/Complex.h +434 -261
- package/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +160 -53
- package/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +1073 -605
- package/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +123 -117
- package/eigen/Eigen/src/Core/functors/BinaryFunctors.h +594 -322
- package/eigen/Eigen/src/Core/functors/NullaryFunctors.h +204 -118
- package/eigen/Eigen/src/Core/functors/StlFunctors.h +110 -97
- package/eigen/Eigen/src/Core/functors/TernaryFunctors.h +34 -7
- package/eigen/Eigen/src/Core/functors/UnaryFunctors.h +1158 -530
- package/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +2329 -1333
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +328 -364
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +191 -178
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +85 -82
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +154 -73
- package/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +396 -542
- package/eigen/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +80 -77
- package/eigen/Eigen/src/Core/products/Parallelizer.h +208 -92
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +331 -375
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +206 -224
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +139 -146
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +58 -61
- package/eigen/Eigen/src/Core/products/SelfadjointProduct.h +71 -71
- package/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h +48 -46
- package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h +294 -369
- package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +246 -238
- package/eigen/Eigen/src/Core/products/TriangularMatrixVector.h +244 -247
- package/eigen/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +212 -192
- package/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h +328 -275
- package/eigen/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +108 -109
- package/eigen/Eigen/src/Core/products/TriangularSolverVector.h +70 -93
- package/eigen/Eigen/src/Core/util/Assert.h +158 -0
- package/eigen/Eigen/src/Core/util/BlasUtil.h +413 -290
- package/eigen/Eigen/src/Core/util/ConfigureVectorization.h +543 -0
- package/eigen/Eigen/src/Core/util/Constants.h +314 -263
- package/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +130 -78
- package/eigen/Eigen/src/Core/util/EmulateArray.h +270 -0
- package/eigen/Eigen/src/Core/util/ForwardDeclarations.h +450 -224
- package/eigen/Eigen/src/Core/util/GpuHipCudaDefines.inc +101 -0
- package/eigen/Eigen/src/Core/util/GpuHipCudaUndefines.inc +45 -0
- package/eigen/Eigen/src/Core/util/IndexedViewHelper.h +487 -0
- package/eigen/Eigen/src/Core/util/IntegralConstant.h +279 -0
- package/eigen/Eigen/src/Core/util/MKL_support.h +39 -30
- package/eigen/Eigen/src/Core/util/Macros.h +939 -646
- package/eigen/Eigen/src/Core/util/MaxSizeVector.h +139 -0
- package/eigen/Eigen/src/Core/util/Memory.h +1042 -650
- package/eigen/Eigen/src/Core/util/Meta.h +618 -426
- package/eigen/Eigen/src/Core/util/MoreMeta.h +638 -0
- package/eigen/Eigen/src/Core/util/ReenableStupidWarnings.h +32 -19
- package/eigen/Eigen/src/Core/util/ReshapedHelper.h +51 -0
- package/eigen/Eigen/src/Core/util/Serializer.h +209 -0
- package/eigen/Eigen/src/Core/util/StaticAssert.h +51 -164
- package/eigen/Eigen/src/Core/util/SymbolicIndex.h +445 -0
- package/eigen/Eigen/src/Core/util/XprHelper.h +793 -538
- package/eigen/Eigen/src/Eigenvalues/ComplexEigenSolver.h +246 -277
- package/eigen/Eigen/src/Eigenvalues/ComplexSchur.h +299 -319
- package/eigen/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +52 -48
- package/eigen/Eigen/src/Eigenvalues/EigenSolver.h +413 -456
- package/eigen/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +309 -325
- package/eigen/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +157 -171
- package/eigen/Eigen/src/Eigenvalues/HessenbergDecomposition.h +292 -310
- package/eigen/Eigen/src/Eigenvalues/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +91 -107
- package/eigen/Eigen/src/Eigenvalues/RealQZ.h +539 -606
- package/eigen/Eigen/src/Eigenvalues/RealSchur.h +348 -382
- package/eigen/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +41 -35
- package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +579 -600
- package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +47 -44
- package/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +434 -461
- package/eigen/Eigen/src/Geometry/AlignedBox.h +307 -214
- package/eigen/Eigen/src/Geometry/AngleAxis.h +135 -137
- package/eigen/Eigen/src/Geometry/EulerAngles.h +163 -74
- package/eigen/Eigen/src/Geometry/Homogeneous.h +289 -333
- package/eigen/Eigen/src/Geometry/Hyperplane.h +152 -161
- package/eigen/Eigen/src/Geometry/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Geometry/OrthoMethods.h +168 -145
- package/eigen/Eigen/src/Geometry/ParametrizedLine.h +141 -104
- package/eigen/Eigen/src/Geometry/Quaternion.h +595 -497
- package/eigen/Eigen/src/Geometry/Rotation2D.h +110 -108
- package/eigen/Eigen/src/Geometry/RotationBase.h +148 -145
- package/eigen/Eigen/src/Geometry/Scaling.h +115 -90
- package/eigen/Eigen/src/Geometry/Transform.h +896 -953
- package/eigen/Eigen/src/Geometry/Translation.h +100 -98
- package/eigen/Eigen/src/Geometry/Umeyama.h +79 -84
- package/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +154 -0
- package/eigen/Eigen/src/Householder/BlockHouseholder.h +54 -42
- package/eigen/Eigen/src/Householder/Householder.h +104 -122
- package/eigen/Eigen/src/Householder/HouseholderSequence.h +416 -382
- package/eigen/Eigen/src/Householder/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +153 -166
- package/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +127 -138
- package/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +95 -124
- package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +269 -267
- package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +246 -259
- package/eigen/Eigen/src/IterativeLinearSolvers/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +218 -217
- package/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +80 -103
- package/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +59 -63
- package/eigen/Eigen/src/Jacobi/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Jacobi/Jacobi.h +256 -291
- package/eigen/Eigen/src/KLUSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/KLUSupport/KLUSupport.h +339 -0
- package/eigen/Eigen/src/LU/Determinant.h +60 -63
- package/eigen/Eigen/src/LU/FullPivLU.h +561 -626
- package/eigen/Eigen/src/LU/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/LU/InverseImpl.h +213 -275
- package/eigen/Eigen/src/LU/PartialPivLU.h +407 -435
- package/eigen/Eigen/src/LU/PartialPivLU_LAPACKE.h +54 -40
- package/eigen/Eigen/src/LU/arch/InverseSize4.h +353 -0
- package/eigen/Eigen/src/MetisSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/MetisSupport/MetisSupport.h +81 -93
- package/eigen/Eigen/src/OrderingMethods/Amd.h +250 -282
- package/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +950 -1103
- package/eigen/Eigen/src/OrderingMethods/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/OrderingMethods/Ordering.h +111 -122
- package/eigen/Eigen/src/PaStiXSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/PaStiXSupport/PaStiXSupport.h +524 -570
- package/eigen/Eigen/src/PardisoSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/PardisoSupport/PardisoSupport.h +385 -429
- package/eigen/Eigen/src/QR/ColPivHouseholderQR.h +494 -473
- package/eigen/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +120 -56
- package/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +223 -137
- package/eigen/Eigen/src/QR/FullPivHouseholderQR.h +517 -460
- package/eigen/Eigen/src/QR/HouseholderQR.h +412 -278
- package/eigen/Eigen/src/QR/HouseholderQR_LAPACKE.h +32 -23
- package/eigen/Eigen/src/QR/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SPQRSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +263 -261
- package/eigen/Eigen/src/SVD/BDCSVD.h +872 -679
- package/eigen/Eigen/src/SVD/BDCSVD_LAPACKE.h +174 -0
- package/eigen/Eigen/src/SVD/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SVD/JacobiSVD.h +585 -543
- package/eigen/Eigen/src/SVD/JacobiSVD_LAPACKE.h +85 -49
- package/eigen/Eigen/src/SVD/SVDBase.h +281 -160
- package/eigen/Eigen/src/SVD/UpperBidiagonalization.h +202 -237
- package/eigen/Eigen/src/SparseCholesky/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +769 -590
- package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +318 -129
- package/eigen/Eigen/src/SparseCore/AmbiVector.h +202 -251
- package/eigen/Eigen/src/SparseCore/CompressedStorage.h +184 -236
- package/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +140 -184
- package/eigen/Eigen/src/SparseCore/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseCore/SparseAssign.h +174 -111
- package/eigen/Eigen/src/SparseCore/SparseBlock.h +408 -477
- package/eigen/Eigen/src/SparseCore/SparseColEtree.h +100 -112
- package/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +531 -280
- package/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +559 -347
- package/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +100 -108
- package/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +185 -191
- package/eigen/Eigen/src/SparseCore/SparseDiagonalProduct.h +71 -71
- package/eigen/Eigen/src/SparseCore/SparseDot.h +49 -47
- package/eigen/Eigen/src/SparseCore/SparseFuzzy.h +13 -11
- package/eigen/Eigen/src/SparseCore/SparseMap.h +243 -253
- package/eigen/Eigen/src/SparseCore/SparseMatrix.h +1614 -1142
- package/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +403 -357
- package/eigen/Eigen/src/SparseCore/SparsePermutation.h +186 -115
- package/eigen/Eigen/src/SparseCore/SparseProduct.h +100 -91
- package/eigen/Eigen/src/SparseCore/SparseRedux.h +22 -24
- package/eigen/Eigen/src/SparseCore/SparseRef.h +268 -295
- package/eigen/Eigen/src/SparseCore/SparseSelfAdjointView.h +371 -414
- package/eigen/Eigen/src/SparseCore/SparseSolverBase.h +78 -87
- package/eigen/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +81 -95
- package/eigen/Eigen/src/SparseCore/SparseTranspose.h +62 -71
- package/eigen/Eigen/src/SparseCore/SparseTriangularView.h +132 -144
- package/eigen/Eigen/src/SparseCore/SparseUtil.h +146 -115
- package/eigen/Eigen/src/SparseCore/SparseVector.h +426 -372
- package/eigen/Eigen/src/SparseCore/SparseView.h +164 -193
- package/eigen/Eigen/src/SparseCore/TriangularSolver.h +129 -170
- package/eigen/Eigen/src/SparseLU/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseLU/SparseLU.h +814 -618
- package/eigen/Eigen/src/SparseLU/SparseLUImpl.h +61 -48
- package/eigen/Eigen/src/SparseLU/SparseLU_Memory.h +102 -118
- package/eigen/Eigen/src/SparseLU/SparseLU_Structs.h +38 -35
- package/eigen/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +273 -255
- package/eigen/Eigen/src/SparseLU/SparseLU_Utils.h +44 -49
- package/eigen/Eigen/src/SparseLU/SparseLU_column_bmod.h +104 -108
- package/eigen/Eigen/src/SparseLU/SparseLU_column_dfs.h +90 -101
- package/eigen/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +57 -58
- package/eigen/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +43 -55
- package/eigen/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +74 -71
- package/eigen/Eigen/src/SparseLU/SparseLU_panel_bmod.h +125 -133
- package/eigen/Eigen/src/SparseLU/SparseLU_panel_dfs.h +136 -159
- package/eigen/Eigen/src/SparseLU/SparseLU_pivotL.h +51 -52
- package/eigen/Eigen/src/SparseLU/SparseLU_pruneL.h +67 -73
- package/eigen/Eigen/src/SparseLU/SparseLU_relax_snode.h +24 -26
- package/eigen/Eigen/src/SparseQR/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseQR/SparseQR.h +451 -490
- package/eigen/Eigen/src/StlSupport/StdDeque.h +28 -105
- package/eigen/Eigen/src/StlSupport/StdList.h +28 -84
- package/eigen/Eigen/src/StlSupport/StdVector.h +28 -108
- package/eigen/Eigen/src/StlSupport/details.h +48 -50
- package/eigen/Eigen/src/SuperLUSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SuperLUSupport/SuperLUSupport.h +634 -732
- package/eigen/Eigen/src/ThreadPool/Barrier.h +70 -0
- package/eigen/Eigen/src/ThreadPool/CoreThreadPoolDevice.h +336 -0
- package/eigen/Eigen/src/ThreadPool/EventCount.h +241 -0
- package/eigen/Eigen/src/ThreadPool/ForkJoin.h +140 -0
- package/eigen/Eigen/src/ThreadPool/InternalHeaderCheck.h +4 -0
- package/eigen/Eigen/src/ThreadPool/NonBlockingThreadPool.h +587 -0
- package/eigen/Eigen/src/ThreadPool/RunQueue.h +230 -0
- package/eigen/Eigen/src/ThreadPool/ThreadCancel.h +21 -0
- package/eigen/Eigen/src/ThreadPool/ThreadEnvironment.h +43 -0
- package/eigen/Eigen/src/ThreadPool/ThreadLocal.h +289 -0
- package/eigen/Eigen/src/ThreadPool/ThreadPoolInterface.h +50 -0
- package/eigen/Eigen/src/ThreadPool/ThreadYield.h +16 -0
- package/eigen/Eigen/src/UmfPackSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/UmfPackSupport/UmfPackSupport.h +480 -380
- package/eigen/Eigen/src/misc/Image.h +41 -43
- package/eigen/Eigen/src/misc/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/misc/Kernel.h +39 -41
- package/eigen/Eigen/src/misc/RealSvd2x2.h +19 -21
- package/eigen/Eigen/src/misc/blas.h +83 -426
- package/eigen/Eigen/src/misc/lapacke.h +9976 -16182
- package/eigen/Eigen/src/misc/lapacke_helpers.h +163 -0
- package/eigen/Eigen/src/misc/lapacke_mangling.h +4 -5
- package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.inc +344 -0
- package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.inc +544 -0
- package/eigen/Eigen/src/plugins/BlockMethods.inc +1370 -0
- package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.inc +116 -0
- package/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.inc +167 -0
- package/eigen/Eigen/src/plugins/IndexedViewMethods.inc +192 -0
- package/eigen/Eigen/src/plugins/InternalHeaderCheck.inc +3 -0
- package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.inc +331 -0
- package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.inc +118 -0
- package/eigen/Eigen/src/plugins/ReshapedMethods.inc +133 -0
- package/lib/LibEigen.d.ts +4 -0
- package/lib/LibEigen.js +14 -0
- package/lib/index.d.ts +1 -1
- package/lib/index.js +7 -3
- package/package.json +2 -10
- package/eigen/Eigen/CMakeLists.txt +0 -19
- package/eigen/Eigen/src/Core/BooleanRedux.h +0 -164
- package/eigen/Eigen/src/Core/arch/CUDA/Complex.h +0 -103
- package/eigen/Eigen/src/Core/arch/CUDA/Half.h +0 -675
- package/eigen/Eigen/src/Core/arch/CUDA/MathFunctions.h +0 -91
- package/eigen/Eigen/src/Core/arch/CUDA/PacketMath.h +0 -333
- package/eigen/Eigen/src/Core/arch/CUDA/PacketMathHalf.h +0 -1124
- package/eigen/Eigen/src/Core/arch/CUDA/TypeCasting.h +0 -212
- package/eigen/Eigen/src/Core/util/NonMPL2.h +0 -3
- package/eigen/Eigen/src/Geometry/arch/Geometry_SSE.h +0 -161
- package/eigen/Eigen/src/LU/arch/Inverse_SSE.h +0 -338
- package/eigen/Eigen/src/SparseCore/MappedSparseMatrix.h +0 -67
- package/eigen/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +0 -280
- package/eigen/Eigen/src/misc/lapack.h +0 -152
- package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h +0 -332
- package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +0 -552
- package/eigen/Eigen/src/plugins/BlockMethods.h +0 -1058
- package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.h +0 -115
- package/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.h +0 -163
- package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +0 -152
- package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +0 -85
- package/lib/eigen.d.ts +0 -2
- package/lib/eigen.js +0 -15
|
@@ -10,142 +10,132 @@
|
|
|
10
10
|
#ifndef EIGEN_AMBIVECTOR_H
|
|
11
11
|
#define EIGEN_AMBIVECTOR_H
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
// IWYU pragma: private
|
|
14
|
+
#include "./InternalHeaderCheck.h"
|
|
15
|
+
|
|
16
|
+
namespace Eigen {
|
|
14
17
|
|
|
15
18
|
namespace internal {
|
|
16
19
|
|
|
17
20
|
/** \internal
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
template<typename
|
|
23
|
-
class AmbiVector
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
resize(size);
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
void init(double estimatedDensity);
|
|
37
|
-
void init(int mode);
|
|
38
|
-
|
|
39
|
-
Index nonZeros() const;
|
|
21
|
+
* Hybrid sparse/dense vector class designed for intensive read-write operations.
|
|
22
|
+
*
|
|
23
|
+
* See BasicSparseLLT and SparseProduct for usage examples.
|
|
24
|
+
*/
|
|
25
|
+
template <typename Scalar_, typename StorageIndex_>
|
|
26
|
+
class AmbiVector {
|
|
27
|
+
public:
|
|
28
|
+
typedef Scalar_ Scalar;
|
|
29
|
+
typedef StorageIndex_ StorageIndex;
|
|
30
|
+
typedef typename NumTraits<Scalar>::Real RealScalar;
|
|
31
|
+
|
|
32
|
+
explicit AmbiVector(Index size)
|
|
33
|
+
: m_buffer(0), m_zero(0), m_size(0), m_end(0), m_allocatedSize(0), m_allocatedElements(0), m_mode(-1) {
|
|
34
|
+
resize(size);
|
|
35
|
+
}
|
|
40
36
|
|
|
41
|
-
|
|
42
|
-
|
|
37
|
+
void init(double estimatedDensity);
|
|
38
|
+
void init(int mode);
|
|
43
39
|
|
|
44
|
-
|
|
40
|
+
Index nonZeros() const;
|
|
45
41
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
42
|
+
/** Specifies a sub-vector to work on */
|
|
43
|
+
void setBounds(Index start, Index end) {
|
|
44
|
+
m_start = convert_index(start);
|
|
45
|
+
m_end = convert_index(end);
|
|
46
|
+
}
|
|
49
47
|
|
|
50
|
-
|
|
48
|
+
void setZero();
|
|
51
49
|
|
|
52
|
-
|
|
50
|
+
void restart();
|
|
51
|
+
Scalar& coeffRef(Index i);
|
|
52
|
+
Scalar& coeff(Index i);
|
|
53
53
|
|
|
54
|
-
|
|
55
|
-
{
|
|
56
|
-
if (m_allocatedSize < size)
|
|
57
|
-
reallocate(size);
|
|
58
|
-
m_size = convert_index(size);
|
|
59
|
-
}
|
|
54
|
+
class Iterator;
|
|
60
55
|
|
|
61
|
-
|
|
56
|
+
~AmbiVector() { delete[] m_buffer; }
|
|
62
57
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
}
|
|
58
|
+
void resize(Index size) {
|
|
59
|
+
if (m_allocatedSize < size) reallocate(size);
|
|
60
|
+
m_size = convert_index(size);
|
|
61
|
+
}
|
|
68
62
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
m_size = convert_index(size);
|
|
86
|
-
m_start = 0;
|
|
87
|
-
m_end = m_size;
|
|
63
|
+
StorageIndex size() const { return m_size; }
|
|
64
|
+
|
|
65
|
+
protected:
|
|
66
|
+
StorageIndex convert_index(Index idx) { return internal::convert_index<StorageIndex>(idx); }
|
|
67
|
+
|
|
68
|
+
void reallocate(Index size) {
|
|
69
|
+
// if the size of the matrix is not too large, let's allocate a bit more than needed such
|
|
70
|
+
// that we can handle dense vector even in sparse mode.
|
|
71
|
+
delete[] m_buffer;
|
|
72
|
+
if (size < 1000) {
|
|
73
|
+
Index allocSize = (size * sizeof(ListEl) + sizeof(Scalar) - 1) / sizeof(Scalar);
|
|
74
|
+
m_allocatedElements = convert_index((allocSize * sizeof(Scalar)) / sizeof(ListEl));
|
|
75
|
+
m_buffer = new Scalar[allocSize];
|
|
76
|
+
} else {
|
|
77
|
+
m_allocatedElements = convert_index((size * sizeof(Scalar)) / sizeof(ListEl));
|
|
78
|
+
m_buffer = new Scalar[size];
|
|
88
79
|
}
|
|
80
|
+
m_size = convert_index(size);
|
|
81
|
+
m_start = 0;
|
|
82
|
+
m_end = m_size;
|
|
83
|
+
}
|
|
89
84
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
}
|
|
85
|
+
void reallocateSparse() {
|
|
86
|
+
Index copyElements = m_allocatedElements;
|
|
87
|
+
m_allocatedElements = (std::min)(StorageIndex(m_allocatedElements * 1.5), m_size);
|
|
88
|
+
Index allocSize = m_allocatedElements * sizeof(ListEl);
|
|
89
|
+
allocSize = (allocSize + sizeof(Scalar) - 1) / sizeof(Scalar);
|
|
90
|
+
Scalar* newBuffer = new Scalar[allocSize];
|
|
91
|
+
std::memcpy(newBuffer, m_buffer, copyElements * sizeof(ListEl));
|
|
92
|
+
delete[] m_buffer;
|
|
93
|
+
m_buffer = newBuffer;
|
|
94
|
+
}
|
|
101
95
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
StorageIndex m_llSize;
|
|
96
|
+
protected:
|
|
97
|
+
// element type of the linked list
|
|
98
|
+
struct ListEl {
|
|
99
|
+
StorageIndex next;
|
|
100
|
+
StorageIndex index;
|
|
101
|
+
Scalar value;
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
// used to store data in both mode
|
|
105
|
+
Scalar* m_buffer;
|
|
106
|
+
Scalar m_zero;
|
|
107
|
+
StorageIndex m_size;
|
|
108
|
+
StorageIndex m_start;
|
|
109
|
+
StorageIndex m_end;
|
|
110
|
+
StorageIndex m_allocatedSize;
|
|
111
|
+
StorageIndex m_allocatedElements;
|
|
112
|
+
StorageIndex m_mode;
|
|
113
|
+
|
|
114
|
+
// linked list mode
|
|
115
|
+
StorageIndex m_llStart;
|
|
116
|
+
StorageIndex m_llCurrent;
|
|
117
|
+
StorageIndex m_llSize;
|
|
125
118
|
};
|
|
126
119
|
|
|
127
120
|
/** \returns the number of non zeros in the current sub vector */
|
|
128
|
-
template<typename
|
|
129
|
-
Index AmbiVector<
|
|
130
|
-
|
|
131
|
-
if (m_mode==IsSparse)
|
|
121
|
+
template <typename Scalar_, typename StorageIndex_>
|
|
122
|
+
Index AmbiVector<Scalar_, StorageIndex_>::nonZeros() const {
|
|
123
|
+
if (m_mode == IsSparse)
|
|
132
124
|
return m_llSize;
|
|
133
125
|
else
|
|
134
126
|
return m_end - m_start;
|
|
135
127
|
}
|
|
136
128
|
|
|
137
|
-
template<typename
|
|
138
|
-
void AmbiVector<
|
|
139
|
-
|
|
140
|
-
if (estimatedDensity>0.1)
|
|
129
|
+
template <typename Scalar_, typename StorageIndex_>
|
|
130
|
+
void AmbiVector<Scalar_, StorageIndex_>::init(double estimatedDensity) {
|
|
131
|
+
if (estimatedDensity > 0.1)
|
|
141
132
|
init(IsDense);
|
|
142
133
|
else
|
|
143
134
|
init(IsSparse);
|
|
144
135
|
}
|
|
145
136
|
|
|
146
|
-
template<typename
|
|
147
|
-
void AmbiVector<
|
|
148
|
-
{
|
|
137
|
+
template <typename Scalar_, typename StorageIndex_>
|
|
138
|
+
void AmbiVector<Scalar_, StorageIndex_>::init(int mode) {
|
|
149
139
|
m_mode = mode;
|
|
150
140
|
// This is only necessary in sparse mode, but we set these unconditionally to avoid some maybe-uninitialized warnings
|
|
151
141
|
// if (m_mode==IsSparse)
|
|
@@ -156,45 +146,36 @@ void AmbiVector<_Scalar,_StorageIndex>::init(int mode)
|
|
|
156
146
|
}
|
|
157
147
|
|
|
158
148
|
/** Must be called whenever we might perform a write access
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
template<typename
|
|
164
|
-
void AmbiVector<
|
|
165
|
-
{
|
|
149
|
+
* with an index smaller than the previous one.
|
|
150
|
+
*
|
|
151
|
+
* Don't worry, this function is extremely cheap.
|
|
152
|
+
*/
|
|
153
|
+
template <typename Scalar_, typename StorageIndex_>
|
|
154
|
+
void AmbiVector<Scalar_, StorageIndex_>::restart() {
|
|
166
155
|
m_llCurrent = m_llStart;
|
|
167
156
|
}
|
|
168
157
|
|
|
169
158
|
/** Set all coefficients of current subvector to zero */
|
|
170
|
-
template<typename
|
|
171
|
-
void AmbiVector<
|
|
172
|
-
{
|
|
173
|
-
|
|
174
|
-
{
|
|
175
|
-
|
|
176
|
-
m_buffer[i] = Scalar(0);
|
|
177
|
-
}
|
|
178
|
-
else
|
|
179
|
-
{
|
|
180
|
-
eigen_assert(m_mode==IsSparse);
|
|
159
|
+
template <typename Scalar_, typename StorageIndex_>
|
|
160
|
+
void AmbiVector<Scalar_, StorageIndex_>::setZero() {
|
|
161
|
+
if (m_mode == IsDense) {
|
|
162
|
+
for (Index i = m_start; i < m_end; ++i) m_buffer[i] = Scalar(0);
|
|
163
|
+
} else {
|
|
164
|
+
eigen_assert(m_mode == IsSparse);
|
|
181
165
|
m_llSize = 0;
|
|
182
166
|
m_llStart = -1;
|
|
183
167
|
}
|
|
184
168
|
}
|
|
185
169
|
|
|
186
|
-
template<typename
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
if (m_mode==IsDense)
|
|
170
|
+
template <typename Scalar_, typename StorageIndex_>
|
|
171
|
+
Scalar_& AmbiVector<Scalar_, StorageIndex_>::coeffRef(Index i) {
|
|
172
|
+
if (m_mode == IsDense)
|
|
190
173
|
return m_buffer[i];
|
|
191
|
-
else
|
|
192
|
-
{
|
|
174
|
+
else {
|
|
193
175
|
ListEl* EIGEN_RESTRICT llElements = reinterpret_cast<ListEl*>(m_buffer);
|
|
194
176
|
// TODO factorize the following code to reduce code generation
|
|
195
|
-
eigen_assert(m_mode==IsSparse);
|
|
196
|
-
if (m_llSize==0)
|
|
197
|
-
{
|
|
177
|
+
eigen_assert(m_mode == IsSparse);
|
|
178
|
+
if (m_llSize == 0) {
|
|
198
179
|
// this is the first element
|
|
199
180
|
m_llStart = 0;
|
|
200
181
|
m_llCurrent = 0;
|
|
@@ -203,9 +184,7 @@ _Scalar& AmbiVector<_Scalar,_StorageIndex>::coeffRef(Index i)
|
|
|
203
184
|
llElements[0].index = convert_index(i);
|
|
204
185
|
llElements[0].next = -1;
|
|
205
186
|
return llElements[0].value;
|
|
206
|
-
}
|
|
207
|
-
else if (i<llElements[m_llStart].index)
|
|
208
|
-
{
|
|
187
|
+
} else if (i < llElements[m_llStart].index) {
|
|
209
188
|
// this is going to be the new first element of the list
|
|
210
189
|
ListEl& el = llElements[m_llSize];
|
|
211
190
|
el.value = Scalar(0);
|
|
@@ -215,30 +194,24 @@ _Scalar& AmbiVector<_Scalar,_StorageIndex>::coeffRef(Index i)
|
|
|
215
194
|
++m_llSize;
|
|
216
195
|
m_llCurrent = m_llStart;
|
|
217
196
|
return el.value;
|
|
218
|
-
}
|
|
219
|
-
else
|
|
220
|
-
{
|
|
197
|
+
} else {
|
|
221
198
|
StorageIndex nextel = llElements[m_llCurrent].next;
|
|
222
|
-
eigen_assert(i>=llElements[m_llCurrent].index &&
|
|
223
|
-
|
|
224
|
-
{
|
|
199
|
+
eigen_assert(i >= llElements[m_llCurrent].index &&
|
|
200
|
+
"you must call restart() before inserting an element with lower or equal index");
|
|
201
|
+
while (nextel >= 0 && llElements[nextel].index <= i) {
|
|
225
202
|
m_llCurrent = nextel;
|
|
226
203
|
nextel = llElements[nextel].next;
|
|
227
204
|
}
|
|
228
205
|
|
|
229
|
-
if (llElements[m_llCurrent].index==i)
|
|
230
|
-
{
|
|
206
|
+
if (llElements[m_llCurrent].index == i) {
|
|
231
207
|
// the coefficient already exists and we found it !
|
|
232
208
|
return llElements[m_llCurrent].value;
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
{
|
|
236
|
-
if (m_llSize>=m_allocatedElements)
|
|
237
|
-
{
|
|
209
|
+
} else {
|
|
210
|
+
if (m_llSize >= m_allocatedElements) {
|
|
238
211
|
reallocateSparse();
|
|
239
212
|
llElements = reinterpret_cast<ListEl*>(m_buffer);
|
|
240
213
|
}
|
|
241
|
-
eigen_internal_assert(m_llSize<m_allocatedElements && "internal error: overflow in sparse mode");
|
|
214
|
+
eigen_internal_assert(m_llSize < m_allocatedElements && "internal error: overflow in sparse mode");
|
|
242
215
|
// let's insert a new coefficient
|
|
243
216
|
ListEl& el = llElements[m_llSize];
|
|
244
217
|
el.value = Scalar(0);
|
|
@@ -252,26 +225,20 @@ _Scalar& AmbiVector<_Scalar,_StorageIndex>::coeffRef(Index i)
|
|
|
252
225
|
}
|
|
253
226
|
}
|
|
254
227
|
|
|
255
|
-
template<typename
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
if (m_mode==IsDense)
|
|
228
|
+
template <typename Scalar_, typename StorageIndex_>
|
|
229
|
+
Scalar_& AmbiVector<Scalar_, StorageIndex_>::coeff(Index i) {
|
|
230
|
+
if (m_mode == IsDense)
|
|
259
231
|
return m_buffer[i];
|
|
260
|
-
else
|
|
261
|
-
{
|
|
232
|
+
else {
|
|
262
233
|
ListEl* EIGEN_RESTRICT llElements = reinterpret_cast<ListEl*>(m_buffer);
|
|
263
|
-
eigen_assert(m_mode==IsSparse);
|
|
264
|
-
if ((m_llSize==0) || (i<llElements[m_llStart].index))
|
|
265
|
-
{
|
|
234
|
+
eigen_assert(m_mode == IsSparse);
|
|
235
|
+
if ((m_llSize == 0) || (i < llElements[m_llStart].index)) {
|
|
266
236
|
return m_zero;
|
|
267
|
-
}
|
|
268
|
-
else
|
|
269
|
-
{
|
|
237
|
+
} else {
|
|
270
238
|
Index elid = m_llStart;
|
|
271
|
-
while (elid >= 0 && llElements[elid].index<i)
|
|
272
|
-
elid = llElements[elid].next;
|
|
239
|
+
while (elid >= 0 && llElements[elid].index < i) elid = llElements[elid].next;
|
|
273
240
|
|
|
274
|
-
if (llElements[elid].index==i)
|
|
241
|
+
if (llElements[elid].index == i)
|
|
275
242
|
return llElements[m_llCurrent].value;
|
|
276
243
|
else
|
|
277
244
|
return m_zero;
|
|
@@ -280,99 +247,83 @@ _Scalar& AmbiVector<_Scalar,_StorageIndex>::coeff(Index i)
|
|
|
280
247
|
}
|
|
281
248
|
|
|
282
249
|
/** Iterator over the nonzero coefficients */
|
|
283
|
-
template<typename
|
|
284
|
-
class AmbiVector<
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
if (m_currentEl<0)
|
|
316
|
-
{
|
|
317
|
-
m_cachedValue = 0; // this is to avoid a compilation warning
|
|
318
|
-
m_cachedIndex = -1;
|
|
319
|
-
}
|
|
320
|
-
else
|
|
321
|
-
{
|
|
322
|
-
m_cachedIndex = llElements[m_currentEl].index;
|
|
323
|
-
m_cachedValue = llElements[m_currentEl].value;
|
|
324
|
-
}
|
|
250
|
+
template <typename Scalar_, typename StorageIndex_>
|
|
251
|
+
class AmbiVector<Scalar_, StorageIndex_>::Iterator {
|
|
252
|
+
public:
|
|
253
|
+
typedef Scalar_ Scalar;
|
|
254
|
+
typedef typename NumTraits<Scalar>::Real RealScalar;
|
|
255
|
+
|
|
256
|
+
/** Default constructor
|
|
257
|
+
* \param vec the vector on which we iterate
|
|
258
|
+
* \param epsilon the minimal value used to prune zero coefficients.
|
|
259
|
+
* In practice, all coefficients having a magnitude smaller than \a epsilon
|
|
260
|
+
* are skipped.
|
|
261
|
+
*/
|
|
262
|
+
explicit Iterator(const AmbiVector& vec, const RealScalar& epsilon = 0) : m_vector(vec) {
|
|
263
|
+
using std::abs;
|
|
264
|
+
m_epsilon = epsilon;
|
|
265
|
+
m_isDense = m_vector.m_mode == IsDense;
|
|
266
|
+
if (m_isDense) {
|
|
267
|
+
m_currentEl = 0; // this is to avoid a compilation warning
|
|
268
|
+
m_cachedValue = 0; // this is to avoid a compilation warning
|
|
269
|
+
m_cachedIndex = m_vector.m_start - 1;
|
|
270
|
+
++(*this);
|
|
271
|
+
} else {
|
|
272
|
+
ListEl* EIGEN_RESTRICT llElements = reinterpret_cast<ListEl*>(m_vector.m_buffer);
|
|
273
|
+
m_currentEl = m_vector.m_llStart;
|
|
274
|
+
while (m_currentEl >= 0 && abs(llElements[m_currentEl].value) <= m_epsilon)
|
|
275
|
+
m_currentEl = llElements[m_currentEl].next;
|
|
276
|
+
if (m_currentEl < 0) {
|
|
277
|
+
m_cachedValue = 0; // this is to avoid a compilation warning
|
|
278
|
+
m_cachedIndex = -1;
|
|
279
|
+
} else {
|
|
280
|
+
m_cachedIndex = llElements[m_currentEl].index;
|
|
281
|
+
m_cachedValue = llElements[m_currentEl].value;
|
|
325
282
|
}
|
|
326
283
|
}
|
|
284
|
+
}
|
|
327
285
|
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
if (m_cachedIndex<m_vector.m_end)
|
|
342
|
-
m_cachedValue = m_vector.m_buffer[m_cachedIndex];
|
|
343
|
-
else
|
|
344
|
-
m_cachedIndex=-1;
|
|
345
|
-
}
|
|
286
|
+
StorageIndex index() const { return m_cachedIndex; }
|
|
287
|
+
Scalar value() const { return m_cachedValue; }
|
|
288
|
+
|
|
289
|
+
operator bool() const { return m_cachedIndex >= 0; }
|
|
290
|
+
|
|
291
|
+
Iterator& operator++() {
|
|
292
|
+
using std::abs;
|
|
293
|
+
if (m_isDense) {
|
|
294
|
+
do {
|
|
295
|
+
++m_cachedIndex;
|
|
296
|
+
} while (m_cachedIndex < m_vector.m_end && abs(m_vector.m_buffer[m_cachedIndex]) <= m_epsilon);
|
|
297
|
+
if (m_cachedIndex < m_vector.m_end)
|
|
298
|
+
m_cachedValue = m_vector.m_buffer[m_cachedIndex];
|
|
346
299
|
else
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
m_cachedIndex = llElements[m_currentEl].index;
|
|
359
|
-
m_cachedValue = llElements[m_currentEl].value;
|
|
360
|
-
}
|
|
300
|
+
m_cachedIndex = -1;
|
|
301
|
+
} else {
|
|
302
|
+
ListEl* EIGEN_RESTRICT llElements = reinterpret_cast<ListEl*>(m_vector.m_buffer);
|
|
303
|
+
do {
|
|
304
|
+
m_currentEl = llElements[m_currentEl].next;
|
|
305
|
+
} while (m_currentEl >= 0 && abs(llElements[m_currentEl].value) <= m_epsilon);
|
|
306
|
+
if (m_currentEl < 0) {
|
|
307
|
+
m_cachedIndex = -1;
|
|
308
|
+
} else {
|
|
309
|
+
m_cachedIndex = llElements[m_currentEl].index;
|
|
310
|
+
m_cachedValue = llElements[m_currentEl].value;
|
|
361
311
|
}
|
|
362
|
-
return *this;
|
|
363
312
|
}
|
|
313
|
+
return *this;
|
|
314
|
+
}
|
|
364
315
|
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
316
|
+
protected:
|
|
317
|
+
const AmbiVector& m_vector; // the target vector
|
|
318
|
+
StorageIndex m_currentEl; // the current element in sparse/linked-list mode
|
|
319
|
+
RealScalar m_epsilon; // epsilon used to prune zero coefficients
|
|
320
|
+
StorageIndex m_cachedIndex; // current coordinate
|
|
321
|
+
Scalar m_cachedValue; // current value
|
|
322
|
+
bool m_isDense; // mode of the vector
|
|
372
323
|
};
|
|
373
324
|
|
|
374
|
-
}
|
|
325
|
+
} // end namespace internal
|
|
375
326
|
|
|
376
|
-
}
|
|
327
|
+
} // end namespace Eigen
|
|
377
328
|
|
|
378
|
-
#endif
|
|
329
|
+
#endif // EIGEN_AMBIVECTOR_H
|