@smake/eigen 1.1.0 → 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.
Files changed (431) hide show
  1. package/README.md +1 -1
  2. package/eigen/Eigen/AccelerateSupport +52 -0
  3. package/eigen/Eigen/Cholesky +18 -20
  4. package/eigen/Eigen/CholmodSupport +28 -28
  5. package/eigen/Eigen/Core +187 -120
  6. package/eigen/Eigen/Eigenvalues +16 -13
  7. package/eigen/Eigen/Geometry +18 -18
  8. package/eigen/Eigen/Householder +9 -7
  9. package/eigen/Eigen/IterativeLinearSolvers +8 -4
  10. package/eigen/Eigen/Jacobi +14 -13
  11. package/eigen/Eigen/KLUSupport +23 -21
  12. package/eigen/Eigen/LU +15 -16
  13. package/eigen/Eigen/MetisSupport +12 -12
  14. package/eigen/Eigen/OrderingMethods +54 -51
  15. package/eigen/Eigen/PaStiXSupport +23 -21
  16. package/eigen/Eigen/PardisoSupport +17 -14
  17. package/eigen/Eigen/QR +18 -20
  18. package/eigen/Eigen/QtAlignedMalloc +5 -12
  19. package/eigen/Eigen/SPQRSupport +21 -14
  20. package/eigen/Eigen/SVD +23 -17
  21. package/eigen/Eigen/Sparse +1 -2
  22. package/eigen/Eigen/SparseCholesky +18 -15
  23. package/eigen/Eigen/SparseCore +18 -17
  24. package/eigen/Eigen/SparseLU +9 -9
  25. package/eigen/Eigen/SparseQR +16 -14
  26. package/eigen/Eigen/StdDeque +5 -2
  27. package/eigen/Eigen/StdList +5 -2
  28. package/eigen/Eigen/StdVector +5 -2
  29. package/eigen/Eigen/SuperLUSupport +30 -24
  30. package/eigen/Eigen/ThreadPool +80 -0
  31. package/eigen/Eigen/UmfPackSupport +19 -17
  32. package/eigen/Eigen/Version +14 -0
  33. package/eigen/Eigen/src/AccelerateSupport/AccelerateSupport.h +423 -0
  34. package/eigen/Eigen/src/AccelerateSupport/InternalHeaderCheck.h +3 -0
  35. package/eigen/Eigen/src/Cholesky/InternalHeaderCheck.h +3 -0
  36. package/eigen/Eigen/src/Cholesky/LDLT.h +366 -405
  37. package/eigen/Eigen/src/Cholesky/LLT.h +323 -367
  38. package/eigen/Eigen/src/Cholesky/LLT_LAPACKE.h +81 -56
  39. package/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +585 -529
  40. package/eigen/Eigen/src/CholmodSupport/InternalHeaderCheck.h +3 -0
  41. package/eigen/Eigen/src/Core/ArithmeticSequence.h +143 -317
  42. package/eigen/Eigen/src/Core/Array.h +329 -370
  43. package/eigen/Eigen/src/Core/ArrayBase.h +190 -203
  44. package/eigen/Eigen/src/Core/ArrayWrapper.h +126 -170
  45. package/eigen/Eigen/src/Core/Assign.h +30 -40
  46. package/eigen/Eigen/src/Core/AssignEvaluator.h +651 -604
  47. package/eigen/Eigen/src/Core/Assign_MKL.h +125 -120
  48. package/eigen/Eigen/src/Core/BandMatrix.h +267 -282
  49. package/eigen/Eigen/src/Core/Block.h +371 -390
  50. package/eigen/Eigen/src/Core/CommaInitializer.h +85 -100
  51. package/eigen/Eigen/src/Core/ConditionEstimator.h +51 -53
  52. package/eigen/Eigen/src/Core/CoreEvaluators.h +1214 -937
  53. package/eigen/Eigen/src/Core/CoreIterators.h +72 -63
  54. package/eigen/Eigen/src/Core/CwiseBinaryOp.h +112 -129
  55. package/eigen/Eigen/src/Core/CwiseNullaryOp.h +676 -702
  56. package/eigen/Eigen/src/Core/CwiseTernaryOp.h +77 -103
  57. package/eigen/Eigen/src/Core/CwiseUnaryOp.h +55 -67
  58. package/eigen/Eigen/src/Core/CwiseUnaryView.h +127 -92
  59. package/eigen/Eigen/src/Core/DenseBase.h +630 -658
  60. package/eigen/Eigen/src/Core/DenseCoeffsBase.h +511 -628
  61. package/eigen/Eigen/src/Core/DenseStorage.h +511 -590
  62. package/eigen/Eigen/src/Core/DeviceWrapper.h +153 -0
  63. package/eigen/Eigen/src/Core/Diagonal.h +168 -207
  64. package/eigen/Eigen/src/Core/DiagonalMatrix.h +346 -317
  65. package/eigen/Eigen/src/Core/DiagonalProduct.h +12 -10
  66. package/eigen/Eigen/src/Core/Dot.h +167 -217
  67. package/eigen/Eigen/src/Core/EigenBase.h +74 -85
  68. package/eigen/Eigen/src/Core/Fill.h +138 -0
  69. package/eigen/Eigen/src/Core/FindCoeff.h +464 -0
  70. package/eigen/Eigen/src/Core/ForceAlignedAccess.h +90 -113
  71. package/eigen/Eigen/src/Core/Fuzzy.h +82 -105
  72. package/eigen/Eigen/src/Core/GeneralProduct.h +315 -261
  73. package/eigen/Eigen/src/Core/GenericPacketMath.h +1182 -520
  74. package/eigen/Eigen/src/Core/GlobalFunctions.h +193 -157
  75. package/eigen/Eigen/src/Core/IO.h +131 -156
  76. package/eigen/Eigen/src/Core/IndexedView.h +209 -125
  77. package/eigen/Eigen/src/Core/InnerProduct.h +260 -0
  78. package/eigen/Eigen/src/Core/InternalHeaderCheck.h +3 -0
  79. package/eigen/Eigen/src/Core/Inverse.h +50 -59
  80. package/eigen/Eigen/src/Core/Map.h +123 -141
  81. package/eigen/Eigen/src/Core/MapBase.h +255 -282
  82. package/eigen/Eigen/src/Core/MathFunctions.h +1247 -1201
  83. package/eigen/Eigen/src/Core/MathFunctionsImpl.h +162 -99
  84. package/eigen/Eigen/src/Core/Matrix.h +463 -494
  85. package/eigen/Eigen/src/Core/MatrixBase.h +468 -470
  86. package/eigen/Eigen/src/Core/NestByValue.h +58 -52
  87. package/eigen/Eigen/src/Core/NoAlias.h +79 -86
  88. package/eigen/Eigen/src/Core/NumTraits.h +206 -206
  89. package/eigen/Eigen/src/Core/PartialReduxEvaluator.h +163 -142
  90. package/eigen/Eigen/src/Core/PermutationMatrix.h +461 -511
  91. package/eigen/Eigen/src/Core/PlainObjectBase.h +858 -972
  92. package/eigen/Eigen/src/Core/Product.h +246 -130
  93. package/eigen/Eigen/src/Core/ProductEvaluators.h +779 -671
  94. package/eigen/Eigen/src/Core/Random.h +153 -164
  95. package/eigen/Eigen/src/Core/RandomImpl.h +262 -0
  96. package/eigen/Eigen/src/Core/RealView.h +250 -0
  97. package/eigen/Eigen/src/Core/Redux.h +334 -314
  98. package/eigen/Eigen/src/Core/Ref.h +259 -257
  99. package/eigen/Eigen/src/Core/Replicate.h +92 -104
  100. package/eigen/Eigen/src/Core/Reshaped.h +215 -271
  101. package/eigen/Eigen/src/Core/ReturnByValue.h +47 -55
  102. package/eigen/Eigen/src/Core/Reverse.h +133 -148
  103. package/eigen/Eigen/src/Core/Select.h +68 -140
  104. package/eigen/Eigen/src/Core/SelfAdjointView.h +254 -290
  105. package/eigen/Eigen/src/Core/SelfCwiseBinaryOp.h +23 -20
  106. package/eigen/Eigen/src/Core/SkewSymmetricMatrix3.h +382 -0
  107. package/eigen/Eigen/src/Core/Solve.h +88 -102
  108. package/eigen/Eigen/src/Core/SolveTriangular.h +126 -124
  109. package/eigen/Eigen/src/Core/SolverBase.h +132 -133
  110. package/eigen/Eigen/src/Core/StableNorm.h +113 -147
  111. package/eigen/Eigen/src/Core/StlIterators.h +404 -248
  112. package/eigen/Eigen/src/Core/Stride.h +90 -92
  113. package/eigen/Eigen/src/Core/Swap.h +70 -39
  114. package/eigen/Eigen/src/Core/Transpose.h +258 -295
  115. package/eigen/Eigen/src/Core/Transpositions.h +270 -333
  116. package/eigen/Eigen/src/Core/TriangularMatrix.h +642 -743
  117. package/eigen/Eigen/src/Core/VectorBlock.h +59 -72
  118. package/eigen/Eigen/src/Core/VectorwiseOp.h +653 -704
  119. package/eigen/Eigen/src/Core/Visitor.h +464 -308
  120. package/eigen/Eigen/src/Core/arch/AVX/Complex.h +380 -187
  121. package/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +65 -163
  122. package/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +2145 -638
  123. package/eigen/Eigen/src/Core/arch/AVX/Reductions.h +353 -0
  124. package/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +253 -60
  125. package/eigen/Eigen/src/Core/arch/AVX512/Complex.h +278 -228
  126. package/eigen/Eigen/src/Core/arch/AVX512/GemmKernel.h +1245 -0
  127. package/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +48 -269
  128. package/eigen/Eigen/src/Core/arch/AVX512/MathFunctionsFP16.h +75 -0
  129. package/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +1597 -754
  130. package/eigen/Eigen/src/Core/arch/AVX512/PacketMathFP16.h +1413 -0
  131. package/eigen/Eigen/src/Core/arch/AVX512/Reductions.h +297 -0
  132. package/eigen/Eigen/src/Core/arch/AVX512/TrsmKernel.h +1167 -0
  133. package/eigen/Eigen/src/Core/arch/AVX512/TrsmUnrolls.inc +1219 -0
  134. package/eigen/Eigen/src/Core/arch/AVX512/TypeCasting.h +229 -41
  135. package/eigen/Eigen/src/Core/arch/AVX512/TypeCastingFP16.h +130 -0
  136. package/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +420 -184
  137. package/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +40 -49
  138. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +2962 -2213
  139. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +196 -212
  140. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +713 -441
  141. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMAbfloat16.h +742 -0
  142. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixVectorProduct.inc +2818 -0
  143. package/eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h +2380 -1362
  144. package/eigen/Eigen/src/Core/arch/AltiVec/TypeCasting.h +153 -0
  145. package/eigen/Eigen/src/Core/arch/Default/BFloat16.h +390 -224
  146. package/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +78 -67
  147. package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +1784 -799
  148. package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +167 -50
  149. package/eigen/Eigen/src/Core/arch/Default/Half.h +528 -379
  150. package/eigen/Eigen/src/Core/arch/Default/Settings.h +10 -12
  151. package/eigen/Eigen/src/Core/arch/GPU/Complex.h +244 -0
  152. package/eigen/Eigen/src/Core/arch/GPU/MathFunctions.h +41 -40
  153. package/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +550 -523
  154. package/eigen/Eigen/src/Core/arch/GPU/Tuple.h +268 -0
  155. package/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +27 -30
  156. package/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +8 -8
  157. package/eigen/Eigen/src/Core/arch/HVX/PacketMath.h +1088 -0
  158. package/eigen/Eigen/src/Core/arch/LSX/Complex.h +520 -0
  159. package/eigen/Eigen/src/Core/arch/LSX/GeneralBlockPanelKernel.h +23 -0
  160. package/eigen/Eigen/src/Core/arch/LSX/MathFunctions.h +43 -0
  161. package/eigen/Eigen/src/Core/arch/LSX/PacketMath.h +2866 -0
  162. package/eigen/Eigen/src/Core/arch/LSX/TypeCasting.h +526 -0
  163. package/eigen/Eigen/src/Core/arch/MSA/Complex.h +54 -82
  164. package/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +84 -92
  165. package/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +51 -47
  166. package/eigen/Eigen/src/Core/arch/NEON/Complex.h +454 -306
  167. package/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +175 -115
  168. package/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +23 -30
  169. package/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +4366 -2857
  170. package/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +616 -393
  171. package/eigen/Eigen/src/Core/arch/NEON/UnaryFunctors.h +57 -0
  172. package/eigen/Eigen/src/Core/arch/SSE/Complex.h +350 -198
  173. package/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +38 -149
  174. package/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +1791 -912
  175. package/eigen/Eigen/src/Core/arch/SSE/Reductions.h +324 -0
  176. package/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +128 -40
  177. package/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +10 -6
  178. package/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +156 -234
  179. package/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +6 -3
  180. package/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +27 -32
  181. package/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +119 -117
  182. package/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +325 -419
  183. package/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +15 -17
  184. package/eigen/Eigen/src/Core/arch/ZVector/Complex.h +325 -181
  185. package/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +94 -83
  186. package/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +811 -458
  187. package/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +121 -124
  188. package/eigen/Eigen/src/Core/functors/BinaryFunctors.h +576 -370
  189. package/eigen/Eigen/src/Core/functors/NullaryFunctors.h +194 -109
  190. package/eigen/Eigen/src/Core/functors/StlFunctors.h +95 -112
  191. package/eigen/Eigen/src/Core/functors/TernaryFunctors.h +34 -7
  192. package/eigen/Eigen/src/Core/functors/UnaryFunctors.h +1038 -749
  193. package/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +1883 -1375
  194. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +312 -370
  195. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +189 -176
  196. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +84 -81
  197. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +154 -73
  198. package/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +292 -337
  199. package/eigen/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +80 -77
  200. package/eigen/Eigen/src/Core/products/Parallelizer.h +207 -105
  201. package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +327 -388
  202. package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +206 -224
  203. package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +138 -147
  204. package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +58 -61
  205. package/eigen/Eigen/src/Core/products/SelfadjointProduct.h +71 -71
  206. package/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h +48 -47
  207. package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h +294 -369
  208. package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +246 -238
  209. package/eigen/Eigen/src/Core/products/TriangularMatrixVector.h +244 -247
  210. package/eigen/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +212 -192
  211. package/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h +328 -277
  212. package/eigen/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +108 -109
  213. package/eigen/Eigen/src/Core/products/TriangularSolverVector.h +68 -94
  214. package/eigen/Eigen/src/Core/util/Assert.h +158 -0
  215. package/eigen/Eigen/src/Core/util/BlasUtil.h +342 -303
  216. package/eigen/Eigen/src/Core/util/ConfigureVectorization.h +348 -317
  217. package/eigen/Eigen/src/Core/util/Constants.h +297 -262
  218. package/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +130 -90
  219. package/eigen/Eigen/src/Core/util/EmulateArray.h +270 -0
  220. package/eigen/Eigen/src/Core/util/ForwardDeclarations.h +449 -247
  221. package/eigen/Eigen/src/Core/util/GpuHipCudaDefines.inc +101 -0
  222. package/eigen/Eigen/src/Core/util/GpuHipCudaUndefines.inc +45 -0
  223. package/eigen/Eigen/src/Core/util/IndexedViewHelper.h +417 -116
  224. package/eigen/Eigen/src/Core/util/IntegralConstant.h +211 -204
  225. package/eigen/Eigen/src/Core/util/MKL_support.h +39 -37
  226. package/eigen/Eigen/src/Core/util/Macros.h +655 -773
  227. package/eigen/Eigen/src/Core/util/MaxSizeVector.h +139 -0
  228. package/eigen/Eigen/src/Core/util/Memory.h +970 -748
  229. package/eigen/Eigen/src/Core/util/Meta.h +581 -633
  230. package/eigen/Eigen/src/Core/util/MoreMeta.h +638 -0
  231. package/eigen/Eigen/src/Core/util/ReenableStupidWarnings.h +32 -19
  232. package/eigen/Eigen/src/Core/util/ReshapedHelper.h +17 -17
  233. package/eigen/Eigen/src/Core/util/Serializer.h +209 -0
  234. package/eigen/Eigen/src/Core/util/StaticAssert.h +50 -166
  235. package/eigen/Eigen/src/Core/util/SymbolicIndex.h +377 -225
  236. package/eigen/Eigen/src/Core/util/XprHelper.h +784 -547
  237. package/eigen/Eigen/src/Eigenvalues/ComplexEigenSolver.h +246 -277
  238. package/eigen/Eigen/src/Eigenvalues/ComplexSchur.h +299 -319
  239. package/eigen/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +52 -48
  240. package/eigen/Eigen/src/Eigenvalues/EigenSolver.h +413 -456
  241. package/eigen/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +309 -325
  242. package/eigen/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +157 -171
  243. package/eigen/Eigen/src/Eigenvalues/HessenbergDecomposition.h +292 -310
  244. package/eigen/Eigen/src/Eigenvalues/InternalHeaderCheck.h +3 -0
  245. package/eigen/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +89 -105
  246. package/eigen/Eigen/src/Eigenvalues/RealQZ.h +537 -607
  247. package/eigen/Eigen/src/Eigenvalues/RealSchur.h +342 -381
  248. package/eigen/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +41 -35
  249. package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +541 -595
  250. package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +47 -44
  251. package/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +430 -462
  252. package/eigen/Eigen/src/Geometry/AlignedBox.h +226 -227
  253. package/eigen/Eigen/src/Geometry/AngleAxis.h +131 -133
  254. package/eigen/Eigen/src/Geometry/EulerAngles.h +163 -74
  255. package/eigen/Eigen/src/Geometry/Homogeneous.h +285 -333
  256. package/eigen/Eigen/src/Geometry/Hyperplane.h +151 -160
  257. package/eigen/Eigen/src/Geometry/InternalHeaderCheck.h +3 -0
  258. package/eigen/Eigen/src/Geometry/OrthoMethods.h +168 -146
  259. package/eigen/Eigen/src/Geometry/ParametrizedLine.h +127 -127
  260. package/eigen/Eigen/src/Geometry/Quaternion.h +566 -506
  261. package/eigen/Eigen/src/Geometry/Rotation2D.h +107 -105
  262. package/eigen/Eigen/src/Geometry/RotationBase.h +148 -145
  263. package/eigen/Eigen/src/Geometry/Scaling.h +113 -106
  264. package/eigen/Eigen/src/Geometry/Transform.h +858 -936
  265. package/eigen/Eigen/src/Geometry/Translation.h +94 -92
  266. package/eigen/Eigen/src/Geometry/Umeyama.h +79 -84
  267. package/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +90 -104
  268. package/eigen/Eigen/src/Householder/BlockHouseholder.h +51 -46
  269. package/eigen/Eigen/src/Householder/Householder.h +102 -124
  270. package/eigen/Eigen/src/Householder/HouseholderSequence.h +412 -453
  271. package/eigen/Eigen/src/Householder/InternalHeaderCheck.h +3 -0
  272. package/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +149 -162
  273. package/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +124 -119
  274. package/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +92 -104
  275. package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +251 -243
  276. package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +224 -228
  277. package/eigen/Eigen/src/IterativeLinearSolvers/InternalHeaderCheck.h +3 -0
  278. package/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +178 -227
  279. package/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +79 -84
  280. package/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +54 -60
  281. package/eigen/Eigen/src/Jacobi/InternalHeaderCheck.h +3 -0
  282. package/eigen/Eigen/src/Jacobi/Jacobi.h +252 -308
  283. package/eigen/Eigen/src/KLUSupport/InternalHeaderCheck.h +3 -0
  284. package/eigen/Eigen/src/KLUSupport/KLUSupport.h +208 -227
  285. package/eigen/Eigen/src/LU/Determinant.h +50 -69
  286. package/eigen/Eigen/src/LU/FullPivLU.h +545 -596
  287. package/eigen/Eigen/src/LU/InternalHeaderCheck.h +3 -0
  288. package/eigen/Eigen/src/LU/InverseImpl.h +206 -285
  289. package/eigen/Eigen/src/LU/PartialPivLU.h +390 -428
  290. package/eigen/Eigen/src/LU/PartialPivLU_LAPACKE.h +54 -40
  291. package/eigen/Eigen/src/LU/arch/InverseSize4.h +72 -70
  292. package/eigen/Eigen/src/MetisSupport/InternalHeaderCheck.h +3 -0
  293. package/eigen/Eigen/src/MetisSupport/MetisSupport.h +81 -93
  294. package/eigen/Eigen/src/OrderingMethods/Amd.h +243 -265
  295. package/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +831 -1004
  296. package/eigen/Eigen/src/OrderingMethods/InternalHeaderCheck.h +3 -0
  297. package/eigen/Eigen/src/OrderingMethods/Ordering.h +112 -119
  298. package/eigen/Eigen/src/PaStiXSupport/InternalHeaderCheck.h +3 -0
  299. package/eigen/Eigen/src/PaStiXSupport/PaStiXSupport.h +524 -570
  300. package/eigen/Eigen/src/PardisoSupport/InternalHeaderCheck.h +3 -0
  301. package/eigen/Eigen/src/PardisoSupport/PardisoSupport.h +385 -430
  302. package/eigen/Eigen/src/QR/ColPivHouseholderQR.h +479 -479
  303. package/eigen/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +120 -56
  304. package/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +166 -153
  305. package/eigen/Eigen/src/QR/FullPivHouseholderQR.h +495 -475
  306. package/eigen/Eigen/src/QR/HouseholderQR.h +394 -285
  307. package/eigen/Eigen/src/QR/HouseholderQR_LAPACKE.h +32 -23
  308. package/eigen/Eigen/src/QR/InternalHeaderCheck.h +3 -0
  309. package/eigen/Eigen/src/SPQRSupport/InternalHeaderCheck.h +3 -0
  310. package/eigen/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +244 -264
  311. package/eigen/Eigen/src/SVD/BDCSVD.h +817 -713
  312. package/eigen/Eigen/src/SVD/BDCSVD_LAPACKE.h +174 -0
  313. package/eigen/Eigen/src/SVD/InternalHeaderCheck.h +3 -0
  314. package/eigen/Eigen/src/SVD/JacobiSVD.h +577 -543
  315. package/eigen/Eigen/src/SVD/JacobiSVD_LAPACKE.h +85 -49
  316. package/eigen/Eigen/src/SVD/SVDBase.h +242 -182
  317. package/eigen/Eigen/src/SVD/UpperBidiagonalization.h +200 -235
  318. package/eigen/Eigen/src/SparseCholesky/InternalHeaderCheck.h +3 -0
  319. package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +765 -594
  320. package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +308 -94
  321. package/eigen/Eigen/src/SparseCore/AmbiVector.h +202 -251
  322. package/eigen/Eigen/src/SparseCore/CompressedStorage.h +184 -252
  323. package/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +134 -178
  324. package/eigen/Eigen/src/SparseCore/InternalHeaderCheck.h +3 -0
  325. package/eigen/Eigen/src/SparseCore/SparseAssign.h +149 -140
  326. package/eigen/Eigen/src/SparseCore/SparseBlock.h +403 -440
  327. package/eigen/Eigen/src/SparseCore/SparseColEtree.h +100 -112
  328. package/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +525 -303
  329. package/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +555 -339
  330. package/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +100 -108
  331. package/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +169 -197
  332. package/eigen/Eigen/src/SparseCore/SparseDiagonalProduct.h +71 -71
  333. package/eigen/Eigen/src/SparseCore/SparseDot.h +49 -47
  334. package/eigen/Eigen/src/SparseCore/SparseFuzzy.h +13 -11
  335. package/eigen/Eigen/src/SparseCore/SparseMap.h +243 -253
  336. package/eigen/Eigen/src/SparseCore/SparseMatrix.h +1603 -1245
  337. package/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +403 -350
  338. package/eigen/Eigen/src/SparseCore/SparsePermutation.h +186 -115
  339. package/eigen/Eigen/src/SparseCore/SparseProduct.h +94 -97
  340. package/eigen/Eigen/src/SparseCore/SparseRedux.h +22 -24
  341. package/eigen/Eigen/src/SparseCore/SparseRef.h +268 -295
  342. package/eigen/Eigen/src/SparseCore/SparseSelfAdjointView.h +370 -416
  343. package/eigen/Eigen/src/SparseCore/SparseSolverBase.h +78 -87
  344. package/eigen/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +81 -95
  345. package/eigen/Eigen/src/SparseCore/SparseTranspose.h +62 -71
  346. package/eigen/Eigen/src/SparseCore/SparseTriangularView.h +132 -144
  347. package/eigen/Eigen/src/SparseCore/SparseUtil.h +138 -115
  348. package/eigen/Eigen/src/SparseCore/SparseVector.h +426 -372
  349. package/eigen/Eigen/src/SparseCore/SparseView.h +164 -193
  350. package/eigen/Eigen/src/SparseCore/TriangularSolver.h +129 -170
  351. package/eigen/Eigen/src/SparseLU/InternalHeaderCheck.h +3 -0
  352. package/eigen/Eigen/src/SparseLU/SparseLU.h +756 -710
  353. package/eigen/Eigen/src/SparseLU/SparseLUImpl.h +61 -48
  354. package/eigen/Eigen/src/SparseLU/SparseLU_Memory.h +102 -118
  355. package/eigen/Eigen/src/SparseLU/SparseLU_Structs.h +38 -35
  356. package/eigen/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +245 -301
  357. package/eigen/Eigen/src/SparseLU/SparseLU_Utils.h +44 -49
  358. package/eigen/Eigen/src/SparseLU/SparseLU_column_bmod.h +104 -108
  359. package/eigen/Eigen/src/SparseLU/SparseLU_column_dfs.h +89 -100
  360. package/eigen/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +57 -58
  361. package/eigen/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +43 -55
  362. package/eigen/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +74 -71
  363. package/eigen/Eigen/src/SparseLU/SparseLU_panel_bmod.h +124 -132
  364. package/eigen/Eigen/src/SparseLU/SparseLU_panel_dfs.h +136 -159
  365. package/eigen/Eigen/src/SparseLU/SparseLU_pivotL.h +51 -52
  366. package/eigen/Eigen/src/SparseLU/SparseLU_pruneL.h +67 -73
  367. package/eigen/Eigen/src/SparseLU/SparseLU_relax_snode.h +24 -26
  368. package/eigen/Eigen/src/SparseQR/InternalHeaderCheck.h +3 -0
  369. package/eigen/Eigen/src/SparseQR/SparseQR.h +450 -502
  370. package/eigen/Eigen/src/StlSupport/StdDeque.h +28 -93
  371. package/eigen/Eigen/src/StlSupport/StdList.h +28 -84
  372. package/eigen/Eigen/src/StlSupport/StdVector.h +28 -108
  373. package/eigen/Eigen/src/StlSupport/details.h +48 -50
  374. package/eigen/Eigen/src/SuperLUSupport/InternalHeaderCheck.h +3 -0
  375. package/eigen/Eigen/src/SuperLUSupport/SuperLUSupport.h +634 -730
  376. package/eigen/Eigen/src/ThreadPool/Barrier.h +70 -0
  377. package/eigen/Eigen/src/ThreadPool/CoreThreadPoolDevice.h +336 -0
  378. package/eigen/Eigen/src/ThreadPool/EventCount.h +241 -0
  379. package/eigen/Eigen/src/ThreadPool/ForkJoin.h +140 -0
  380. package/eigen/Eigen/src/ThreadPool/InternalHeaderCheck.h +4 -0
  381. package/eigen/Eigen/src/ThreadPool/NonBlockingThreadPool.h +587 -0
  382. package/eigen/Eigen/src/ThreadPool/RunQueue.h +230 -0
  383. package/eigen/Eigen/src/ThreadPool/ThreadCancel.h +21 -0
  384. package/eigen/Eigen/src/ThreadPool/ThreadEnvironment.h +43 -0
  385. package/eigen/Eigen/src/ThreadPool/ThreadLocal.h +289 -0
  386. package/eigen/Eigen/src/ThreadPool/ThreadPoolInterface.h +50 -0
  387. package/eigen/Eigen/src/ThreadPool/ThreadYield.h +16 -0
  388. package/eigen/Eigen/src/UmfPackSupport/InternalHeaderCheck.h +3 -0
  389. package/eigen/Eigen/src/UmfPackSupport/UmfPackSupport.h +428 -464
  390. package/eigen/Eigen/src/misc/Image.h +41 -43
  391. package/eigen/Eigen/src/misc/InternalHeaderCheck.h +3 -0
  392. package/eigen/Eigen/src/misc/Kernel.h +39 -41
  393. package/eigen/Eigen/src/misc/RealSvd2x2.h +19 -21
  394. package/eigen/Eigen/src/misc/blas.h +83 -426
  395. package/eigen/Eigen/src/misc/lapacke.h +9972 -16179
  396. package/eigen/Eigen/src/misc/lapacke_helpers.h +163 -0
  397. package/eigen/Eigen/src/misc/lapacke_mangling.h +4 -5
  398. package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.inc +344 -0
  399. package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.inc +544 -0
  400. package/eigen/Eigen/src/plugins/{BlockMethods.h → BlockMethods.inc} +434 -506
  401. package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.inc +116 -0
  402. package/eigen/Eigen/src/plugins/{CommonCwiseUnaryOps.h → CommonCwiseUnaryOps.inc} +58 -68
  403. package/eigen/Eigen/src/plugins/IndexedViewMethods.inc +192 -0
  404. package/eigen/Eigen/src/plugins/InternalHeaderCheck.inc +3 -0
  405. package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.inc +331 -0
  406. package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.inc +118 -0
  407. package/eigen/Eigen/src/plugins/ReshapedMethods.inc +133 -0
  408. package/package.json +1 -1
  409. package/eigen/COPYING.APACHE +0 -203
  410. package/eigen/COPYING.BSD +0 -26
  411. package/eigen/COPYING.GPL +0 -674
  412. package/eigen/COPYING.LGPL +0 -502
  413. package/eigen/COPYING.MINPACK +0 -51
  414. package/eigen/COPYING.MPL2 +0 -373
  415. package/eigen/COPYING.README +0 -18
  416. package/eigen/Eigen/src/Core/BooleanRedux.h +0 -162
  417. package/eigen/Eigen/src/Core/arch/CUDA/Complex.h +0 -258
  418. package/eigen/Eigen/src/Core/arch/Default/TypeCasting.h +0 -120
  419. package/eigen/Eigen/src/Core/arch/SYCL/SyclMemoryModel.h +0 -694
  420. package/eigen/Eigen/src/Core/util/NonMPL2.h +0 -3
  421. package/eigen/Eigen/src/SparseCore/MappedSparseMatrix.h +0 -67
  422. package/eigen/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +0 -280
  423. package/eigen/Eigen/src/misc/lapack.h +0 -152
  424. package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h +0 -358
  425. package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +0 -696
  426. package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.h +0 -115
  427. package/eigen/Eigen/src/plugins/IndexedViewMethods.h +0 -262
  428. package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +0 -152
  429. package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +0 -95
  430. package/eigen/Eigen/src/plugins/ReshapedMethods.h +0 -149
  431. package/eigen/README.md +0 -5
@@ -10,159 +10,158 @@
10
10
  #ifndef EIGEN_SOLVERBASE_H
11
11
  #define EIGEN_SOLVERBASE_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 Derived>
20
+ template <typename Derived>
18
21
  struct solve_assertion {
19
- template<bool Transpose_, typename Rhs>
20
- static void run(const Derived& solver, const Rhs& b) { solver.template _check_solve_assertion<Transpose_>(b); }
22
+ template <bool Transpose_, typename Rhs>
23
+ static void run(const Derived& solver, const Rhs& b) {
24
+ solver.template _check_solve_assertion<Transpose_>(b);
25
+ }
21
26
  };
22
27
 
23
- template<typename Derived>
24
- struct solve_assertion<Transpose<Derived> >
25
- {
26
- typedef Transpose<Derived> type;
28
+ template <typename Derived>
29
+ struct solve_assertion<Transpose<Derived>> {
30
+ typedef Transpose<Derived> type;
27
31
 
28
- template<bool Transpose_, typename Rhs>
29
- static void run(const type& transpose, const Rhs& b)
30
- {
31
- internal::solve_assertion<typename internal::remove_all<Derived>::type>::template run<true>(transpose.nestedExpression(), b);
32
- }
32
+ template <bool Transpose_, typename Rhs>
33
+ static void run(const type& transpose, const Rhs& b) {
34
+ internal::solve_assertion<internal::remove_all_t<Derived>>::template run<true>(transpose.nestedExpression(), b);
35
+ }
33
36
  };
34
37
 
35
- template<typename Scalar, typename Derived>
36
- struct solve_assertion<CwiseUnaryOp<Eigen::internal::scalar_conjugate_op<Scalar>, const Transpose<Derived> > >
37
- {
38
- typedef CwiseUnaryOp<Eigen::internal::scalar_conjugate_op<Scalar>, const Transpose<Derived> > type;
38
+ template <typename Scalar, typename Derived>
39
+ struct solve_assertion<CwiseUnaryOp<Eigen::internal::scalar_conjugate_op<Scalar>, const Transpose<Derived>>> {
40
+ typedef CwiseUnaryOp<Eigen::internal::scalar_conjugate_op<Scalar>, const Transpose<Derived>> type;
39
41
 
40
- template<bool Transpose_, typename Rhs>
41
- static void run(const type& adjoint, const Rhs& b)
42
- {
43
- internal::solve_assertion<typename internal::remove_all<Transpose<Derived> >::type>::template run<true>(adjoint.nestedExpression(), b);
44
- }
42
+ template <bool Transpose_, typename Rhs>
43
+ static void run(const type& adjoint, const Rhs& b) {
44
+ internal::solve_assertion<internal::remove_all_t<Transpose<Derived>>>::template run<true>(
45
+ adjoint.nestedExpression(), b);
46
+ }
45
47
  };
46
- } // end namespace internal
48
+ } // end namespace internal
47
49
 
48
50
  /** \class SolverBase
49
- * \brief A base class for matrix decomposition and solvers
50
- *
51
- * \tparam Derived the actual type of the decomposition/solver.
52
- *
53
- * Any matrix decomposition inheriting this base class provide the following API:
54
- *
55
- * \code
56
- * MatrixType A, b, x;
57
- * DecompositionType dec(A);
58
- * x = dec.solve(b); // solve A * x = b
59
- * x = dec.transpose().solve(b); // solve A^T * x = b
60
- * x = dec.adjoint().solve(b); // solve A' * x = b
61
- * \endcode
62
- *
63
- * \warning Currently, any other usage of transpose() and adjoint() are not supported and will produce compilation errors.
64
- *
65
- * \sa class PartialPivLU, class FullPivLU, class HouseholderQR, class ColPivHouseholderQR, class FullPivHouseholderQR, class CompleteOrthogonalDecomposition, class LLT, class LDLT, class SVDBase
66
- */
67
- template<typename Derived>
68
- class SolverBase : public EigenBase<Derived>
69
- {
70
- public:
71
-
72
- typedef EigenBase<Derived> Base;
73
- typedef typename internal::traits<Derived>::Scalar Scalar;
74
- typedef Scalar CoeffReturnType;
75
-
76
- template<typename Derived_>
77
- friend struct internal::solve_assertion;
78
-
79
- enum {
80
- RowsAtCompileTime = internal::traits<Derived>::RowsAtCompileTime,
81
- ColsAtCompileTime = internal::traits<Derived>::ColsAtCompileTime,
82
- SizeAtCompileTime = (internal::size_at_compile_time<internal::traits<Derived>::RowsAtCompileTime,
83
- internal::traits<Derived>::ColsAtCompileTime>::ret),
84
- MaxRowsAtCompileTime = internal::traits<Derived>::MaxRowsAtCompileTime,
85
- MaxColsAtCompileTime = internal::traits<Derived>::MaxColsAtCompileTime,
86
- MaxSizeAtCompileTime = (internal::size_at_compile_time<internal::traits<Derived>::MaxRowsAtCompileTime,
87
- internal::traits<Derived>::MaxColsAtCompileTime>::ret),
88
- IsVectorAtCompileTime = internal::traits<Derived>::MaxRowsAtCompileTime == 1
89
- || internal::traits<Derived>::MaxColsAtCompileTime == 1,
90
- NumDimensions = int(MaxSizeAtCompileTime) == 1 ? 0 : bool(IsVectorAtCompileTime) ? 1 : 2
91
- };
92
-
93
- /** Default constructor */
94
- SolverBase()
95
- {}
96
-
97
- ~SolverBase()
98
- {}
99
-
100
- using Base::derived;
101
-
102
- /** \returns an expression of the solution x of \f$ A x = b \f$ using the current decomposition of A.
103
- */
104
- template<typename Rhs>
105
- inline const Solve<Derived, Rhs>
106
- solve(const MatrixBase<Rhs>& b) const
107
- {
108
- internal::solve_assertion<typename internal::remove_all<Derived>::type>::template run<false>(derived(), b);
109
- return Solve<Derived, Rhs>(derived(), b.derived());
110
- }
111
-
112
- /** \internal the return type of transpose() */
113
- typedef typename internal::add_const<Transpose<const Derived> >::type ConstTransposeReturnType;
114
- /** \returns an expression of the transposed of the factored matrix.
115
- *
116
- * A typical usage is to solve for the transposed problem A^T x = b:
117
- * \code x = dec.transpose().solve(b); \endcode
118
- *
119
- * \sa adjoint(), solve()
120
- */
121
- inline ConstTransposeReturnType transpose() const
122
- {
123
- return ConstTransposeReturnType(derived());
124
- }
125
-
126
- /** \internal the return type of adjoint() */
127
- typedef typename internal::conditional<NumTraits<Scalar>::IsComplex,
128
- CwiseUnaryOp<internal::scalar_conjugate_op<Scalar>, ConstTransposeReturnType>,
129
- ConstTransposeReturnType
130
- >::type AdjointReturnType;
131
- /** \returns an expression of the adjoint of the factored matrix
132
- *
133
- * A typical usage is to solve for the adjoint problem A' x = b:
134
- * \code x = dec.adjoint().solve(b); \endcode
135
- *
136
- * For real scalar types, this function is equivalent to transpose().
137
- *
138
- * \sa transpose(), solve()
139
- */
140
- inline AdjointReturnType adjoint() const
141
- {
142
- return AdjointReturnType(derived().transpose());
143
- }
144
-
145
- protected:
146
-
147
- template<bool Transpose_, typename Rhs>
148
- void _check_solve_assertion(const Rhs& b) const {
149
- EIGEN_ONLY_USED_FOR_DEBUG(b);
150
- eigen_assert(derived().m_isInitialized && "Solver is not initialized.");
151
- eigen_assert((Transpose_?derived().cols():derived().rows())==b.rows() && "SolverBase::solve(): invalid number of rows of the right hand side matrix b");
152
- }
51
+ * \brief A base class for matrix decomposition and solvers
52
+ *
53
+ * \tparam Derived the actual type of the decomposition/solver.
54
+ *
55
+ * Any matrix decomposition inheriting this base class provide the following API:
56
+ *
57
+ * \code
58
+ * MatrixType A, b, x;
59
+ * DecompositionType dec(A);
60
+ * x = dec.solve(b); // solve A * x = b
61
+ * x = dec.transpose().solve(b); // solve A^T * x = b
62
+ * x = dec.adjoint().solve(b); // solve A' * x = b
63
+ * \endcode
64
+ *
65
+ * \warning Currently, any other usage of transpose() and adjoint() are not supported and will produce compilation
66
+ * errors.
67
+ *
68
+ * \sa class PartialPivLU, class FullPivLU, class HouseholderQR, class ColPivHouseholderQR, class FullPivHouseholderQR,
69
+ * class CompleteOrthogonalDecomposition, class LLT, class LDLT, class SVDBase
70
+ */
71
+ template <typename Derived>
72
+ class SolverBase : public EigenBase<Derived> {
73
+ public:
74
+ typedef EigenBase<Derived> Base;
75
+ typedef typename internal::traits<Derived>::Scalar Scalar;
76
+ typedef Scalar CoeffReturnType;
77
+
78
+ template <typename Derived_>
79
+ friend struct internal::solve_assertion;
80
+
81
+ ComputationInfo info() const {
82
+ // CRTP static dispatch: Calls the 'info()' method on the derived class.
83
+ // Derived must implement 'ComputationInfo info() const'.
84
+ // If not implemented, name lookup falls back to this base method, causing
85
+ // infinite recursion (detectable by -Winfinite-recursion).
86
+ return derived().info();
87
+ }
88
+
89
+ enum {
90
+ RowsAtCompileTime = internal::traits<Derived>::RowsAtCompileTime,
91
+ ColsAtCompileTime = internal::traits<Derived>::ColsAtCompileTime,
92
+ SizeAtCompileTime = (internal::size_of_xpr_at_compile_time<Derived>::ret),
93
+ MaxRowsAtCompileTime = internal::traits<Derived>::MaxRowsAtCompileTime,
94
+ MaxColsAtCompileTime = internal::traits<Derived>::MaxColsAtCompileTime,
95
+ MaxSizeAtCompileTime = internal::size_at_compile_time(internal::traits<Derived>::MaxRowsAtCompileTime,
96
+ internal::traits<Derived>::MaxColsAtCompileTime),
97
+ IsVectorAtCompileTime =
98
+ internal::traits<Derived>::MaxRowsAtCompileTime == 1 || internal::traits<Derived>::MaxColsAtCompileTime == 1,
99
+ NumDimensions = int(MaxSizeAtCompileTime) == 1 ? 0
100
+ : bool(IsVectorAtCompileTime) ? 1
101
+ : 2
102
+ };
103
+
104
+ /** Default constructor */
105
+ SolverBase() {}
106
+
107
+ ~SolverBase() {}
108
+
109
+ using Base::derived;
110
+
111
+ /** \returns an expression of the solution x of \f$ A x = b \f$ using the current decomposition of A.
112
+ */
113
+ template <typename Rhs>
114
+ inline const Solve<Derived, Rhs> solve(const MatrixBase<Rhs>& b) const {
115
+ internal::solve_assertion<internal::remove_all_t<Derived>>::template run<false>(derived(), b);
116
+ return Solve<Derived, Rhs>(derived(), b.derived());
117
+ }
118
+
119
+ /** \internal the return type of transpose() */
120
+ typedef Transpose<const Derived> ConstTransposeReturnType;
121
+ /** \returns an expression of the transposed of the factored matrix.
122
+ *
123
+ * A typical usage is to solve for the transposed problem A^T x = b:
124
+ * \code x = dec.transpose().solve(b); \endcode
125
+ *
126
+ * \sa adjoint(), solve()
127
+ */
128
+ inline const ConstTransposeReturnType transpose() const { return ConstTransposeReturnType(derived()); }
129
+
130
+ /** \internal the return type of adjoint() */
131
+ typedef std::conditional_t<NumTraits<Scalar>::IsComplex,
132
+ CwiseUnaryOp<internal::scalar_conjugate_op<Scalar>, const ConstTransposeReturnType>,
133
+ const ConstTransposeReturnType>
134
+ AdjointReturnType;
135
+ /** \returns an expression of the adjoint of the factored matrix
136
+ *
137
+ * A typical usage is to solve for the adjoint problem A' x = b:
138
+ * \code x = dec.adjoint().solve(b); \endcode
139
+ *
140
+ * For real scalar types, this function is equivalent to transpose().
141
+ *
142
+ * \sa transpose(), solve()
143
+ */
144
+ inline const AdjointReturnType adjoint() const { return AdjointReturnType(derived().transpose()); }
145
+
146
+ protected:
147
+ template <bool Transpose_, typename Rhs>
148
+ void _check_solve_assertion(const Rhs& b) const {
149
+ EIGEN_ONLY_USED_FOR_DEBUG(b);
150
+ eigen_assert(derived().m_isInitialized && "Solver is not initialized.");
151
+ eigen_assert((Transpose_ ? derived().cols() : derived().rows()) == b.rows() &&
152
+ "SolverBase::solve(): invalid number of rows of the right hand side matrix b");
153
+ }
153
154
  };
154
155
 
155
156
  namespace internal {
156
157
 
157
- template<typename Derived>
158
- struct generic_xpr_base<Derived, MatrixXpr, SolverStorage>
159
- {
158
+ template <typename Derived>
159
+ struct generic_xpr_base<Derived, MatrixXpr, SolverStorage> {
160
160
  typedef SolverBase<Derived> type;
161
-
162
161
  };
163
162
 
164
- } // end namespace internal
163
+ } // end namespace internal
165
164
 
166
- } // end namespace Eigen
165
+ } // end namespace Eigen
167
166
 
168
- #endif // EIGEN_SOLVERBASE_H
167
+ #endif // EIGEN_SOLVERBASE_H
@@ -10,119 +10,95 @@
10
10
  #ifndef EIGEN_STABLENORM_H
11
11
  #define EIGEN_STABLENORM_H
12
12
 
13
- namespace Eigen {
13
+ // IWYU pragma: private
14
+ #include "./InternalHeaderCheck.h"
15
+
16
+ namespace Eigen {
14
17
 
15
18
  namespace internal {
16
19
 
17
- template<typename ExpressionType, typename Scalar>
18
- inline void stable_norm_kernel(const ExpressionType& bl, Scalar& ssq, Scalar& scale, Scalar& invScale)
19
- {
20
+ template <typename ExpressionType, typename Scalar>
21
+ inline void stable_norm_kernel(const ExpressionType& bl, Scalar& ssq, Scalar& scale, Scalar& invScale) {
20
22
  Scalar maxCoeff = bl.cwiseAbs().maxCoeff();
21
-
22
- if(maxCoeff>scale)
23
- {
24
- ssq = ssq * numext::abs2(scale/maxCoeff);
25
- Scalar tmp = Scalar(1)/maxCoeff;
26
- if(tmp > NumTraits<Scalar>::highest())
27
- {
23
+
24
+ if (maxCoeff > scale) {
25
+ ssq = ssq * numext::abs2(scale / maxCoeff);
26
+ Scalar tmp = Scalar(1) / maxCoeff;
27
+ if (tmp > NumTraits<Scalar>::highest()) {
28
28
  invScale = NumTraits<Scalar>::highest();
29
- scale = Scalar(1)/invScale;
30
- }
31
- else if(maxCoeff>NumTraits<Scalar>::highest()) // we got a INF
29
+ scale = Scalar(1) / invScale;
30
+ } else if (maxCoeff > NumTraits<Scalar>::highest()) // we got a INF
32
31
  {
33
32
  invScale = Scalar(1);
34
33
  scale = maxCoeff;
35
- }
36
- else
37
- {
34
+ } else {
38
35
  scale = maxCoeff;
39
36
  invScale = tmp;
40
37
  }
41
- }
42
- else if(maxCoeff!=maxCoeff) // we got a NaN
38
+ } else if (maxCoeff != maxCoeff) // we got a NaN
43
39
  {
44
40
  scale = maxCoeff;
45
41
  }
46
-
42
+
47
43
  // TODO if the maxCoeff is much much smaller than the current scale,
48
44
  // then we can neglect this sub vector
49
- if(scale>Scalar(0)) // if scale==0, then bl is 0
50
- ssq += (bl*invScale).squaredNorm();
45
+ if (scale > Scalar(0)) // if scale==0, then bl is 0
46
+ ssq += (bl * invScale).squaredNorm();
51
47
  }
52
48
 
53
- template<typename VectorType, typename RealScalar>
54
- void stable_norm_impl_inner_step(const VectorType &vec, RealScalar& ssq, RealScalar& scale, RealScalar& invScale)
55
- {
56
- typedef typename VectorType::Scalar Scalar;
49
+ template <typename VectorType, typename RealScalar>
50
+ void stable_norm_impl_inner_step(const VectorType& vec, RealScalar& ssq, RealScalar& scale, RealScalar& invScale) {
57
51
  const Index blockSize = 4096;
58
-
59
- typedef typename internal::nested_eval<VectorType,2>::type VectorTypeCopy;
60
- typedef typename internal::remove_all<VectorTypeCopy>::type VectorTypeCopyClean;
61
- const VectorTypeCopy copy(vec);
62
-
63
- enum {
64
- CanAlign = ( (int(VectorTypeCopyClean::Flags)&DirectAccessBit)
65
- || (int(internal::evaluator<VectorTypeCopyClean>::Alignment)>0) // FIXME Alignment)>0 might not be enough
66
- ) && (blockSize*sizeof(Scalar)*2<EIGEN_STACK_ALLOCATION_LIMIT)
67
- && (EIGEN_MAX_STATIC_ALIGN_BYTES>0) // if we cannot allocate on the stack, then let's not bother about this optimization
68
- };
69
- typedef typename internal::conditional<CanAlign, Ref<const Matrix<Scalar,Dynamic,1,0,blockSize,1>, internal::evaluator<VectorTypeCopyClean>::Alignment>,
70
- typename VectorTypeCopyClean::ConstSegmentReturnType>::type SegmentWrapper;
52
+
71
53
  Index n = vec.size();
72
-
73
- Index bi = internal::first_default_aligned(copy);
74
- if (bi>0)
75
- internal::stable_norm_kernel(copy.head(bi), ssq, scale, invScale);
76
- for (; bi<n; bi+=blockSize)
77
- internal::stable_norm_kernel(SegmentWrapper(copy.segment(bi,numext::mini(blockSize, n - bi))), ssq, scale, invScale);
54
+ Index blockEnd = numext::round_down(n, blockSize);
55
+ for (Index i = 0; i < blockEnd; i += blockSize) {
56
+ internal::stable_norm_kernel(vec.template segment<blockSize>(i), ssq, scale, invScale);
57
+ }
58
+ if (n > blockEnd) {
59
+ internal::stable_norm_kernel(vec.tail(n - blockEnd), ssq, scale, invScale);
60
+ }
78
61
  }
79
62
 
80
- template<typename VectorType>
81
- typename VectorType::RealScalar
82
- stable_norm_impl(const VectorType &vec, typename enable_if<VectorType::IsVectorAtCompileTime>::type* = 0 )
83
- {
84
- using std::sqrt;
63
+ template <typename VectorType>
64
+ typename VectorType::RealScalar stable_norm_impl(const VectorType& vec,
65
+ std::enable_if_t<VectorType::IsVectorAtCompileTime>* = 0) {
85
66
  using std::abs;
67
+ using std::sqrt;
86
68
 
87
69
  Index n = vec.size();
88
-
89
- if(n==1)
90
- return abs(vec.coeff(0));
70
+ if (EIGEN_PREDICT_FALSE(n == 1)) return abs(vec.coeff(0));
91
71
 
92
72
  typedef typename VectorType::RealScalar RealScalar;
93
73
  RealScalar scale(0);
94
74
  RealScalar invScale(1);
95
- RealScalar ssq(0); // sum of squares
75
+ RealScalar ssq(0); // sum of squares
96
76
 
97
77
  stable_norm_impl_inner_step(vec, ssq, scale, invScale);
98
-
78
+
99
79
  return scale * sqrt(ssq);
100
80
  }
101
81
 
102
- template<typename MatrixType>
103
- typename MatrixType::RealScalar
104
- stable_norm_impl(const MatrixType &mat, typename enable_if<!MatrixType::IsVectorAtCompileTime>::type* = 0 )
105
- {
82
+ template <typename MatrixType>
83
+ typename MatrixType::RealScalar stable_norm_impl(const MatrixType& mat,
84
+ std::enable_if_t<!MatrixType::IsVectorAtCompileTime>* = 0) {
106
85
  using std::sqrt;
107
86
 
108
87
  typedef typename MatrixType::RealScalar RealScalar;
109
88
  RealScalar scale(0);
110
89
  RealScalar invScale(1);
111
- RealScalar ssq(0); // sum of squares
90
+ RealScalar ssq(0); // sum of squares
112
91
 
113
- for(Index j=0; j<mat.outerSize(); ++j)
114
- stable_norm_impl_inner_step(mat.innerVector(j), ssq, scale, invScale);
92
+ for (Index j = 0; j < mat.outerSize(); ++j) stable_norm_impl_inner_step(mat.innerVector(j), ssq, scale, invScale);
115
93
  return scale * sqrt(ssq);
116
94
  }
117
95
 
118
- template<typename Derived>
119
- inline typename NumTraits<typename traits<Derived>::Scalar>::Real
120
- blueNorm_impl(const EigenBase<Derived>& _vec)
121
- {
122
- typedef typename Derived::RealScalar RealScalar;
96
+ template <typename Derived>
97
+ inline typename NumTraits<typename traits<Derived>::Scalar>::Real blueNorm_impl(const EigenBase<Derived>& _vec) {
98
+ typedef typename Derived::RealScalar RealScalar;
99
+ using std::abs;
123
100
  using std::pow;
124
101
  using std::sqrt;
125
- using std::abs;
126
102
 
127
103
  // This program calculates the machine-dependent constants
128
104
  // bl, b2, slm, s2m, relerr overfl
@@ -133,15 +109,19 @@ blueNorm_impl(const EigenBase<Derived>& _vec)
133
109
  // are used. For any specific computer, each of the assignment
134
110
  // statements can be replaced
135
111
  static const int ibeta = std::numeric_limits<RealScalar>::radix; // base for floating-point numbers
136
- static const int it = NumTraits<RealScalar>::digits(); // number of base-beta digits in mantissa
137
- static const int iemin = NumTraits<RealScalar>::min_exponent(); // minimum exponent
138
- static const int iemax = NumTraits<RealScalar>::max_exponent(); // maximum exponent
139
- static const RealScalar rbig = NumTraits<RealScalar>::highest(); // largest floating-point number
140
- static const RealScalar b1 = RealScalar(pow(RealScalar(ibeta),RealScalar(-((1-iemin)/2)))); // lower boundary of midrange
141
- static const RealScalar b2 = RealScalar(pow(RealScalar(ibeta),RealScalar((iemax + 1 - it)/2))); // upper boundary of midrange
142
- static const RealScalar s1m = RealScalar(pow(RealScalar(ibeta),RealScalar((2-iemin)/2))); // scaling factor for lower range
143
- static const RealScalar s2m = RealScalar(pow(RealScalar(ibeta),RealScalar(- ((iemax+it)/2)))); // scaling factor for upper range
144
- static const RealScalar eps = RealScalar(pow(double(ibeta), 1-it));
112
+ static const int it = NumTraits<RealScalar>::digits(); // number of base-beta digits in mantissa
113
+ static const int iemin = NumTraits<RealScalar>::min_exponent(); // minimum exponent
114
+ static const int iemax = NumTraits<RealScalar>::max_exponent(); // maximum exponent
115
+ static const RealScalar rbig = NumTraits<RealScalar>::highest(); // largest floating-point number
116
+ static const RealScalar b1 =
117
+ RealScalar(pow(RealScalar(ibeta), RealScalar(-((1 - iemin) / 2)))); // lower boundary of midrange
118
+ static const RealScalar b2 =
119
+ RealScalar(pow(RealScalar(ibeta), RealScalar((iemax + 1 - it) / 2))); // upper boundary of midrange
120
+ static const RealScalar s1m =
121
+ RealScalar(pow(RealScalar(ibeta), RealScalar((2 - iemin) / 2))); // scaling factor for lower range
122
+ static const RealScalar s2m =
123
+ RealScalar(pow(RealScalar(ibeta), RealScalar(-((iemax + it) / 2)))); // scaling factor for upper range
124
+ static const RealScalar eps = RealScalar(pow(double(ibeta), 1 - it));
145
125
  static const RealScalar relerr = sqrt(eps); // tolerance for neglecting asml
146
126
 
147
127
  const Derived& vec(_vec.derived());
@@ -151,101 +131,87 @@ blueNorm_impl(const EigenBase<Derived>& _vec)
151
131
  RealScalar amed = RealScalar(0);
152
132
  RealScalar abig = RealScalar(0);
153
133
 
154
- for(Index j=0; j<vec.outerSize(); ++j)
155
- {
156
- for(typename Derived::InnerIterator iter(vec, j); iter; ++iter)
157
- {
134
+ for (Index j = 0; j < vec.outerSize(); ++j) {
135
+ for (typename Derived::InnerIterator iter(vec, j); iter; ++iter) {
158
136
  RealScalar ax = abs(iter.value());
159
- if(ax > ab2) abig += numext::abs2(ax*s2m);
160
- else if(ax < b1) asml += numext::abs2(ax*s1m);
161
- else amed += numext::abs2(ax);
137
+ if (ax > ab2)
138
+ abig += numext::abs2(ax * s2m);
139
+ else if (ax < b1)
140
+ asml += numext::abs2(ax * s1m);
141
+ else
142
+ amed += numext::abs2(ax);
162
143
  }
163
144
  }
164
- if(amed!=amed)
165
- return amed; // we got a NaN
166
- if(abig > RealScalar(0))
167
- {
145
+ if (amed != amed) return amed; // we got a NaN
146
+ if (abig > RealScalar(0)) {
168
147
  abig = sqrt(abig);
169
- if(abig > rbig) // overflow, or *this contains INF values
170
- return abig; // return INF
171
- if(amed > RealScalar(0))
172
- {
173
- abig = abig/s2m;
148
+ if (abig > rbig) // overflow, or *this contains INF values
149
+ return abig; // return INF
150
+ if (amed > RealScalar(0)) {
151
+ abig = abig / s2m;
174
152
  amed = sqrt(amed);
175
- }
176
- else
177
- return abig/s2m;
178
- }
179
- else if(asml > RealScalar(0))
180
- {
181
- if (amed > RealScalar(0))
182
- {
153
+ } else
154
+ return abig / s2m;
155
+ } else if (asml > RealScalar(0)) {
156
+ if (amed > RealScalar(0)) {
183
157
  abig = sqrt(amed);
184
158
  amed = sqrt(asml) / s1m;
185
- }
186
- else
187
- return sqrt(asml)/s1m;
188
- }
189
- else
159
+ } else
160
+ return sqrt(asml) / s1m;
161
+ } else
190
162
  return sqrt(amed);
191
163
  asml = numext::mini(abig, amed);
192
164
  abig = numext::maxi(abig, amed);
193
- if(asml <= abig*relerr)
165
+ if (asml <= abig * relerr)
194
166
  return abig;
195
167
  else
196
- return abig * sqrt(RealScalar(1) + numext::abs2(asml/abig));
168
+ return abig * sqrt(RealScalar(1) + numext::abs2(asml / abig));
197
169
  }
198
170
 
199
- } // end namespace internal
171
+ } // end namespace internal
200
172
 
201
173
  /** \returns the \em l2 norm of \c *this avoiding underflow and overflow.
202
- * This version use a blockwise two passes algorithm:
203
- * 1 - find the absolute largest coefficient \c s
204
- * 2 - compute \f$ s \Vert \frac{*this}{s} \Vert \f$ in a standard way
205
- *
206
- * For architecture/scalar types supporting vectorization, this version
207
- * is faster than blueNorm(). Otherwise the blueNorm() is much faster.
208
- *
209
- * \sa norm(), blueNorm(), hypotNorm()
210
- */
211
- template<typename Derived>
212
- inline typename NumTraits<typename internal::traits<Derived>::Scalar>::Real
213
- MatrixBase<Derived>::stableNorm() const
214
- {
174
+ * This version use a blockwise two passes algorithm:
175
+ * 1 - find the absolute largest coefficient \c s
176
+ * 2 - compute \f$ s \Vert \frac{*this}{s} \Vert \f$ in a standard way
177
+ *
178
+ * For architecture/scalar types supporting vectorization, this version
179
+ * is faster than blueNorm(). Otherwise the blueNorm() is much faster.
180
+ *
181
+ * \sa norm(), blueNorm(), hypotNorm()
182
+ */
183
+ template <typename Derived>
184
+ inline typename NumTraits<typename internal::traits<Derived>::Scalar>::Real MatrixBase<Derived>::stableNorm() const {
215
185
  return internal::stable_norm_impl(derived());
216
186
  }
217
187
 
218
188
  /** \returns the \em l2 norm of \c *this using the Blue's algorithm.
219
- * A Portable Fortran Program to Find the Euclidean Norm of a Vector,
220
- * ACM TOMS, Vol 4, Issue 1, 1978.
221
- *
222
- * For architecture/scalar types without vectorization, this version
223
- * is much faster than stableNorm(). Otherwise the stableNorm() is faster.
224
- *
225
- * \sa norm(), stableNorm(), hypotNorm()
226
- */
227
- template<typename Derived>
228
- inline typename NumTraits<typename internal::traits<Derived>::Scalar>::Real
229
- MatrixBase<Derived>::blueNorm() const
230
- {
189
+ * A Portable Fortran Program to Find the Euclidean Norm of a Vector,
190
+ * ACM TOMS, Vol 4, Issue 1, 1978.
191
+ *
192
+ * For architecture/scalar types without vectorization, this version
193
+ * is much faster than stableNorm(). Otherwise the stableNorm() is faster.
194
+ *
195
+ * \sa norm(), stableNorm(), hypotNorm()
196
+ */
197
+ template <typename Derived>
198
+ inline typename NumTraits<typename internal::traits<Derived>::Scalar>::Real MatrixBase<Derived>::blueNorm() const {
231
199
  return internal::blueNorm_impl(*this);
232
200
  }
233
201
 
234
- /** \returns the \em l2 norm of \c *this avoiding undeflow and overflow.
235
- * This version use a concatenation of hypot() calls, and it is very slow.
236
- *
237
- * \sa norm(), stableNorm()
238
- */
239
- template<typename Derived>
240
- inline typename NumTraits<typename internal::traits<Derived>::Scalar>::Real
241
- MatrixBase<Derived>::hypotNorm() const
242
- {
243
- if(size()==1)
244
- return numext::abs(coeff(0,0));
202
+ /** \returns the \em l2 norm of \c *this avoiding underflow and overflow.
203
+ * This version use a concatenation of hypot() calls, and it is very slow.
204
+ *
205
+ * \sa norm(), stableNorm()
206
+ */
207
+ template <typename Derived>
208
+ inline typename NumTraits<typename internal::traits<Derived>::Scalar>::Real MatrixBase<Derived>::hypotNorm() const {
209
+ if (size() == 1)
210
+ return numext::abs(coeff(0, 0));
245
211
  else
246
212
  return this->cwiseAbs().redux(internal::scalar_hypot_op<RealScalar>());
247
213
  }
248
214
 
249
- } // end namespace Eigen
215
+ } // end namespace Eigen
250
216
 
251
- #endif // EIGEN_STABLENORM_H
217
+ #endif // EIGEN_STABLENORM_H