@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
@@ -11,213 +11,200 @@
11
11
  #ifndef EIGEN_BIDIAGONALIZATION_H
12
12
  #define EIGEN_BIDIAGONALIZATION_H
13
13
 
14
- namespace Eigen {
14
+ // IWYU pragma: private
15
+ #include "./InternalHeaderCheck.h"
16
+
17
+ namespace Eigen {
15
18
 
16
19
  namespace internal {
17
20
  // UpperBidiagonalization will probably be replaced by a Bidiagonalization class, don't want to make it stable API.
18
21
  // At the same time, it's useful to keep for now as it's about the only thing that is testing the BandMatrix class.
19
22
 
20
- template<typename _MatrixType> class UpperBidiagonalization
21
- {
22
- public:
23
-
24
- typedef _MatrixType MatrixType;
25
- enum {
26
- RowsAtCompileTime = MatrixType::RowsAtCompileTime,
27
- ColsAtCompileTime = MatrixType::ColsAtCompileTime,
28
- ColsAtCompileTimeMinusOne = internal::decrement_size<ColsAtCompileTime>::ret
29
- };
30
- typedef typename MatrixType::Scalar Scalar;
31
- typedef typename MatrixType::RealScalar RealScalar;
32
- typedef Eigen::Index Index; ///< \deprecated since Eigen 3.3
33
- typedef Matrix<Scalar, 1, ColsAtCompileTime> RowVectorType;
34
- typedef Matrix<Scalar, RowsAtCompileTime, 1> ColVectorType;
35
- typedef BandMatrix<RealScalar, ColsAtCompileTime, ColsAtCompileTime, 1, 0, RowMajor> BidiagonalType;
36
- typedef Matrix<Scalar, ColsAtCompileTime, 1> DiagVectorType;
37
- typedef Matrix<Scalar, ColsAtCompileTimeMinusOne, 1> SuperDiagVectorType;
38
- typedef HouseholderSequence<
39
- const MatrixType,
40
- const typename internal::remove_all<typename Diagonal<const MatrixType,0>::ConjugateReturnType>::type
41
- > HouseholderUSequenceType;
42
- typedef HouseholderSequence<
43
- const typename internal::remove_all<typename MatrixType::ConjugateReturnType>::type,
44
- Diagonal<const MatrixType,1>,
45
- OnTheRight
46
- > HouseholderVSequenceType;
47
-
48
- /**
49
- * \brief Default Constructor.
50
- *
51
- * The default constructor is useful in cases in which the user intends to
52
- * perform decompositions via Bidiagonalization::compute(const MatrixType&).
53
- */
54
- UpperBidiagonalization() : m_householder(), m_bidiagonal(), m_isInitialized(false) {}
55
-
56
- explicit UpperBidiagonalization(const MatrixType& matrix)
23
+ template <typename MatrixType_>
24
+ class UpperBidiagonalization {
25
+ public:
26
+ typedef MatrixType_ MatrixType;
27
+ enum {
28
+ RowsAtCompileTime = MatrixType::RowsAtCompileTime,
29
+ ColsAtCompileTime = MatrixType::ColsAtCompileTime,
30
+ ColsAtCompileTimeMinusOne = internal::decrement_size<ColsAtCompileTime>::ret
31
+ };
32
+ typedef typename MatrixType::Scalar Scalar;
33
+ typedef typename MatrixType::RealScalar RealScalar;
34
+ typedef Eigen::Index Index; ///< \deprecated since Eigen 3.3
35
+ typedef Matrix<Scalar, 1, ColsAtCompileTime> RowVectorType;
36
+ typedef Matrix<Scalar, RowsAtCompileTime, 1> ColVectorType;
37
+ typedef BandMatrix<RealScalar, ColsAtCompileTime, ColsAtCompileTime, 1, 0, RowMajor> BidiagonalType;
38
+ typedef Matrix<Scalar, ColsAtCompileTime, 1> DiagVectorType;
39
+ typedef Matrix<Scalar, ColsAtCompileTimeMinusOne, 1> SuperDiagVectorType;
40
+ typedef HouseholderSequence<
41
+ const MatrixType, const internal::remove_all_t<typename Diagonal<const MatrixType, 0>::ConjugateReturnType> >
42
+ HouseholderUSequenceType;
43
+ typedef HouseholderSequence<const internal::remove_all_t<typename MatrixType::ConjugateReturnType>,
44
+ Diagonal<const MatrixType, 1>, OnTheRight>
45
+ HouseholderVSequenceType;
46
+
47
+ /**
48
+ * \brief Default Constructor.
49
+ *
50
+ * The default constructor is useful in cases in which the user intends to
51
+ * perform decompositions via Bidiagonalization::compute(const MatrixType&).
52
+ */
53
+ UpperBidiagonalization() : m_householder(), m_bidiagonal(0, 0), m_isInitialized(false) {}
54
+
55
+ explicit UpperBidiagonalization(const MatrixType& matrix)
57
56
  : m_householder(matrix.rows(), matrix.cols()),
58
57
  m_bidiagonal(matrix.cols(), matrix.cols()),
59
- m_isInitialized(false)
60
- {
61
- compute(matrix);
62
- }
63
-
64
- UpperBidiagonalization& compute(const MatrixType& matrix);
65
- UpperBidiagonalization& computeUnblocked(const MatrixType& matrix);
66
-
67
- const MatrixType& householder() const { return m_householder; }
68
- const BidiagonalType& bidiagonal() const { return m_bidiagonal; }
69
-
70
- const HouseholderUSequenceType householderU() const
71
- {
72
- eigen_assert(m_isInitialized && "UpperBidiagonalization is not initialized.");
73
- return HouseholderUSequenceType(m_householder, m_householder.diagonal().conjugate());
74
- }
58
+ m_isInitialized(false) {
59
+ compute(matrix);
60
+ }
75
61
 
76
- const HouseholderVSequenceType householderV() // const here gives nasty errors and i'm lazy
77
- {
78
- eigen_assert(m_isInitialized && "UpperBidiagonalization is not initialized.");
79
- return HouseholderVSequenceType(m_householder.conjugate(), m_householder.const_derived().template diagonal<1>())
80
- .setLength(m_householder.cols()-1)
81
- .setShift(1);
82
- }
83
-
84
- protected:
85
- MatrixType m_householder;
86
- BidiagonalType m_bidiagonal;
87
- bool m_isInitialized;
62
+ UpperBidiagonalization(Index rows, Index cols)
63
+ : m_householder(rows, cols), m_bidiagonal(cols, cols), m_isInitialized(false) {}
64
+
65
+ UpperBidiagonalization& compute(const MatrixType& matrix);
66
+ UpperBidiagonalization& computeUnblocked(const MatrixType& matrix);
67
+
68
+ const MatrixType& householder() const { return m_householder; }
69
+ const BidiagonalType& bidiagonal() const { return m_bidiagonal; }
70
+
71
+ const HouseholderUSequenceType householderU() const {
72
+ eigen_assert(m_isInitialized && "UpperBidiagonalization is not initialized.");
73
+ return HouseholderUSequenceType(m_householder, m_householder.diagonal().conjugate());
74
+ }
75
+
76
+ const HouseholderVSequenceType householderV() // const here gives nasty errors and i'm lazy
77
+ {
78
+ eigen_assert(m_isInitialized && "UpperBidiagonalization is not initialized.");
79
+ return HouseholderVSequenceType(m_householder.conjugate(), m_householder.const_derived().template diagonal<1>())
80
+ .setLength(m_householder.cols() - 1)
81
+ .setShift(1);
82
+ }
83
+
84
+ protected:
85
+ MatrixType m_householder;
86
+ BidiagonalType m_bidiagonal;
87
+ bool m_isInitialized;
88
88
  };
89
89
 
90
90
  // Standard upper bidiagonalization without fancy optimizations
91
91
  // This version should be faster for small matrix size
92
- template<typename MatrixType>
93
- void upperbidiagonalization_inplace_unblocked(MatrixType& mat,
94
- typename MatrixType::RealScalar *diagonal,
95
- typename MatrixType::RealScalar *upper_diagonal,
96
- typename MatrixType::Scalar* tempData = 0)
97
- {
92
+ template <typename MatrixType>
93
+ void upperbidiagonalization_inplace_unblocked(MatrixType& mat, typename MatrixType::RealScalar* diagonal,
94
+ typename MatrixType::RealScalar* upper_diagonal,
95
+ typename MatrixType::Scalar* tempData = 0) {
98
96
  typedef typename MatrixType::Scalar Scalar;
99
97
 
100
98
  Index rows = mat.rows();
101
99
  Index cols = mat.cols();
102
100
 
103
- typedef Matrix<Scalar,Dynamic,1,ColMajor,MatrixType::MaxRowsAtCompileTime,1> TempType;
101
+ typedef Matrix<Scalar, Dynamic, 1, ColMajor, MatrixType::MaxRowsAtCompileTime, 1> TempType;
104
102
  TempType tempVector;
105
- if(tempData==0)
106
- {
103
+ if (tempData == 0) {
107
104
  tempVector.resize(rows);
108
105
  tempData = tempVector.data();
109
106
  }
110
107
 
111
- for (Index k = 0; /* breaks at k==cols-1 below */ ; ++k)
112
- {
108
+ for (Index k = 0; /* breaks at k==cols-1 below */; ++k) {
113
109
  Index remainingRows = rows - k;
114
110
  Index remainingCols = cols - k - 1;
115
111
 
116
112
  // construct left householder transform in-place in A
117
- mat.col(k).tail(remainingRows)
118
- .makeHouseholderInPlace(mat.coeffRef(k,k), diagonal[k]);
113
+ mat.col(k).tail(remainingRows).makeHouseholderInPlace(mat.coeffRef(k, k), diagonal[k]);
119
114
  // apply householder transform to remaining part of A on the left
120
115
  mat.bottomRightCorner(remainingRows, remainingCols)
121
- .applyHouseholderOnTheLeft(mat.col(k).tail(remainingRows-1), mat.coeff(k,k), tempData);
116
+ .applyHouseholderOnTheLeft(mat.col(k).tail(remainingRows - 1), mat.coeff(k, k), tempData);
122
117
 
123
- if(k == cols-1) break;
118
+ if (k == cols - 1) break;
124
119
 
125
120
  // construct right householder transform in-place in mat
126
- mat.row(k).tail(remainingCols)
127
- .makeHouseholderInPlace(mat.coeffRef(k,k+1), upper_diagonal[k]);
121
+ mat.row(k).tail(remainingCols).makeHouseholderInPlace(mat.coeffRef(k, k + 1), upper_diagonal[k]);
128
122
  // apply householder transform to remaining part of mat on the left
129
- mat.bottomRightCorner(remainingRows-1, remainingCols)
130
- .applyHouseholderOnTheRight(mat.row(k).tail(remainingCols-1).adjoint(), mat.coeff(k,k+1), tempData);
123
+ mat.bottomRightCorner(remainingRows - 1, remainingCols)
124
+ .applyHouseholderOnTheRight(mat.row(k).tail(remainingCols - 1).adjoint(), mat.coeff(k, k + 1), tempData);
131
125
  }
132
126
  }
133
127
 
134
128
  /** \internal
135
- * Helper routine for the block reduction to upper bidiagonal form.
136
- *
137
- * Let's partition the matrix A:
138
- *
139
- * | A00 A01 |
140
- * A = | |
141
- * | A10 A11 |
142
- *
143
- * This function reduces to bidiagonal form the left \c rows x \a blockSize vertical panel [A00/A10]
144
- * and the \a blockSize x \c cols horizontal panel [A00 A01] of the matrix \a A. The bottom-right block A11
145
- * is updated using matrix-matrix products:
146
- * A22 -= V * Y^T - X * U^T
147
- * where V and U contains the left and right Householder vectors. U and V are stored in A10, and A01
148
- * respectively, and the update matrices X and Y are computed during the reduction.
149
- *
150
- */
151
- template<typename MatrixType>
152
- void upperbidiagonalization_blocked_helper(MatrixType& A,
153
- typename MatrixType::RealScalar *diagonal,
154
- typename MatrixType::RealScalar *upper_diagonal,
155
- Index bs,
156
- Ref<Matrix<typename MatrixType::Scalar, Dynamic, Dynamic,
157
- traits<MatrixType>::Flags & RowMajorBit> > X,
158
- Ref<Matrix<typename MatrixType::Scalar, Dynamic, Dynamic,
159
- traits<MatrixType>::Flags & RowMajorBit> > Y)
160
- {
129
+ * Helper routine for the block reduction to upper bidiagonal form.
130
+ *
131
+ * Let's partition the matrix A:
132
+ *
133
+ * | A00 A01 |
134
+ * A = | |
135
+ * | A10 A11 |
136
+ *
137
+ * This function reduces to bidiagonal form the left \c rows x \a blockSize vertical panel [A00/A10]
138
+ * and the \a blockSize x \c cols horizontal panel [A00 A01] of the matrix \a A. The bottom-right block A11
139
+ * is updated using matrix-matrix products:
140
+ * A22 -= V * Y^T - X * U^T
141
+ * where V and U contains the left and right Householder vectors. U and V are stored in A10, and A01
142
+ * respectively, and the update matrices X and Y are computed during the reduction.
143
+ *
144
+ */
145
+ template <typename MatrixType>
146
+ void upperbidiagonalization_blocked_helper(
147
+ MatrixType& A, typename MatrixType::RealScalar* diagonal, typename MatrixType::RealScalar* upper_diagonal, Index bs,
148
+ Ref<Matrix<typename MatrixType::Scalar, Dynamic, Dynamic, traits<MatrixType>::Flags & RowMajorBit> > X,
149
+ Ref<Matrix<typename MatrixType::Scalar, Dynamic, Dynamic, traits<MatrixType>::Flags & RowMajorBit> > Y) {
161
150
  typedef typename MatrixType::Scalar Scalar;
162
151
  typedef typename MatrixType::RealScalar RealScalar;
163
152
  typedef typename NumTraits<RealScalar>::Literal Literal;
164
- enum { StorageOrder = traits<MatrixType>::Flags & RowMajorBit };
165
- typedef InnerStride<int(StorageOrder) == int(ColMajor) ? 1 : Dynamic> ColInnerStride;
166
- typedef InnerStride<int(StorageOrder) == int(ColMajor) ? Dynamic : 1> RowInnerStride;
167
- typedef Ref<Matrix<Scalar, Dynamic, 1>, 0, ColInnerStride> SubColumnType;
168
- typedef Ref<Matrix<Scalar, 1, Dynamic>, 0, RowInnerStride> SubRowType;
169
- typedef Ref<Matrix<Scalar, Dynamic, Dynamic, StorageOrder > > SubMatType;
170
-
153
+ static constexpr int StorageOrder = (traits<MatrixType>::Flags & RowMajorBit) ? RowMajor : ColMajor;
154
+ typedef InnerStride<StorageOrder == ColMajor ? 1 : Dynamic> ColInnerStride;
155
+ typedef InnerStride<StorageOrder == ColMajor ? Dynamic : 1> RowInnerStride;
156
+ typedef Ref<Matrix<Scalar, Dynamic, 1>, 0, ColInnerStride> SubColumnType;
157
+ typedef Ref<Matrix<Scalar, 1, Dynamic>, 0, RowInnerStride> SubRowType;
158
+ typedef Ref<Matrix<Scalar, Dynamic, Dynamic, StorageOrder> > SubMatType;
159
+
171
160
  Index brows = A.rows();
172
161
  Index bcols = A.cols();
173
162
 
174
163
  Scalar tau_u, tau_u_prev(0), tau_v;
175
164
 
176
- for(Index k = 0; k < bs; ++k)
177
- {
165
+ for (Index k = 0; k < bs; ++k) {
178
166
  Index remainingRows = brows - k;
179
167
  Index remainingCols = bcols - k - 1;
180
168
 
181
- SubMatType X_k1( X.block(k,0, remainingRows,k) );
182
- SubMatType V_k1( A.block(k,0, remainingRows,k) );
169
+ SubMatType X_k1(X.block(k, 0, remainingRows, k));
170
+ SubMatType V_k1(A.block(k, 0, remainingRows, k));
183
171
 
184
172
  // 1 - update the k-th column of A
185
173
  SubColumnType v_k = A.col(k).tail(remainingRows);
186
- v_k -= V_k1 * Y.row(k).head(k).adjoint();
187
- if(k) v_k -= X_k1 * A.col(k).head(k);
188
-
174
+ v_k -= V_k1 * Y.row(k).head(k).adjoint();
175
+ if (k) v_k.noalias() -= X_k1 * A.col(k).head(k);
176
+
189
177
  // 2 - construct left Householder transform in-place
190
178
  v_k.makeHouseholderInPlace(tau_v, diagonal[k]);
191
-
192
- if(k+1<bcols)
193
- {
194
- SubMatType Y_k ( Y.block(k+1,0, remainingCols, k+1) );
195
- SubMatType U_k1 ( A.block(0,k+1, k,remainingCols) );
196
-
179
+
180
+ if (k + 1 < bcols) {
181
+ SubMatType Y_k(Y.block(k + 1, 0, remainingCols, k + 1));
182
+ SubMatType U_k1(A.block(0, k + 1, k, remainingCols));
183
+
197
184
  // this eases the application of Householder transforAions
198
185
  // A(k,k) will store tau_v later
199
- A(k,k) = Scalar(1);
186
+ A(k, k) = Scalar(1);
200
187
 
201
188
  // 3 - Compute y_k^T = tau_v * ( A^T*v_k - Y_k-1*V_k-1^T*v_k - U_k-1*X_k-1^T*v_k )
202
189
  {
203
- SubColumnType y_k( Y.col(k).tail(remainingCols) );
204
-
190
+ SubColumnType y_k(Y.col(k).tail(remainingCols));
191
+
205
192
  // let's use the beginning of column k of Y as a temporary vector
206
- SubColumnType tmp( Y.col(k).head(k) );
207
- y_k.noalias() = A.block(k,k+1, remainingRows,remainingCols).adjoint() * v_k; // bottleneck
208
- tmp.noalias() = V_k1.adjoint() * v_k;
193
+ SubColumnType tmp(Y.col(k).head(k));
194
+ y_k.noalias() = A.block(k, k + 1, remainingRows, remainingCols).adjoint() * v_k; // bottleneck
195
+ tmp.noalias() = V_k1.adjoint() * v_k;
209
196
  y_k.noalias() -= Y_k.leftCols(k) * tmp;
210
- tmp.noalias() = X_k1.adjoint() * v_k;
211
- y_k.noalias() -= U_k1.adjoint() * tmp;
197
+ tmp.noalias() = X_k1.adjoint() * v_k;
198
+ y_k.noalias() -= U_k1.adjoint() * tmp;
212
199
  y_k *= numext::conj(tau_v);
213
200
  }
214
201
 
215
202
  // 4 - update k-th row of A (it will become u_k)
216
- SubRowType u_k( A.row(k).tail(remainingCols) );
203
+ SubRowType u_k(A.row(k).tail(remainingCols));
217
204
  u_k = u_k.conjugate();
218
205
  {
219
- u_k -= Y_k * A.row(k).head(k+1).adjoint();
220
- if(k) u_k -= U_k1.adjoint() * X.row(k).head(k).adjoint();
206
+ u_k.noalias() -= Y_k * A.row(k).head(k + 1).adjoint();
207
+ if (k) u_k -= U_k1.adjoint() * X.row(k).head(k).adjoint();
221
208
  }
222
209
 
223
210
  // 5 - construct right Householder transform in-place
@@ -225,96 +212,82 @@ void upperbidiagonalization_blocked_helper(MatrixType& A,
225
212
 
226
213
  // this eases the application of Householder transformations
227
214
  // A(k,k+1) will store tau_u later
228
- A(k,k+1) = Scalar(1);
215
+ A(k, k + 1) = Scalar(1);
229
216
 
230
217
  // 6 - Compute x_k = tau_u * ( A*u_k - X_k-1*U_k-1^T*u_k - V_k*Y_k^T*u_k )
231
218
  {
232
- SubColumnType x_k ( X.col(k).tail(remainingRows-1) );
233
-
219
+ SubColumnType x_k(X.col(k).tail(remainingRows - 1));
220
+
234
221
  // let's use the beginning of column k of X as a temporary vectors
235
222
  // note that tmp0 and tmp1 overlaps
236
- SubColumnType tmp0 ( X.col(k).head(k) ),
237
- tmp1 ( X.col(k).head(k+1) );
238
-
239
- x_k.noalias() = A.block(k+1,k+1, remainingRows-1,remainingCols) * u_k.transpose(); // bottleneck
240
- tmp0.noalias() = U_k1 * u_k.transpose();
241
- x_k.noalias() -= X_k1.bottomRows(remainingRows-1) * tmp0;
242
- tmp1.noalias() = Y_k.adjoint() * u_k.transpose();
243
- x_k.noalias() -= A.block(k+1,0, remainingRows-1,k+1) * tmp1;
223
+ SubColumnType tmp0(X.col(k).head(k)), tmp1(X.col(k).head(k + 1));
224
+
225
+ x_k.noalias() = A.block(k + 1, k + 1, remainingRows - 1, remainingCols) * u_k.transpose(); // bottleneck
226
+ tmp0.noalias() = U_k1 * u_k.transpose();
227
+ x_k.noalias() -= X_k1.bottomRows(remainingRows - 1) * tmp0;
228
+ tmp1.noalias() = Y_k.adjoint() * u_k.transpose();
229
+ x_k.noalias() -= A.block(k + 1, 0, remainingRows - 1, k + 1) * tmp1;
244
230
  x_k *= numext::conj(tau_u);
245
231
  tau_u = numext::conj(tau_u);
246
232
  u_k = u_k.conjugate();
247
233
  }
248
234
 
249
- if(k>0) A.coeffRef(k-1,k) = tau_u_prev;
235
+ if (k > 0) A.coeffRef(k - 1, k) = tau_u_prev;
250
236
  tau_u_prev = tau_u;
251
- }
252
- else
253
- A.coeffRef(k-1,k) = tau_u_prev;
237
+ } else
238
+ A.coeffRef(k - 1, k) = tau_u_prev;
254
239
 
255
- A.coeffRef(k,k) = tau_v;
240
+ A.coeffRef(k, k) = tau_v;
256
241
  }
257
-
258
- if(bs<bcols)
259
- A.coeffRef(bs-1,bs) = tau_u_prev;
242
+
243
+ if (bs < bcols) A.coeffRef(bs - 1, bs) = tau_u_prev;
260
244
 
261
245
  // update A22
262
- if(bcols>bs && brows>bs)
263
- {
264
- SubMatType A11( A.bottomRightCorner(brows-bs,bcols-bs) );
265
- SubMatType A10( A.block(bs,0, brows-bs,bs) );
266
- SubMatType A01( A.block(0,bs, bs,bcols-bs) );
267
- Scalar tmp = A01(bs-1,0);
268
- A01(bs-1,0) = Literal(1);
269
- A11.noalias() -= A10 * Y.topLeftCorner(bcols,bs).bottomRows(bcols-bs).adjoint();
270
- A11.noalias() -= X.topLeftCorner(brows,bs).bottomRows(brows-bs) * A01;
271
- A01(bs-1,0) = tmp;
246
+ if (bcols > bs && brows > bs) {
247
+ SubMatType A11(A.bottomRightCorner(brows - bs, bcols - bs));
248
+ SubMatType A10(A.block(bs, 0, brows - bs, bs));
249
+ SubMatType A01(A.block(0, bs, bs, bcols - bs));
250
+ Scalar tmp = A01(bs - 1, 0);
251
+ A01(bs - 1, 0) = Literal(1);
252
+ A11.noalias() -= A10 * Y.topLeftCorner(bcols, bs).bottomRows(bcols - bs).adjoint();
253
+ A11.noalias() -= X.topLeftCorner(brows, bs).bottomRows(brows - bs) * A01;
254
+ A01(bs - 1, 0) = tmp;
272
255
  }
273
256
  }
274
257
 
275
258
  /** \internal
276
- *
277
- * Implementation of a block-bidiagonal reduction.
278
- * It is based on the following paper:
279
- * The Design of a Parallel Dense Linear Algebra Software Library: Reduction to Hessenberg, Tridiagonal, and Bidiagonal Form.
280
- * by Jaeyoung Choi, Jack J. Dongarra, David W. Walker. (1995)
281
- * section 3.3
282
- */
283
- template<typename MatrixType, typename BidiagType>
284
- void upperbidiagonalization_inplace_blocked(MatrixType& A, BidiagType& bidiagonal,
285
- Index maxBlockSize=32,
286
- typename MatrixType::Scalar* /*tempData*/ = 0)
287
- {
259
+ *
260
+ * Implementation of a block-bidiagonal reduction.
261
+ * It is based on the following paper:
262
+ * The Design of a Parallel Dense Linear Algebra Software Library: Reduction to Hessenberg, Tridiagonal, and
263
+ * Bidiagonal Form. by Jaeyoung Choi, Jack J. Dongarra, David W. Walker. (1995) section 3.3
264
+ */
265
+ template <typename MatrixType, typename BidiagType>
266
+ void upperbidiagonalization_inplace_blocked(MatrixType& A, BidiagType& bidiagonal, Index maxBlockSize = 32,
267
+ typename MatrixType::Scalar* /*tempData*/ = 0) {
288
268
  typedef typename MatrixType::Scalar Scalar;
289
- typedef Block<MatrixType,Dynamic,Dynamic> BlockType;
269
+ typedef Block<MatrixType, Dynamic, Dynamic> BlockType;
290
270
 
291
271
  Index rows = A.rows();
292
272
  Index cols = A.cols();
293
273
  Index size = (std::min)(rows, cols);
294
274
 
295
275
  // X and Y are work space
296
- enum { StorageOrder = traits<MatrixType>::Flags & RowMajorBit };
297
- Matrix<Scalar,
298
- MatrixType::RowsAtCompileTime,
299
- Dynamic,
300
- StorageOrder,
301
- MatrixType::MaxRowsAtCompileTime> X(rows,maxBlockSize);
302
- Matrix<Scalar,
303
- MatrixType::ColsAtCompileTime,
304
- Dynamic,
305
- StorageOrder,
306
- MatrixType::MaxColsAtCompileTime> Y(cols,maxBlockSize);
307
- Index blockSize = (std::min)(maxBlockSize,size);
276
+ static constexpr int StorageOrder = (traits<MatrixType>::Flags & RowMajorBit) ? RowMajor : ColMajor;
277
+ Matrix<Scalar, MatrixType::RowsAtCompileTime, Dynamic, StorageOrder, MatrixType::MaxRowsAtCompileTime> X(
278
+ rows, maxBlockSize);
279
+ Matrix<Scalar, MatrixType::ColsAtCompileTime, Dynamic, StorageOrder, MatrixType::MaxColsAtCompileTime> Y(
280
+ cols, maxBlockSize);
281
+ Index blockSize = (std::min)(maxBlockSize, size);
308
282
 
309
283
  Index k = 0;
310
- for(k = 0; k < size; k += blockSize)
311
- {
312
- Index bs = (std::min)(size-k,blockSize); // actual size of the block
313
- Index brows = rows - k; // rows of the block
314
- Index bcols = cols - k; // columns of the block
284
+ for (k = 0; k < size; k += blockSize) {
285
+ Index bs = (std::min)(size - k, blockSize); // actual size of the block
286
+ Index brows = rows - k; // rows of the block
287
+ Index bcols = cols - k; // columns of the block
315
288
 
316
289
  // partition the matrix A:
317
- //
290
+ //
318
291
  // | A00 A01 A02 |
319
292
  // | |
320
293
  // A = | A10 A11 A12 |
@@ -327,37 +300,32 @@ void upperbidiagonalization_inplace_blocked(MatrixType& A, BidiagType& bidiagona
327
300
  // B = | |
328
301
  // | A21 A22 |
329
302
 
330
- BlockType B = A.block(k,k,brows,bcols);
331
-
303
+ BlockType B = A.block(k, k, brows, bcols);
304
+
332
305
  // This stage performs the bidiagonalization of A11, A21, A12, and updating of A22.
333
306
  // Finally, the algorithm continue on the updated A22.
334
307
  //
335
308
  // However, if B is too small, or A22 empty, then let's use an unblocked strategy
336
- if(k+bs==cols || bcols<48) // somewhat arbitrary threshold
337
- {
338
- upperbidiagonalization_inplace_unblocked(B,
339
- &(bidiagonal.template diagonal<0>().coeffRef(k)),
340
- &(bidiagonal.template diagonal<1>().coeffRef(k)),
341
- X.data()
342
- );
343
- break; // We're done
344
- }
345
- else
309
+
310
+ auto upper_diagonal = bidiagonal.template diagonal<1>();
311
+ typename MatrixType::RealScalar* upper_diagonal_ptr =
312
+ upper_diagonal.size() > 0 ? &upper_diagonal.coeffRef(k) : nullptr;
313
+
314
+ if (k + bs == cols || bcols < 48) // somewhat arbitrary threshold
346
315
  {
347
- upperbidiagonalization_blocked_helper<BlockType>( B,
348
- &(bidiagonal.template diagonal<0>().coeffRef(k)),
349
- &(bidiagonal.template diagonal<1>().coeffRef(k)),
350
- bs,
351
- X.topLeftCorner(brows,bs),
352
- Y.topLeftCorner(bcols,bs)
353
- );
316
+ upperbidiagonalization_inplace_unblocked(B, &(bidiagonal.template diagonal<0>().coeffRef(k)), upper_diagonal_ptr,
317
+ X.data());
318
+ break; // We're done
319
+ } else {
320
+ upperbidiagonalization_blocked_helper<BlockType>(B, &(bidiagonal.template diagonal<0>().coeffRef(k)),
321
+ upper_diagonal_ptr, bs, X.topLeftCorner(brows, bs),
322
+ Y.topLeftCorner(bcols, bs));
354
323
  }
355
324
  }
356
325
  }
357
326
 
358
- template<typename _MatrixType>
359
- UpperBidiagonalization<_MatrixType>& UpperBidiagonalization<_MatrixType>::computeUnblocked(const _MatrixType& matrix)
360
- {
327
+ template <typename MatrixType_>
328
+ UpperBidiagonalization<MatrixType_>& UpperBidiagonalization<MatrixType_>::computeUnblocked(const MatrixType_& matrix) {
361
329
  Index rows = matrix.rows();
362
330
  Index cols = matrix.cols();
363
331
  EIGEN_ONLY_USED_FOR_DEBUG(cols);
@@ -368,18 +336,15 @@ UpperBidiagonalization<_MatrixType>& UpperBidiagonalization<_MatrixType>::comput
368
336
 
369
337
  ColVectorType temp(rows);
370
338
 
371
- upperbidiagonalization_inplace_unblocked(m_householder,
372
- &(m_bidiagonal.template diagonal<0>().coeffRef(0)),
373
- &(m_bidiagonal.template diagonal<1>().coeffRef(0)),
374
- temp.data());
339
+ upperbidiagonalization_inplace_unblocked(m_householder, &(m_bidiagonal.template diagonal<0>().coeffRef(0)),
340
+ &(m_bidiagonal.template diagonal<1>().coeffRef(0)), temp.data());
375
341
 
376
342
  m_isInitialized = true;
377
343
  return *this;
378
344
  }
379
345
 
380
- template<typename _MatrixType>
381
- UpperBidiagonalization<_MatrixType>& UpperBidiagonalization<_MatrixType>::compute(const _MatrixType& matrix)
382
- {
346
+ template <typename MatrixType_>
347
+ UpperBidiagonalization<MatrixType_>& UpperBidiagonalization<MatrixType_>::compute(const MatrixType_& matrix) {
383
348
  Index rows = matrix.rows();
384
349
  Index cols = matrix.cols();
385
350
  EIGEN_ONLY_USED_FOR_DEBUG(rows);
@@ -389,7 +354,7 @@ UpperBidiagonalization<_MatrixType>& UpperBidiagonalization<_MatrixType>::comput
389
354
 
390
355
  m_householder = matrix;
391
356
  upperbidiagonalization_inplace_blocked(m_householder, m_bidiagonal);
392
-
357
+
393
358
  m_isInitialized = true;
394
359
  return *this;
395
360
  }
@@ -407,8 +372,8 @@ MatrixBase<Derived>::bidiagonalization() const
407
372
  }
408
373
  #endif
409
374
 
410
- } // end namespace internal
375
+ } // end namespace internal
411
376
 
412
- } // end namespace Eigen
377
+ } // end namespace Eigen
413
378
 
414
- #endif // EIGEN_BIDIAGONALIZATION_H
379
+ #endif // EIGEN_BIDIAGONALIZATION_H
@@ -0,0 +1,3 @@
1
+ #ifndef EIGEN_SPARSECHOLESKY_MODULE_H
2
+ #error "Please include Eigen/SparseCholesky instead of including headers inside the src directory directly."
3
+ #endif