@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,173 +10,198 @@
|
|
|
10
10
|
#ifndef EIGEN_RANDOM_H
|
|
11
11
|
#define EIGEN_RANDOM_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
|
-
template<typename Scalar>
|
|
18
|
-
|
|
19
|
-
inline const Scalar operator()
|
|
20
|
+
template <typename Scalar>
|
|
21
|
+
struct scalar_random_op {
|
|
22
|
+
inline const Scalar operator()() const { return random<Scalar>(); }
|
|
20
23
|
};
|
|
21
24
|
|
|
22
|
-
template<typename Scalar>
|
|
23
|
-
struct functor_traits<scalar_random_op<Scalar> >
|
|
24
|
-
|
|
25
|
+
template <typename Scalar>
|
|
26
|
+
struct functor_traits<scalar_random_op<Scalar> > {
|
|
27
|
+
enum { Cost = 5 * NumTraits<Scalar>::MulCost, PacketAccess = false, IsRepeatable = false };
|
|
28
|
+
};
|
|
25
29
|
|
|
26
|
-
}
|
|
30
|
+
} // end namespace internal
|
|
27
31
|
|
|
28
32
|
/** \returns a random matrix expression
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
template<typename Derived>
|
|
55
|
-
inline const typename DenseBase<Derived>::RandomReturnType
|
|
56
|
-
DenseBase<Derived>::Random(Index rows, Index cols)
|
|
57
|
-
{
|
|
33
|
+
*
|
|
34
|
+
* Numbers are uniformly spread through their whole definition range for integer types,
|
|
35
|
+
* and in the [-1:1] range for floating point scalar types.
|
|
36
|
+
*
|
|
37
|
+
* The parameters \a rows and \a cols are the number of rows and of columns of
|
|
38
|
+
* the returned matrix. Must be compatible with this MatrixBase type.
|
|
39
|
+
*
|
|
40
|
+
* \not_reentrant
|
|
41
|
+
*
|
|
42
|
+
* This variant is meant to be used for dynamic-size matrix types. For fixed-size types,
|
|
43
|
+
* it is redundant to pass \a rows and \a cols as arguments, so Random() should be used
|
|
44
|
+
* instead.
|
|
45
|
+
*
|
|
46
|
+
*
|
|
47
|
+
* Example: \include MatrixBase_random_int_int.cpp
|
|
48
|
+
* Output: \verbinclude MatrixBase_random_int_int.out
|
|
49
|
+
*
|
|
50
|
+
* This expression has the "evaluate before nesting" flag so that it will be evaluated into
|
|
51
|
+
* a temporary matrix whenever it is nested in a larger expression. This prevents unexpected
|
|
52
|
+
* behavior with expressions involving random matrices.
|
|
53
|
+
*
|
|
54
|
+
* See DenseBase::NullaryExpr(Index, const CustomNullaryOp&) for an example using C++11 random generators.
|
|
55
|
+
*
|
|
56
|
+
* \sa DenseBase::setRandom(), DenseBase::Random(Index), DenseBase::Random()
|
|
57
|
+
*/
|
|
58
|
+
template <typename Derived>
|
|
59
|
+
inline const typename DenseBase<Derived>::RandomReturnType DenseBase<Derived>::Random(Index rows, Index cols) {
|
|
58
60
|
return NullaryExpr(rows, cols, internal::scalar_random_op<Scalar>());
|
|
59
61
|
}
|
|
60
62
|
|
|
61
63
|
/** \returns a random vector expression
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
template<typename Derived>
|
|
86
|
-
inline const typename DenseBase<Derived>::RandomReturnType
|
|
87
|
-
DenseBase<Derived>::Random(Index size)
|
|
88
|
-
{
|
|
64
|
+
*
|
|
65
|
+
* Numbers are uniformly spread through their whole definition range for integer types,
|
|
66
|
+
* and in the [-1:1] range for floating point scalar types.
|
|
67
|
+
*
|
|
68
|
+
* The parameter \a size is the size of the returned vector.
|
|
69
|
+
* Must be compatible with this MatrixBase type.
|
|
70
|
+
*
|
|
71
|
+
* \only_for_vectors
|
|
72
|
+
* \not_reentrant
|
|
73
|
+
*
|
|
74
|
+
* This variant is meant to be used for dynamic-size vector types. For fixed-size types,
|
|
75
|
+
* it is redundant to pass \a size as argument, so Random() should be used
|
|
76
|
+
* instead.
|
|
77
|
+
*
|
|
78
|
+
* Example: \include MatrixBase_random_int.cpp
|
|
79
|
+
* Output: \verbinclude MatrixBase_random_int.out
|
|
80
|
+
*
|
|
81
|
+
* This expression has the "evaluate before nesting" flag so that it will be evaluated into
|
|
82
|
+
* a temporary vector whenever it is nested in a larger expression. This prevents unexpected
|
|
83
|
+
* behavior with expressions involving random matrices.
|
|
84
|
+
*
|
|
85
|
+
* \sa DenseBase::setRandom(), DenseBase::Random(Index,Index), DenseBase::Random()
|
|
86
|
+
*/
|
|
87
|
+
template <typename Derived>
|
|
88
|
+
inline const typename DenseBase<Derived>::RandomReturnType DenseBase<Derived>::Random(Index size) {
|
|
89
89
|
return NullaryExpr(size, internal::scalar_random_op<Scalar>());
|
|
90
90
|
}
|
|
91
91
|
|
|
92
92
|
/** \returns a fixed-size random matrix or vector expression
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
template<typename Derived>
|
|
112
|
-
inline const typename DenseBase<Derived>::RandomReturnType
|
|
113
|
-
DenseBase<Derived>::Random()
|
|
114
|
-
{
|
|
93
|
+
*
|
|
94
|
+
* Numbers are uniformly spread through their whole definition range for integer types,
|
|
95
|
+
* and in the [-1:1] range for floating point scalar types.
|
|
96
|
+
*
|
|
97
|
+
* This variant is only for fixed-size MatrixBase types. For dynamic-size types, you
|
|
98
|
+
* need to use the variants taking size arguments.
|
|
99
|
+
*
|
|
100
|
+
* Example: \include MatrixBase_random.cpp
|
|
101
|
+
* Output: \verbinclude MatrixBase_random.out
|
|
102
|
+
*
|
|
103
|
+
* This expression has the "evaluate before nesting" flag so that it will be evaluated into
|
|
104
|
+
* a temporary matrix whenever it is nested in a larger expression. This prevents unexpected
|
|
105
|
+
* behavior with expressions involving random matrices.
|
|
106
|
+
*
|
|
107
|
+
* \not_reentrant
|
|
108
|
+
*
|
|
109
|
+
* \sa DenseBase::setRandom(), DenseBase::Random(Index,Index), DenseBase::Random(Index)
|
|
110
|
+
*/
|
|
111
|
+
template <typename Derived>
|
|
112
|
+
inline const typename DenseBase<Derived>::RandomReturnType DenseBase<Derived>::Random() {
|
|
115
113
|
return NullaryExpr(RowsAtCompileTime, ColsAtCompileTime, internal::scalar_random_op<Scalar>());
|
|
116
114
|
}
|
|
117
115
|
|
|
118
116
|
/** Sets all coefficients in this expression to random values.
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
template<typename Derived>
|
|
131
|
-
inline Derived& DenseBase<Derived>::setRandom()
|
|
132
|
-
{
|
|
117
|
+
*
|
|
118
|
+
* Numbers are uniformly spread through their whole definition range for integer types,
|
|
119
|
+
* and in the [-1:1] range for floating point scalar types.
|
|
120
|
+
*
|
|
121
|
+
* \not_reentrant
|
|
122
|
+
*
|
|
123
|
+
* Example: \include MatrixBase_setRandom.cpp
|
|
124
|
+
* Output: \verbinclude MatrixBase_setRandom.out
|
|
125
|
+
*
|
|
126
|
+
* \sa class CwiseNullaryOp, setRandom(Index), setRandom(Index,Index)
|
|
127
|
+
*/
|
|
128
|
+
template <typename Derived>
|
|
129
|
+
EIGEN_DEVICE_FUNC inline Derived& DenseBase<Derived>::setRandom() {
|
|
133
130
|
return *this = Random(rows(), cols());
|
|
134
131
|
}
|
|
135
132
|
|
|
136
133
|
/** Resizes to the given \a newSize, and sets all coefficients in this expression to random values.
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
template<typename Derived>
|
|
150
|
-
EIGEN_STRONG_INLINE Derived&
|
|
151
|
-
PlainObjectBase<Derived>::setRandom(Index newSize)
|
|
152
|
-
{
|
|
134
|
+
*
|
|
135
|
+
* Numbers are uniformly spread through their whole definition range for integer types,
|
|
136
|
+
* and in the [-1:1] range for floating point scalar types.
|
|
137
|
+
*
|
|
138
|
+
* \only_for_vectors
|
|
139
|
+
* \not_reentrant
|
|
140
|
+
*
|
|
141
|
+
* Example: \include Matrix_setRandom_int.cpp
|
|
142
|
+
* Output: \verbinclude Matrix_setRandom_int.out
|
|
143
|
+
*
|
|
144
|
+
* \sa DenseBase::setRandom(), setRandom(Index,Index), class CwiseNullaryOp, DenseBase::Random()
|
|
145
|
+
*/
|
|
146
|
+
template <typename Derived>
|
|
147
|
+
EIGEN_STRONG_INLINE Derived& PlainObjectBase<Derived>::setRandom(Index newSize) {
|
|
153
148
|
resize(newSize);
|
|
154
149
|
return setRandom();
|
|
155
150
|
}
|
|
156
151
|
|
|
157
152
|
/** Resizes to the given size, and sets all coefficients in this expression to random values.
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
template<typename Derived>
|
|
173
|
-
EIGEN_STRONG_INLINE Derived&
|
|
174
|
-
PlainObjectBase<Derived>::setRandom(Index rows, Index cols)
|
|
175
|
-
{
|
|
153
|
+
*
|
|
154
|
+
* Numbers are uniformly spread through their whole definition range for integer types,
|
|
155
|
+
* and in the [-1:1] range for floating point scalar types.
|
|
156
|
+
*
|
|
157
|
+
* \not_reentrant
|
|
158
|
+
*
|
|
159
|
+
* \param rows the new number of rows
|
|
160
|
+
* \param cols the new number of columns
|
|
161
|
+
*
|
|
162
|
+
* Example: \include Matrix_setRandom_int_int.cpp
|
|
163
|
+
* Output: \verbinclude Matrix_setRandom_int_int.out
|
|
164
|
+
*
|
|
165
|
+
* \sa DenseBase::setRandom(), setRandom(Index), class CwiseNullaryOp, DenseBase::Random()
|
|
166
|
+
*/
|
|
167
|
+
template <typename Derived>
|
|
168
|
+
EIGEN_STRONG_INLINE Derived& PlainObjectBase<Derived>::setRandom(Index rows, Index cols) {
|
|
176
169
|
resize(rows, cols);
|
|
177
170
|
return setRandom();
|
|
178
171
|
}
|
|
179
172
|
|
|
180
|
-
|
|
173
|
+
/** Resizes to the given size, changing only the number of columns, and sets all
|
|
174
|
+
* coefficients in this expression to random values. For the parameter of type
|
|
175
|
+
* NoChange_t, just pass the special value \c NoChange.
|
|
176
|
+
*
|
|
177
|
+
* Numbers are uniformly spread through their whole definition range for integer types,
|
|
178
|
+
* and in the [-1:1] range for floating point scalar types.
|
|
179
|
+
*
|
|
180
|
+
* \not_reentrant
|
|
181
|
+
*
|
|
182
|
+
* \sa DenseBase::setRandom(), setRandom(Index), setRandom(Index, NoChange_t), class CwiseNullaryOp, DenseBase::Random()
|
|
183
|
+
*/
|
|
184
|
+
template <typename Derived>
|
|
185
|
+
EIGEN_STRONG_INLINE Derived& PlainObjectBase<Derived>::setRandom(NoChange_t, Index cols) {
|
|
186
|
+
return setRandom(rows(), cols);
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
/** Resizes to the given size, changing only the number of rows, and sets all
|
|
190
|
+
* coefficients in this expression to random values. For the parameter of type
|
|
191
|
+
* NoChange_t, just pass the special value \c NoChange.
|
|
192
|
+
*
|
|
193
|
+
* Numbers are uniformly spread through their whole definition range for integer types,
|
|
194
|
+
* and in the [-1:1] range for floating point scalar types.
|
|
195
|
+
*
|
|
196
|
+
* \not_reentrant
|
|
197
|
+
*
|
|
198
|
+
* \sa DenseBase::setRandom(), setRandom(Index), setRandom(NoChange_t, Index), class CwiseNullaryOp, DenseBase::Random()
|
|
199
|
+
*/
|
|
200
|
+
template <typename Derived>
|
|
201
|
+
EIGEN_STRONG_INLINE Derived& PlainObjectBase<Derived>::setRandom(Index rows, NoChange_t) {
|
|
202
|
+
return setRandom(rows, cols());
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
} // end namespace Eigen
|
|
181
206
|
|
|
182
|
-
#endif
|
|
207
|
+
#endif // EIGEN_RANDOM_H
|
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
// This file is part of Eigen, a lightweight C++ template library
|
|
2
|
+
// for linear algebra.
|
|
3
|
+
//
|
|
4
|
+
// Copyright (C) 2024 Charles Schlosser <cs.schlosser@gmail.com>
|
|
5
|
+
//
|
|
6
|
+
// This Source Code Form is subject to the terms of the Mozilla
|
|
7
|
+
// Public License v. 2.0. If a copy of the MPL was not distributed
|
|
8
|
+
// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
9
|
+
|
|
10
|
+
#ifndef EIGEN_RANDOM_IMPL_H
|
|
11
|
+
#define EIGEN_RANDOM_IMPL_H
|
|
12
|
+
|
|
13
|
+
// IWYU pragma: private
|
|
14
|
+
#include "./InternalHeaderCheck.h"
|
|
15
|
+
|
|
16
|
+
namespace Eigen {
|
|
17
|
+
|
|
18
|
+
namespace internal {
|
|
19
|
+
|
|
20
|
+
/****************************************************************************
|
|
21
|
+
* Implementation of random *
|
|
22
|
+
****************************************************************************/
|
|
23
|
+
|
|
24
|
+
template <typename Scalar, bool IsComplex, bool IsInteger>
|
|
25
|
+
struct random_default_impl {};
|
|
26
|
+
|
|
27
|
+
template <typename Scalar>
|
|
28
|
+
struct random_impl : random_default_impl<Scalar, NumTraits<Scalar>::IsComplex, NumTraits<Scalar>::IsInteger> {};
|
|
29
|
+
|
|
30
|
+
template <typename Scalar>
|
|
31
|
+
struct random_retval {
|
|
32
|
+
typedef Scalar type;
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
template <typename Scalar>
|
|
36
|
+
inline EIGEN_MATHFUNC_RETVAL(random, Scalar) random(const Scalar& x, const Scalar& y) {
|
|
37
|
+
return EIGEN_MATHFUNC_IMPL(random, Scalar)::run(x, y);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
template <typename Scalar>
|
|
41
|
+
inline EIGEN_MATHFUNC_RETVAL(random, Scalar) random() {
|
|
42
|
+
return EIGEN_MATHFUNC_IMPL(random, Scalar)::run();
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// TODO: replace or provide alternatives to this, e.g. std::random_device
|
|
46
|
+
struct eigen_random_device {
|
|
47
|
+
using ReturnType = int;
|
|
48
|
+
static constexpr int Entropy = meta_floor_log2<(unsigned int)(RAND_MAX) + 1>::value;
|
|
49
|
+
static constexpr ReturnType Highest = RAND_MAX;
|
|
50
|
+
static EIGEN_DEVICE_FUNC inline ReturnType run() { return std::rand(); }
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
// Fill a built-in unsigned integer with numRandomBits beginning with the least significant bit
|
|
54
|
+
template <typename Scalar>
|
|
55
|
+
struct random_bits_impl {
|
|
56
|
+
EIGEN_STATIC_ASSERT(std::is_unsigned<Scalar>::value, SCALAR MUST BE A BUILT - IN UNSIGNED INTEGER)
|
|
57
|
+
using RandomDevice = eigen_random_device;
|
|
58
|
+
using RandomReturnType = typename RandomDevice::ReturnType;
|
|
59
|
+
static constexpr int kEntropy = RandomDevice::Entropy;
|
|
60
|
+
static constexpr int kTotalBits = sizeof(Scalar) * CHAR_BIT;
|
|
61
|
+
// return a Scalar filled with numRandomBits beginning from the least significant bit
|
|
62
|
+
static EIGEN_DEVICE_FUNC inline Scalar run(int numRandomBits) {
|
|
63
|
+
eigen_assert((numRandomBits >= 0) && (numRandomBits <= kTotalBits));
|
|
64
|
+
const Scalar mask = Scalar(-1) >> ((kTotalBits - numRandomBits) & (kTotalBits - 1));
|
|
65
|
+
Scalar randomBits = 0;
|
|
66
|
+
for (int shift = 0; shift < numRandomBits; shift += kEntropy) {
|
|
67
|
+
RandomReturnType r = RandomDevice::run();
|
|
68
|
+
randomBits |= static_cast<Scalar>(r) << shift;
|
|
69
|
+
}
|
|
70
|
+
// clear the excess bits
|
|
71
|
+
randomBits &= mask;
|
|
72
|
+
return randomBits;
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
template <typename BitsType>
|
|
77
|
+
EIGEN_DEVICE_FUNC inline BitsType getRandomBits(int numRandomBits) {
|
|
78
|
+
return random_bits_impl<BitsType>::run(numRandomBits);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// random implementation for a built-in floating point type
|
|
82
|
+
template <typename Scalar, bool BuiltIn = std::is_floating_point<Scalar>::value>
|
|
83
|
+
struct random_float_impl {
|
|
84
|
+
using BitsType = typename numext::get_integer_by_size<sizeof(Scalar)>::unsigned_type;
|
|
85
|
+
static constexpr EIGEN_DEVICE_FUNC inline int mantissaBits() {
|
|
86
|
+
const int digits = NumTraits<Scalar>::digits();
|
|
87
|
+
return digits - 1;
|
|
88
|
+
}
|
|
89
|
+
static EIGEN_DEVICE_FUNC inline Scalar run(int numRandomBits) {
|
|
90
|
+
eigen_assert(numRandomBits >= 0 && numRandomBits <= mantissaBits());
|
|
91
|
+
BitsType randomBits = getRandomBits<BitsType>(numRandomBits);
|
|
92
|
+
// if fewer than MantissaBits is requested, shift them to the left
|
|
93
|
+
randomBits <<= (mantissaBits() - numRandomBits);
|
|
94
|
+
// randomBits is in the half-open interval [2,4)
|
|
95
|
+
randomBits |= numext::bit_cast<BitsType>(Scalar(2));
|
|
96
|
+
// result is in the half-open interval [-1,1)
|
|
97
|
+
Scalar result = numext::bit_cast<Scalar>(randomBits) - Scalar(3);
|
|
98
|
+
return result;
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
// random implementation for a custom floating point type
|
|
102
|
+
// uses double as the implementation with a mantissa with a size equal to either the target scalar's mantissa or that of
|
|
103
|
+
// double, whichever is smaller
|
|
104
|
+
template <typename Scalar>
|
|
105
|
+
struct random_float_impl<Scalar, false> {
|
|
106
|
+
static EIGEN_DEVICE_FUNC inline int mantissaBits() {
|
|
107
|
+
const int digits = NumTraits<Scalar>::digits();
|
|
108
|
+
constexpr int kDoubleDigits = NumTraits<double>::digits();
|
|
109
|
+
return numext::mini(digits, kDoubleDigits) - 1;
|
|
110
|
+
}
|
|
111
|
+
static EIGEN_DEVICE_FUNC inline Scalar run(int numRandomBits) {
|
|
112
|
+
eigen_assert(numRandomBits >= 0 && numRandomBits <= mantissaBits());
|
|
113
|
+
Scalar result = static_cast<Scalar>(random_float_impl<double>::run(numRandomBits));
|
|
114
|
+
return result;
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
#if !EIGEN_COMP_NVCC
|
|
119
|
+
// random implementation for long double
|
|
120
|
+
// this specialization is not compatible with double-double scalars
|
|
121
|
+
template <bool Specialize = (sizeof(long double) == 2 * sizeof(uint64_t)) &&
|
|
122
|
+
((std::numeric_limits<long double>::digits != (2 * std::numeric_limits<double>::digits)))>
|
|
123
|
+
struct random_longdouble_impl {
|
|
124
|
+
static constexpr int Size = sizeof(long double);
|
|
125
|
+
static constexpr EIGEN_DEVICE_FUNC int mantissaBits() { return NumTraits<long double>::digits() - 1; }
|
|
126
|
+
static EIGEN_DEVICE_FUNC inline long double run(int numRandomBits) {
|
|
127
|
+
eigen_assert(numRandomBits >= 0 && numRandomBits <= mantissaBits());
|
|
128
|
+
EIGEN_USING_STD(memcpy);
|
|
129
|
+
int numLowBits = numext::mini(numRandomBits, 64);
|
|
130
|
+
int numHighBits = numext::maxi(numRandomBits - 64, 0);
|
|
131
|
+
uint64_t randomBits[2];
|
|
132
|
+
long double result = 2.0L;
|
|
133
|
+
memcpy(&randomBits, &result, Size);
|
|
134
|
+
#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
|
|
135
|
+
randomBits[0] |= getRandomBits<uint64_t>(numLowBits);
|
|
136
|
+
randomBits[1] |= getRandomBits<uint64_t>(numHighBits);
|
|
137
|
+
#elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
|
|
138
|
+
randomBits[0] |= getRandomBits<uint64_t>(numHighBits);
|
|
139
|
+
randomBits[1] |= getRandomBits<uint64_t>(numLowBits);
|
|
140
|
+
#else
|
|
141
|
+
#error Unexpected or undefined __BYTE_ORDER__
|
|
142
|
+
#endif
|
|
143
|
+
memcpy(&result, &randomBits, Size);
|
|
144
|
+
result -= 3.0L;
|
|
145
|
+
return result;
|
|
146
|
+
}
|
|
147
|
+
};
|
|
148
|
+
template <>
|
|
149
|
+
struct random_longdouble_impl<false> {
|
|
150
|
+
static constexpr EIGEN_DEVICE_FUNC int mantissaBits() { return NumTraits<double>::digits() - 1; }
|
|
151
|
+
static EIGEN_DEVICE_FUNC inline long double run(int numRandomBits) {
|
|
152
|
+
return static_cast<long double>(random_float_impl<double>::run(numRandomBits));
|
|
153
|
+
}
|
|
154
|
+
};
|
|
155
|
+
template <>
|
|
156
|
+
struct random_float_impl<long double> : random_longdouble_impl<> {};
|
|
157
|
+
#endif
|
|
158
|
+
|
|
159
|
+
template <typename Scalar>
|
|
160
|
+
struct random_default_impl<Scalar, false, false> {
|
|
161
|
+
using Impl = random_float_impl<Scalar>;
|
|
162
|
+
static EIGEN_DEVICE_FUNC inline Scalar run(const Scalar& x, const Scalar& y, int numRandomBits) {
|
|
163
|
+
Scalar half_x = Scalar(0.5) * x;
|
|
164
|
+
Scalar half_y = Scalar(0.5) * y;
|
|
165
|
+
Scalar result = (half_x + half_y) + (half_y - half_x) * run(numRandomBits);
|
|
166
|
+
// result is in the half-open interval [x, y) -- provided that x < y
|
|
167
|
+
return result;
|
|
168
|
+
}
|
|
169
|
+
static EIGEN_DEVICE_FUNC inline Scalar run(const Scalar& x, const Scalar& y) {
|
|
170
|
+
return run(x, y, Impl::mantissaBits());
|
|
171
|
+
}
|
|
172
|
+
static EIGEN_DEVICE_FUNC inline Scalar run(int numRandomBits) { return Impl::run(numRandomBits); }
|
|
173
|
+
static EIGEN_DEVICE_FUNC inline Scalar run() { return run(Impl::mantissaBits()); }
|
|
174
|
+
};
|
|
175
|
+
|
|
176
|
+
template <typename Scalar, bool IsSigned = NumTraits<Scalar>::IsSigned, bool BuiltIn = std::is_integral<Scalar>::value>
|
|
177
|
+
struct random_int_impl;
|
|
178
|
+
|
|
179
|
+
// random implementation for a built-in unsigned integer type
|
|
180
|
+
template <typename Scalar>
|
|
181
|
+
struct random_int_impl<Scalar, false, true> {
|
|
182
|
+
static constexpr int kTotalBits = sizeof(Scalar) * CHAR_BIT;
|
|
183
|
+
static EIGEN_DEVICE_FUNC inline Scalar run(const Scalar& x, const Scalar& y) {
|
|
184
|
+
if (y <= x) return x;
|
|
185
|
+
Scalar range = y - x;
|
|
186
|
+
// handle edge case where [x,y] spans the entire range of Scalar
|
|
187
|
+
if (range == NumTraits<Scalar>::highest()) return run();
|
|
188
|
+
Scalar count = range + 1;
|
|
189
|
+
// calculate the number of random bits needed to fill range
|
|
190
|
+
int numRandomBits = log2_ceil(count);
|
|
191
|
+
Scalar randomBits;
|
|
192
|
+
do {
|
|
193
|
+
randomBits = getRandomBits<Scalar>(numRandomBits);
|
|
194
|
+
// if the random draw is outside [0, range), try again (rejection sampling)
|
|
195
|
+
// in the worst-case scenario, the probability of rejection is: 1/2 - 1/2^numRandomBits < 50%
|
|
196
|
+
} while (randomBits >= count);
|
|
197
|
+
Scalar result = x + randomBits;
|
|
198
|
+
return result;
|
|
199
|
+
}
|
|
200
|
+
static EIGEN_DEVICE_FUNC inline Scalar run() { return getRandomBits<Scalar>(kTotalBits); }
|
|
201
|
+
};
|
|
202
|
+
|
|
203
|
+
// random implementation for a built-in signed integer type
|
|
204
|
+
template <typename Scalar>
|
|
205
|
+
struct random_int_impl<Scalar, true, true> {
|
|
206
|
+
static constexpr int kTotalBits = sizeof(Scalar) * CHAR_BIT;
|
|
207
|
+
using BitsType = typename make_unsigned<Scalar>::type;
|
|
208
|
+
static EIGEN_DEVICE_FUNC inline Scalar run(const Scalar& x, const Scalar& y) {
|
|
209
|
+
if (y <= x) return x;
|
|
210
|
+
// Avoid overflow by representing `range` as an unsigned type
|
|
211
|
+
BitsType range = static_cast<BitsType>(y) - static_cast<BitsType>(x);
|
|
212
|
+
BitsType randomBits = random_int_impl<BitsType>::run(0, range);
|
|
213
|
+
// Avoid overflow in the case where `x` is negative and there is a large range so
|
|
214
|
+
// `randomBits` would also be negative if cast to `Scalar` first.
|
|
215
|
+
Scalar result = static_cast<Scalar>(static_cast<BitsType>(x) + randomBits);
|
|
216
|
+
return result;
|
|
217
|
+
}
|
|
218
|
+
static EIGEN_DEVICE_FUNC inline Scalar run() { return static_cast<Scalar>(getRandomBits<BitsType>(kTotalBits)); }
|
|
219
|
+
};
|
|
220
|
+
|
|
221
|
+
// todo: custom integers
|
|
222
|
+
template <typename Scalar, bool IsSigned>
|
|
223
|
+
struct random_int_impl<Scalar, IsSigned, false> {
|
|
224
|
+
static EIGEN_DEVICE_FUNC inline Scalar run(const Scalar&, const Scalar&) { return run(); }
|
|
225
|
+
static EIGEN_DEVICE_FUNC inline Scalar run() {
|
|
226
|
+
eigen_assert(std::false_type::value && "RANDOM FOR CUSTOM INTEGERS NOT YET SUPPORTED");
|
|
227
|
+
return Scalar(0);
|
|
228
|
+
}
|
|
229
|
+
};
|
|
230
|
+
|
|
231
|
+
template <typename Scalar>
|
|
232
|
+
struct random_default_impl<Scalar, false, true> : random_int_impl<Scalar> {};
|
|
233
|
+
|
|
234
|
+
template <>
|
|
235
|
+
struct random_impl<bool> {
|
|
236
|
+
static EIGEN_DEVICE_FUNC inline bool run(const bool& x, const bool& y) {
|
|
237
|
+
if (y <= x) return x;
|
|
238
|
+
return run();
|
|
239
|
+
}
|
|
240
|
+
static EIGEN_DEVICE_FUNC inline bool run() { return getRandomBits<unsigned>(1) ? true : false; }
|
|
241
|
+
};
|
|
242
|
+
|
|
243
|
+
template <typename Scalar>
|
|
244
|
+
struct random_default_impl<Scalar, true, false> {
|
|
245
|
+
typedef typename NumTraits<Scalar>::Real RealScalar;
|
|
246
|
+
using Impl = random_impl<RealScalar>;
|
|
247
|
+
static EIGEN_DEVICE_FUNC inline Scalar run(const Scalar& x, const Scalar& y, int numRandomBits) {
|
|
248
|
+
return Scalar(Impl::run(x.real(), y.real(), numRandomBits), Impl::run(x.imag(), y.imag(), numRandomBits));
|
|
249
|
+
}
|
|
250
|
+
static EIGEN_DEVICE_FUNC inline Scalar run(const Scalar& x, const Scalar& y) {
|
|
251
|
+
return Scalar(Impl::run(x.real(), y.real()), Impl::run(x.imag(), y.imag()));
|
|
252
|
+
}
|
|
253
|
+
static EIGEN_DEVICE_FUNC inline Scalar run(int numRandomBits) {
|
|
254
|
+
return Scalar(Impl::run(numRandomBits), Impl::run(numRandomBits));
|
|
255
|
+
}
|
|
256
|
+
static EIGEN_DEVICE_FUNC inline Scalar run() { return Scalar(Impl::run(), Impl::run()); }
|
|
257
|
+
};
|
|
258
|
+
|
|
259
|
+
} // namespace internal
|
|
260
|
+
} // namespace Eigen
|
|
261
|
+
|
|
262
|
+
#endif // EIGEN_RANDOM_IMPL_H
|