@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
|
@@ -33,135 +33,134 @@
|
|
|
33
33
|
#ifndef EIGEN_TRIANGULAR_SOLVER_MATRIX_BLAS_H
|
|
34
34
|
#define EIGEN_TRIANGULAR_SOLVER_MATRIX_BLAS_H
|
|
35
35
|
|
|
36
|
+
// IWYU pragma: private
|
|
37
|
+
#include "../InternalHeaderCheck.h"
|
|
38
|
+
|
|
36
39
|
namespace Eigen {
|
|
37
40
|
|
|
38
41
|
namespace internal {
|
|
39
42
|
|
|
40
43
|
// implements LeftSide op(triangular)^-1 * general
|
|
41
|
-
#define EIGEN_BLAS_TRSM_L(EIGTYPE, BLASTYPE, BLASFUNC)
|
|
42
|
-
template <typename Index, int Mode, bool Conjugate, int TriStorageOrder>
|
|
43
|
-
struct triangular_solve_matrix<EIGTYPE,Index,OnTheLeft,Mode,Conjugate,TriStorageOrder,ColMajor,1> \
|
|
44
|
-
{
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
\
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
/* Set
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
\
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
} \
|
|
87
|
-
};
|
|
44
|
+
#define EIGEN_BLAS_TRSM_L(EIGTYPE, BLASTYPE, BLASFUNC) \
|
|
45
|
+
template <typename Index, int Mode, bool Conjugate, int TriStorageOrder> \
|
|
46
|
+
struct triangular_solve_matrix<EIGTYPE, Index, OnTheLeft, Mode, Conjugate, TriStorageOrder, ColMajor, 1> { \
|
|
47
|
+
enum { \
|
|
48
|
+
IsLower = (Mode & Lower) == Lower, \
|
|
49
|
+
IsUnitDiag = (Mode & UnitDiag) ? 1 : 0, \
|
|
50
|
+
IsZeroDiag = (Mode & ZeroDiag) ? 1 : 0, \
|
|
51
|
+
conjA = ((TriStorageOrder == ColMajor) && Conjugate) ? 1 : 0 \
|
|
52
|
+
}; \
|
|
53
|
+
static void run(Index size, Index otherSize, const EIGTYPE* _tri, Index triStride, EIGTYPE* _other, \
|
|
54
|
+
Index otherIncr, Index otherStride, level3_blocking<EIGTYPE, EIGTYPE>& /*blocking*/) { \
|
|
55
|
+
if (size == 0 || otherSize == 0) return; \
|
|
56
|
+
EIGEN_ONLY_USED_FOR_DEBUG(otherIncr); \
|
|
57
|
+
eigen_assert(otherIncr == 1); \
|
|
58
|
+
BlasIndex m = convert_index<BlasIndex>(size), n = convert_index<BlasIndex>(otherSize), lda, ldb; \
|
|
59
|
+
char side = 'L', uplo, diag = 'N', transa; \
|
|
60
|
+
/* Set alpha_ */ \
|
|
61
|
+
EIGTYPE alpha(1); \
|
|
62
|
+
ldb = convert_index<BlasIndex>(otherStride); \
|
|
63
|
+
\
|
|
64
|
+
const EIGTYPE* a; \
|
|
65
|
+
/* Set trans */ \
|
|
66
|
+
transa = (TriStorageOrder == RowMajor) ? ((Conjugate) ? 'C' : 'T') : 'N'; \
|
|
67
|
+
/* Set uplo */ \
|
|
68
|
+
uplo = IsLower ? 'L' : 'U'; \
|
|
69
|
+
if (TriStorageOrder == RowMajor) uplo = (uplo == 'L') ? 'U' : 'L'; \
|
|
70
|
+
/* Set a, lda */ \
|
|
71
|
+
typedef Matrix<EIGTYPE, Dynamic, Dynamic, TriStorageOrder> MatrixTri; \
|
|
72
|
+
Map<const MatrixTri, 0, OuterStride<> > tri(_tri, size, size, OuterStride<>(triStride)); \
|
|
73
|
+
MatrixTri a_tmp; \
|
|
74
|
+
\
|
|
75
|
+
if (conjA) { \
|
|
76
|
+
a_tmp = tri.conjugate(); \
|
|
77
|
+
a = a_tmp.data(); \
|
|
78
|
+
lda = convert_index<BlasIndex>(a_tmp.outerStride()); \
|
|
79
|
+
} else { \
|
|
80
|
+
a = _tri; \
|
|
81
|
+
lda = convert_index<BlasIndex>(triStride); \
|
|
82
|
+
} \
|
|
83
|
+
if (IsUnitDiag) diag = 'U'; \
|
|
84
|
+
/* call ?trsm*/ \
|
|
85
|
+
BLASFUNC(&side, &uplo, &transa, &diag, &m, &n, (const BLASTYPE*)&numext::real_ref(alpha), (const BLASTYPE*)a, \
|
|
86
|
+
&lda, (BLASTYPE*)_other, &ldb); \
|
|
87
|
+
} \
|
|
88
|
+
};
|
|
88
89
|
|
|
89
90
|
#ifdef EIGEN_USE_MKL
|
|
90
|
-
EIGEN_BLAS_TRSM_L(double,
|
|
91
|
+
EIGEN_BLAS_TRSM_L(double, double, dtrsm)
|
|
91
92
|
EIGEN_BLAS_TRSM_L(dcomplex, MKL_Complex16, ztrsm)
|
|
92
|
-
EIGEN_BLAS_TRSM_L(float,
|
|
93
|
+
EIGEN_BLAS_TRSM_L(float, float, strsm)
|
|
93
94
|
EIGEN_BLAS_TRSM_L(scomplex, MKL_Complex8, ctrsm)
|
|
94
95
|
#else
|
|
95
|
-
EIGEN_BLAS_TRSM_L(double,
|
|
96
|
+
EIGEN_BLAS_TRSM_L(double, double, dtrsm_)
|
|
96
97
|
EIGEN_BLAS_TRSM_L(dcomplex, double, ztrsm_)
|
|
97
|
-
EIGEN_BLAS_TRSM_L(float,
|
|
98
|
-
EIGEN_BLAS_TRSM_L(scomplex, float,
|
|
98
|
+
EIGEN_BLAS_TRSM_L(float, float, strsm_)
|
|
99
|
+
EIGEN_BLAS_TRSM_L(scomplex, float, ctrsm_)
|
|
99
100
|
#endif
|
|
100
101
|
|
|
101
102
|
// implements RightSide general * op(triangular)^-1
|
|
102
|
-
#define EIGEN_BLAS_TRSM_R(EIGTYPE, BLASTYPE, BLASFUNC)
|
|
103
|
-
template <typename Index, int Mode, bool Conjugate, int TriStorageOrder>
|
|
104
|
-
struct triangular_solve_matrix<EIGTYPE,Index,OnTheRight,Mode,Conjugate,TriStorageOrder,ColMajor,1> \
|
|
105
|
-
{
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
\
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
/* Set
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
\
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
/*
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
} \
|
|
149
|
-
};
|
|
103
|
+
#define EIGEN_BLAS_TRSM_R(EIGTYPE, BLASTYPE, BLASFUNC) \
|
|
104
|
+
template <typename Index, int Mode, bool Conjugate, int TriStorageOrder> \
|
|
105
|
+
struct triangular_solve_matrix<EIGTYPE, Index, OnTheRight, Mode, Conjugate, TriStorageOrder, ColMajor, 1> { \
|
|
106
|
+
enum { \
|
|
107
|
+
IsLower = (Mode & Lower) == Lower, \
|
|
108
|
+
IsUnitDiag = (Mode & UnitDiag) ? 1 : 0, \
|
|
109
|
+
IsZeroDiag = (Mode & ZeroDiag) ? 1 : 0, \
|
|
110
|
+
conjA = ((TriStorageOrder == ColMajor) && Conjugate) ? 1 : 0 \
|
|
111
|
+
}; \
|
|
112
|
+
static void run(Index size, Index otherSize, const EIGTYPE* _tri, Index triStride, EIGTYPE* _other, \
|
|
113
|
+
Index otherIncr, Index otherStride, level3_blocking<EIGTYPE, EIGTYPE>& /*blocking*/) { \
|
|
114
|
+
if (size == 0 || otherSize == 0) return; \
|
|
115
|
+
EIGEN_ONLY_USED_FOR_DEBUG(otherIncr); \
|
|
116
|
+
eigen_assert(otherIncr == 1); \
|
|
117
|
+
BlasIndex m = convert_index<BlasIndex>(otherSize), n = convert_index<BlasIndex>(size), lda, ldb; \
|
|
118
|
+
char side = 'R', uplo, diag = 'N', transa; \
|
|
119
|
+
/* Set alpha_ */ \
|
|
120
|
+
EIGTYPE alpha(1); \
|
|
121
|
+
ldb = convert_index<BlasIndex>(otherStride); \
|
|
122
|
+
\
|
|
123
|
+
const EIGTYPE* a; \
|
|
124
|
+
/* Set trans */ \
|
|
125
|
+
transa = (TriStorageOrder == RowMajor) ? ((Conjugate) ? 'C' : 'T') : 'N'; \
|
|
126
|
+
/* Set uplo */ \
|
|
127
|
+
uplo = IsLower ? 'L' : 'U'; \
|
|
128
|
+
if (TriStorageOrder == RowMajor) uplo = (uplo == 'L') ? 'U' : 'L'; \
|
|
129
|
+
/* Set a, lda */ \
|
|
130
|
+
typedef Matrix<EIGTYPE, Dynamic, Dynamic, TriStorageOrder> MatrixTri; \
|
|
131
|
+
Map<const MatrixTri, 0, OuterStride<> > tri(_tri, size, size, OuterStride<>(triStride)); \
|
|
132
|
+
MatrixTri a_tmp; \
|
|
133
|
+
\
|
|
134
|
+
if (conjA) { \
|
|
135
|
+
a_tmp = tri.conjugate(); \
|
|
136
|
+
a = a_tmp.data(); \
|
|
137
|
+
lda = convert_index<BlasIndex>(a_tmp.outerStride()); \
|
|
138
|
+
} else { \
|
|
139
|
+
a = _tri; \
|
|
140
|
+
lda = convert_index<BlasIndex>(triStride); \
|
|
141
|
+
} \
|
|
142
|
+
if (IsUnitDiag) diag = 'U'; \
|
|
143
|
+
/* call ?trsm*/ \
|
|
144
|
+
BLASFUNC(&side, &uplo, &transa, &diag, &m, &n, (const BLASTYPE*)&numext::real_ref(alpha), (const BLASTYPE*)a, \
|
|
145
|
+
&lda, (BLASTYPE*)_other, &ldb); \
|
|
146
|
+
/*std::cout << "TRMS_L specialization!\n";*/ \
|
|
147
|
+
} \
|
|
148
|
+
};
|
|
150
149
|
|
|
151
150
|
#ifdef EIGEN_USE_MKL
|
|
152
|
-
EIGEN_BLAS_TRSM_R(double,
|
|
151
|
+
EIGEN_BLAS_TRSM_R(double, double, dtrsm)
|
|
153
152
|
EIGEN_BLAS_TRSM_R(dcomplex, MKL_Complex16, ztrsm)
|
|
154
|
-
EIGEN_BLAS_TRSM_R(float,
|
|
155
|
-
EIGEN_BLAS_TRSM_R(scomplex, MKL_Complex8,
|
|
153
|
+
EIGEN_BLAS_TRSM_R(float, float, strsm)
|
|
154
|
+
EIGEN_BLAS_TRSM_R(scomplex, MKL_Complex8, ctrsm)
|
|
156
155
|
#else
|
|
157
|
-
EIGEN_BLAS_TRSM_R(double,
|
|
156
|
+
EIGEN_BLAS_TRSM_R(double, double, dtrsm_)
|
|
158
157
|
EIGEN_BLAS_TRSM_R(dcomplex, double, ztrsm_)
|
|
159
|
-
EIGEN_BLAS_TRSM_R(float,
|
|
160
|
-
EIGEN_BLAS_TRSM_R(scomplex, float,
|
|
158
|
+
EIGEN_BLAS_TRSM_R(float, float, strsm_)
|
|
159
|
+
EIGEN_BLAS_TRSM_R(scomplex, float, ctrsm_)
|
|
161
160
|
#endif
|
|
162
161
|
|
|
163
|
-
}
|
|
162
|
+
} // end namespace internal
|
|
164
163
|
|
|
165
|
-
}
|
|
164
|
+
} // end namespace Eigen
|
|
166
165
|
|
|
167
|
-
#endif
|
|
166
|
+
#endif // EIGEN_TRIANGULAR_SOLVER_MATRIX_BLAS_H
|
|
@@ -10,136 +10,113 @@
|
|
|
10
10
|
#ifndef EIGEN_TRIANGULAR_SOLVER_VECTOR_H
|
|
11
11
|
#define EIGEN_TRIANGULAR_SOLVER_VECTOR_H
|
|
12
12
|
|
|
13
|
+
// IWYU pragma: private
|
|
14
|
+
#include "../InternalHeaderCheck.h"
|
|
15
|
+
|
|
13
16
|
namespace Eigen {
|
|
14
17
|
|
|
15
18
|
namespace internal {
|
|
16
19
|
|
|
17
|
-
template<typename LhsScalar, typename RhsScalar, typename Index, int Mode, bool Conjugate, int StorageOrder>
|
|
18
|
-
struct triangular_solve_vector<LhsScalar, RhsScalar, Index, OnTheRight, Mode, Conjugate, StorageOrder>
|
|
19
|
-
{
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
((Mode&Upper)==Upper ? Lower : Upper) | (Mode&UnitDiag),
|
|
24
|
-
Conjugate,StorageOrder==RowMajor?ColMajor:RowMajor
|
|
25
|
-
>::run(size, _lhs, lhsStride, rhs);
|
|
20
|
+
template <typename LhsScalar, typename RhsScalar, typename Index, int Mode, bool Conjugate, int StorageOrder>
|
|
21
|
+
struct triangular_solve_vector<LhsScalar, RhsScalar, Index, OnTheRight, Mode, Conjugate, StorageOrder> {
|
|
22
|
+
static void run(Index size, const LhsScalar* _lhs, Index lhsStride, RhsScalar* rhs) {
|
|
23
|
+
triangular_solve_vector<LhsScalar, RhsScalar, Index, OnTheLeft,
|
|
24
|
+
((Mode & Upper) == Upper ? Lower : Upper) | (Mode & UnitDiag), Conjugate,
|
|
25
|
+
StorageOrder == RowMajor ? ColMajor : RowMajor>::run(size, _lhs, lhsStride, rhs);
|
|
26
26
|
}
|
|
27
27
|
};
|
|
28
28
|
|
|
29
29
|
// forward and backward substitution, row-major, rhs is a vector
|
|
30
|
-
template<typename LhsScalar, typename RhsScalar, typename Index, int Mode, bool Conjugate>
|
|
31
|
-
struct triangular_solve_vector<LhsScalar, RhsScalar, Index, OnTheLeft, Mode, Conjugate, RowMajor>
|
|
32
|
-
{
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
typedef
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
typename internal::conditional<
|
|
45
|
-
Conjugate,
|
|
46
|
-
const CwiseUnaryOp<typename internal::scalar_conjugate_op<LhsScalar>,LhsMap>,
|
|
47
|
-
const LhsMap&>
|
|
48
|
-
::type cjLhs(lhs);
|
|
30
|
+
template <typename LhsScalar, typename RhsScalar, typename Index, int Mode, bool Conjugate>
|
|
31
|
+
struct triangular_solve_vector<LhsScalar, RhsScalar, Index, OnTheLeft, Mode, Conjugate, RowMajor> {
|
|
32
|
+
enum { IsLower = ((Mode & Lower) == Lower) };
|
|
33
|
+
static void run(Index size, const LhsScalar* _lhs, Index lhsStride, RhsScalar* rhs) {
|
|
34
|
+
typedef Map<const Matrix<LhsScalar, Dynamic, Dynamic, RowMajor>, 0, OuterStride<> > LhsMap;
|
|
35
|
+
const LhsMap lhs(_lhs, size, size, OuterStride<>(lhsStride));
|
|
36
|
+
|
|
37
|
+
typedef const_blas_data_mapper<LhsScalar, Index, RowMajor> LhsMapper;
|
|
38
|
+
typedef const_blas_data_mapper<RhsScalar, Index, ColMajor> RhsMapper;
|
|
39
|
+
|
|
40
|
+
std::conditional_t<Conjugate, const CwiseUnaryOp<typename internal::scalar_conjugate_op<LhsScalar>, LhsMap>,
|
|
41
|
+
const LhsMap&>
|
|
42
|
+
cjLhs(lhs);
|
|
49
43
|
static const Index PanelWidth = EIGEN_TUNE_TRIANGULAR_PANEL_WIDTH;
|
|
50
|
-
for(Index pi=IsLower ? 0 : size;
|
|
51
|
-
IsLower ? pi<size : pi>0;
|
|
52
|
-
IsLower ? pi+=PanelWidth : pi-=PanelWidth)
|
|
53
|
-
{
|
|
44
|
+
for (Index pi = IsLower ? 0 : size; IsLower ? pi < size : pi > 0; IsLower ? pi += PanelWidth : pi -= PanelWidth) {
|
|
54
45
|
Index actualPanelWidth = (std::min)(IsLower ? size - pi : pi, PanelWidth);
|
|
55
46
|
|
|
56
|
-
Index r = IsLower ? pi : size - pi;
|
|
57
|
-
if (r > 0)
|
|
58
|
-
{
|
|
47
|
+
Index r = IsLower ? pi : size - pi; // remaining size
|
|
48
|
+
if (r > 0) {
|
|
59
49
|
// let's directly call the low level product function because:
|
|
60
50
|
// 1 - it is faster to compile
|
|
61
|
-
// 2 - it is
|
|
62
|
-
Index startRow = IsLower ? pi : pi-actualPanelWidth;
|
|
51
|
+
// 2 - it is slightly faster at runtime
|
|
52
|
+
Index startRow = IsLower ? pi : pi - actualPanelWidth;
|
|
63
53
|
Index startCol = IsLower ? 0 : pi;
|
|
64
54
|
|
|
65
|
-
general_matrix_vector_product<Index,LhsScalar,LhsMapper,RowMajor,Conjugate,RhsScalar,RhsMapper,
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
rhs + startRow, 1,
|
|
70
|
-
RhsScalar(-1));
|
|
55
|
+
general_matrix_vector_product<Index, LhsScalar, LhsMapper, RowMajor, Conjugate, RhsScalar, RhsMapper,
|
|
56
|
+
false>::run(actualPanelWidth, r,
|
|
57
|
+
LhsMapper(&lhs.coeffRef(startRow, startCol), lhsStride),
|
|
58
|
+
RhsMapper(rhs + startCol, 1), rhs + startRow, 1, RhsScalar(-1));
|
|
71
59
|
}
|
|
72
60
|
|
|
73
|
-
for(Index k=0; k<actualPanelWidth; ++k)
|
|
74
|
-
|
|
75
|
-
Index
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
61
|
+
for (Index k = 0; k < actualPanelWidth; ++k) {
|
|
62
|
+
Index i = IsLower ? pi + k : pi - k - 1;
|
|
63
|
+
Index s = IsLower ? pi : i + 1;
|
|
64
|
+
if (k > 0)
|
|
65
|
+
rhs[i] -= (cjLhs.row(i).segment(s, k).transpose().cwiseProduct(
|
|
66
|
+
Map<const Matrix<RhsScalar, Dynamic, 1> >(rhs + s, k)))
|
|
67
|
+
.sum();
|
|
79
68
|
|
|
80
|
-
if(!(Mode & UnitDiag))
|
|
81
|
-
rhs[i] /= cjLhs(i,i);
|
|
69
|
+
if ((!(Mode & UnitDiag)) && !is_identically_zero(rhs[i])) rhs[i] /= cjLhs(i, i);
|
|
82
70
|
}
|
|
83
71
|
}
|
|
84
72
|
}
|
|
85
73
|
};
|
|
86
74
|
|
|
87
75
|
// forward and backward substitution, column-major, rhs is a vector
|
|
88
|
-
template<typename LhsScalar, typename RhsScalar, typename Index, int Mode, bool Conjugate>
|
|
89
|
-
struct triangular_solve_vector<LhsScalar, RhsScalar, Index, OnTheLeft, Mode, Conjugate, ColMajor>
|
|
90
|
-
{
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
typedef const_blas_data_mapper<RhsScalar,Index,ColMajor> RhsMapper;
|
|
100
|
-
typename internal::conditional<Conjugate,
|
|
101
|
-
const CwiseUnaryOp<typename internal::scalar_conjugate_op<LhsScalar>,LhsMap>,
|
|
102
|
-
const LhsMap&
|
|
103
|
-
>::type cjLhs(lhs);
|
|
76
|
+
template <typename LhsScalar, typename RhsScalar, typename Index, int Mode, bool Conjugate>
|
|
77
|
+
struct triangular_solve_vector<LhsScalar, RhsScalar, Index, OnTheLeft, Mode, Conjugate, ColMajor> {
|
|
78
|
+
enum { IsLower = ((Mode & Lower) == Lower) };
|
|
79
|
+
static void run(Index size, const LhsScalar* _lhs, Index lhsStride, RhsScalar* rhs) {
|
|
80
|
+
typedef Map<const Matrix<LhsScalar, Dynamic, Dynamic, ColMajor>, 0, OuterStride<> > LhsMap;
|
|
81
|
+
const LhsMap lhs(_lhs, size, size, OuterStride<>(lhsStride));
|
|
82
|
+
typedef const_blas_data_mapper<LhsScalar, Index, ColMajor> LhsMapper;
|
|
83
|
+
typedef const_blas_data_mapper<RhsScalar, Index, ColMajor> RhsMapper;
|
|
84
|
+
std::conditional_t<Conjugate, const CwiseUnaryOp<typename internal::scalar_conjugate_op<LhsScalar>, LhsMap>,
|
|
85
|
+
const LhsMap&>
|
|
86
|
+
cjLhs(lhs);
|
|
104
87
|
static const Index PanelWidth = EIGEN_TUNE_TRIANGULAR_PANEL_WIDTH;
|
|
105
88
|
|
|
106
|
-
for(Index pi=IsLower ? 0 : size;
|
|
107
|
-
IsLower ? pi<size : pi>0;
|
|
108
|
-
IsLower ? pi+=PanelWidth : pi-=PanelWidth)
|
|
109
|
-
{
|
|
89
|
+
for (Index pi = IsLower ? 0 : size; IsLower ? pi < size : pi > 0; IsLower ? pi += PanelWidth : pi -= PanelWidth) {
|
|
110
90
|
Index actualPanelWidth = (std::min)(IsLower ? size - pi : pi, PanelWidth);
|
|
111
|
-
Index startBlock = IsLower ? pi : pi-actualPanelWidth;
|
|
91
|
+
Index startBlock = IsLower ? pi : pi - actualPanelWidth;
|
|
112
92
|
Index endBlock = IsLower ? pi + actualPanelWidth : 0;
|
|
113
93
|
|
|
114
|
-
for(Index k=0; k<actualPanelWidth; ++k)
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
rhs[i] /= cjLhs.coeff(i,i);
|
|
94
|
+
for (Index k = 0; k < actualPanelWidth; ++k) {
|
|
95
|
+
Index i = IsLower ? pi + k : pi - k - 1;
|
|
96
|
+
if (!is_identically_zero(rhs[i])) {
|
|
97
|
+
if (!(Mode & UnitDiag)) rhs[i] /= cjLhs.coeff(i, i);
|
|
119
98
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
99
|
+
Index r = actualPanelWidth - k - 1; // remaining size
|
|
100
|
+
Index s = IsLower ? i + 1 : i - r;
|
|
101
|
+
if (r > 0) Map<Matrix<RhsScalar, Dynamic, 1> >(rhs + s, r) -= rhs[i] * cjLhs.col(i).segment(s, r);
|
|
102
|
+
}
|
|
124
103
|
}
|
|
125
|
-
Index r = IsLower ? size - endBlock : startBlock;
|
|
126
|
-
if (r > 0)
|
|
127
|
-
{
|
|
104
|
+
Index r = IsLower ? size - endBlock : startBlock; // remaining size
|
|
105
|
+
if (r > 0) {
|
|
128
106
|
// let's directly call the low level product function because:
|
|
129
107
|
// 1 - it is faster to compile
|
|
130
|
-
// 2 - it is
|
|
131
|
-
general_matrix_vector_product<Index,LhsScalar,LhsMapper,ColMajor,Conjugate,RhsScalar,RhsMapper,
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
rhs+endBlock, 1, RhsScalar(-1));
|
|
108
|
+
// 2 - it is slightly faster at runtime
|
|
109
|
+
general_matrix_vector_product<Index, LhsScalar, LhsMapper, ColMajor, Conjugate, RhsScalar, RhsMapper,
|
|
110
|
+
false>::run(r, actualPanelWidth,
|
|
111
|
+
LhsMapper(&lhs.coeffRef(endBlock, startBlock), lhsStride),
|
|
112
|
+
RhsMapper(rhs + startBlock, 1), rhs + endBlock, 1, RhsScalar(-1));
|
|
136
113
|
}
|
|
137
114
|
}
|
|
138
115
|
}
|
|
139
116
|
};
|
|
140
117
|
|
|
141
|
-
}
|
|
118
|
+
} // end namespace internal
|
|
142
119
|
|
|
143
|
-
}
|
|
120
|
+
} // end namespace Eigen
|
|
144
121
|
|
|
145
|
-
#endif
|
|
122
|
+
#endif // EIGEN_TRIANGULAR_SOLVER_VECTOR_H
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
// This file is part of Eigen, a lightweight C++ template library
|
|
2
|
+
// for linear algebra.
|
|
3
|
+
//
|
|
4
|
+
// Copyright (C) 2022, The Eigen authors.
|
|
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_CORE_UTIL_ASSERT_H
|
|
11
|
+
#define EIGEN_CORE_UTIL_ASSERT_H
|
|
12
|
+
|
|
13
|
+
// Eigen custom assert function.
|
|
14
|
+
//
|
|
15
|
+
// The combination of Eigen's relative includes and cassert's `assert` function
|
|
16
|
+
// (or any usage of the __FILE__ macro) can lead to ODR issues:
|
|
17
|
+
// a header included using different relative paths in two different TUs will
|
|
18
|
+
// have two different token-for-token definitions, since __FILE__ is expanded
|
|
19
|
+
// as an in-line string with different values. Normally this would be
|
|
20
|
+
// harmless - the linker would just choose one definition. However, it breaks
|
|
21
|
+
// with C++20 modules when functions in different modules have different
|
|
22
|
+
// definitions.
|
|
23
|
+
//
|
|
24
|
+
// To get around this, we need to use __builtin_FILE() when available, which is
|
|
25
|
+
// considered a single token, and thus satisfies the ODR.
|
|
26
|
+
|
|
27
|
+
// Only define eigen_plain_assert if we are debugging, and either
|
|
28
|
+
// - we are not compiling for GPU, or
|
|
29
|
+
// - gpu debugging is enabled.
|
|
30
|
+
#if !defined(EIGEN_NO_DEBUG) && (!defined(EIGEN_GPU_COMPILE_PHASE) || !defined(EIGEN_NO_DEBUG_GPU))
|
|
31
|
+
|
|
32
|
+
#include <cassert>
|
|
33
|
+
|
|
34
|
+
#ifndef EIGEN_USE_CUSTOM_PLAIN_ASSERT
|
|
35
|
+
// Disable new custom asserts by default for now.
|
|
36
|
+
#define EIGEN_USE_CUSTOM_PLAIN_ASSERT 0
|
|
37
|
+
#endif
|
|
38
|
+
|
|
39
|
+
#if EIGEN_USE_CUSTOM_PLAIN_ASSERT
|
|
40
|
+
|
|
41
|
+
#ifndef EIGEN_HAS_BUILTIN_FILE
|
|
42
|
+
// Clang can check if __builtin_FILE() is supported.
|
|
43
|
+
// GCC > 5, MSVC 2019 14.26 (1926) all have __builtin_FILE().
|
|
44
|
+
//
|
|
45
|
+
// For NVCC, it's more complicated. Through trial-and-error:
|
|
46
|
+
// - nvcc+gcc supports __builtin_FILE() on host, and on device after CUDA 11.
|
|
47
|
+
// - nvcc+msvc supports __builtin_FILE() only after CUDA 11.
|
|
48
|
+
#if (EIGEN_HAS_BUILTIN(__builtin_FILE) && (EIGEN_COMP_CLANG || !defined(EIGEN_CUDA_ARCH))) || \
|
|
49
|
+
(EIGEN_GNUC_STRICT_AT_LEAST(5, 0, 0) && (EIGEN_COMP_NVCC >= 110000 || !defined(EIGEN_CUDA_ARCH))) || \
|
|
50
|
+
(EIGEN_COMP_MSVC >= 1926 && (!EIGEN_COMP_NVCC || EIGEN_COMP_NVCC >= 110000))
|
|
51
|
+
#define EIGEN_HAS_BUILTIN_FILE 1
|
|
52
|
+
#else
|
|
53
|
+
#define EIGEN_HAS_BUILTIN_FILE 0
|
|
54
|
+
#endif
|
|
55
|
+
#endif // EIGEN_HAS_BUILTIN_FILE
|
|
56
|
+
|
|
57
|
+
#if EIGEN_HAS_BUILTIN_FILE
|
|
58
|
+
#define EIGEN_BUILTIN_FILE __builtin_FILE()
|
|
59
|
+
#define EIGEN_BUILTIN_LINE __builtin_LINE()
|
|
60
|
+
#else
|
|
61
|
+
// Default (potentially unsafe) values.
|
|
62
|
+
#define EIGEN_BUILTIN_FILE __FILE__
|
|
63
|
+
#define EIGEN_BUILTIN_LINE __LINE__
|
|
64
|
+
#endif
|
|
65
|
+
|
|
66
|
+
// Use __PRETTY_FUNCTION__ when available, since it is more descriptive, as
|
|
67
|
+
// __builtin_FUNCTION() only returns the undecorated function name.
|
|
68
|
+
// This should still be okay ODR-wise since it is a compiler-specific fixed
|
|
69
|
+
// value. Mixing compilers will likely lead to ODR violations anyways.
|
|
70
|
+
#if EIGEN_COMP_MSVC
|
|
71
|
+
#define EIGEN_BUILTIN_FUNCTION __FUNCSIG__
|
|
72
|
+
#elif EIGEN_COMP_GNUC
|
|
73
|
+
#define EIGEN_BUILTIN_FUNCTION __PRETTY_FUNCTION__
|
|
74
|
+
#else
|
|
75
|
+
#define EIGEN_BUILTIN_FUNCTION __func__
|
|
76
|
+
#endif
|
|
77
|
+
|
|
78
|
+
namespace Eigen {
|
|
79
|
+
namespace internal {
|
|
80
|
+
|
|
81
|
+
// Generic default assert handler.
|
|
82
|
+
template <typename EnableIf = void, typename... EmptyArgs>
|
|
83
|
+
struct assert_handler_impl {
|
|
84
|
+
EIGEN_DEVICE_FUNC EIGEN_DONT_INLINE static inline void run(const char* expression, const char* file, unsigned line,
|
|
85
|
+
const char* function) {
|
|
86
|
+
#ifdef EIGEN_GPU_COMPILE_PHASE
|
|
87
|
+
// GPU device code doesn't allow stderr or abort, so use printf and raise an
|
|
88
|
+
// illegal instruction exception to trigger a kernel failure.
|
|
89
|
+
#ifndef EIGEN_NO_IO
|
|
90
|
+
printf("Assertion failed at %s:%u in %s: %s\n", file == nullptr ? "<file>" : file, line,
|
|
91
|
+
function == nullptr ? "<function>" : function, expression);
|
|
92
|
+
#endif
|
|
93
|
+
__trap();
|
|
94
|
+
|
|
95
|
+
#else // EIGEN_GPU_COMPILE_PHASE
|
|
96
|
+
|
|
97
|
+
// Print to stderr and abort, as specified in <cassert>.
|
|
98
|
+
#ifndef EIGEN_NO_IO
|
|
99
|
+
fprintf(stderr, "Assertion failed at %s:%u in %s: %s\n", file == nullptr ? "<file>" : file, line,
|
|
100
|
+
function == nullptr ? "<function>" : function, expression);
|
|
101
|
+
#endif
|
|
102
|
+
std::abort();
|
|
103
|
+
|
|
104
|
+
#endif // EIGEN_GPU_COMPILE_PHASE
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
// Use POSIX __assert_fail handler when available.
|
|
109
|
+
//
|
|
110
|
+
// This allows us to integrate with systems that have custom handlers.
|
|
111
|
+
//
|
|
112
|
+
// NOTE: this handler is not always available on all POSIX systems (otherwise
|
|
113
|
+
// we could simply test for __unix__ or similar). The handler function name
|
|
114
|
+
// seems to depend on the specific toolchain implementation, and differs between
|
|
115
|
+
// compilers, platforms, OSes, etc. Hence, we detect support via SFINAE.
|
|
116
|
+
template <typename... EmptyArgs>
|
|
117
|
+
struct assert_handler_impl<void_t<decltype(__assert_fail((const char*)nullptr, // expression
|
|
118
|
+
(const char*)nullptr, // file
|
|
119
|
+
0, // line
|
|
120
|
+
(const char*)nullptr, // function
|
|
121
|
+
std::declval<EmptyArgs>()... // Empty substitution required
|
|
122
|
+
// for SFINAE.
|
|
123
|
+
))>,
|
|
124
|
+
EmptyArgs...> {
|
|
125
|
+
EIGEN_DEVICE_FUNC EIGEN_DONT_INLINE static inline void run(const char* expression, const char* file, unsigned line,
|
|
126
|
+
const char* function) {
|
|
127
|
+
// GCC requires this call to be dependent on the template parameters.
|
|
128
|
+
__assert_fail(expression, file, line, function, std::declval<EmptyArgs>()...);
|
|
129
|
+
}
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
EIGEN_DEVICE_FUNC EIGEN_DONT_INLINE inline void __assert_handler(const char* expression, const char* file,
|
|
133
|
+
unsigned line, const char* function) {
|
|
134
|
+
assert_handler_impl<>::run(expression, file, line, function);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
} // namespace internal
|
|
138
|
+
} // namespace Eigen
|
|
139
|
+
|
|
140
|
+
#define eigen_plain_assert(expression) \
|
|
141
|
+
(EIGEN_PREDICT_FALSE(!(expression)) ? Eigen::internal::__assert_handler(#expression, EIGEN_BUILTIN_FILE, \
|
|
142
|
+
EIGEN_BUILTIN_LINE, EIGEN_BUILTIN_FUNCTION) \
|
|
143
|
+
: (void)0)
|
|
144
|
+
|
|
145
|
+
#else // EIGEN_USE_CUSTOM_PLAIN_ASSERT
|
|
146
|
+
|
|
147
|
+
// Use regular assert.
|
|
148
|
+
#define eigen_plain_assert(condition) assert(condition)
|
|
149
|
+
|
|
150
|
+
#endif // EIGEN_USE_CUSTOM_PLAIN_ASSERT
|
|
151
|
+
|
|
152
|
+
#else // EIGEN_NO_DEBUG
|
|
153
|
+
|
|
154
|
+
#define eigen_plain_assert(condition) ((void)0)
|
|
155
|
+
|
|
156
|
+
#endif // EIGEN_NO_DEBUG
|
|
157
|
+
|
|
158
|
+
#endif // EIGEN_CORE_UTIL_ASSERT_H
|