@smake/eigen 1.0.2 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (435) hide show
  1. package/README.md +1 -1
  2. package/eigen/Eigen/AccelerateSupport +52 -0
  3. package/eigen/Eigen/Cholesky +18 -21
  4. package/eigen/Eigen/CholmodSupport +28 -28
  5. package/eigen/Eigen/Core +235 -326
  6. package/eigen/Eigen/Eigenvalues +16 -14
  7. package/eigen/Eigen/Geometry +21 -24
  8. package/eigen/Eigen/Householder +9 -8
  9. package/eigen/Eigen/IterativeLinearSolvers +8 -4
  10. package/eigen/Eigen/Jacobi +14 -14
  11. package/eigen/Eigen/KLUSupport +43 -0
  12. package/eigen/Eigen/LU +16 -20
  13. package/eigen/Eigen/MetisSupport +12 -12
  14. package/eigen/Eigen/OrderingMethods +54 -54
  15. package/eigen/Eigen/PaStiXSupport +23 -20
  16. package/eigen/Eigen/PardisoSupport +17 -14
  17. package/eigen/Eigen/QR +18 -21
  18. package/eigen/Eigen/QtAlignedMalloc +5 -13
  19. package/eigen/Eigen/SPQRSupport +21 -14
  20. package/eigen/Eigen/SVD +23 -18
  21. package/eigen/Eigen/Sparse +1 -4
  22. package/eigen/Eigen/SparseCholesky +18 -23
  23. package/eigen/Eigen/SparseCore +18 -17
  24. package/eigen/Eigen/SparseLU +12 -8
  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 +377 -401
  37. package/eigen/Eigen/src/Cholesky/LLT.h +332 -360
  38. package/eigen/Eigen/src/Cholesky/LLT_LAPACKE.h +81 -56
  39. package/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +620 -521
  40. package/eigen/Eigen/src/CholmodSupport/InternalHeaderCheck.h +3 -0
  41. package/eigen/Eigen/src/Core/ArithmeticSequence.h +239 -0
  42. package/eigen/Eigen/src/Core/Array.h +341 -294
  43. package/eigen/Eigen/src/Core/ArrayBase.h +190 -203
  44. package/eigen/Eigen/src/Core/ArrayWrapper.h +127 -171
  45. package/eigen/Eigen/src/Core/Assign.h +30 -40
  46. package/eigen/Eigen/src/Core/AssignEvaluator.h +711 -589
  47. package/eigen/Eigen/src/Core/Assign_MKL.h +130 -125
  48. package/eigen/Eigen/src/Core/BandMatrix.h +268 -283
  49. package/eigen/Eigen/src/Core/Block.h +375 -398
  50. package/eigen/Eigen/src/Core/CommaInitializer.h +86 -97
  51. package/eigen/Eigen/src/Core/ConditionEstimator.h +51 -53
  52. package/eigen/Eigen/src/Core/CoreEvaluators.h +1356 -1026
  53. package/eigen/Eigen/src/Core/CoreIterators.h +73 -59
  54. package/eigen/Eigen/src/Core/CwiseBinaryOp.h +114 -132
  55. package/eigen/Eigen/src/Core/CwiseNullaryOp.h +726 -617
  56. package/eigen/Eigen/src/Core/CwiseTernaryOp.h +77 -103
  57. package/eigen/Eigen/src/Core/CwiseUnaryOp.h +56 -68
  58. package/eigen/Eigen/src/Core/CwiseUnaryView.h +132 -95
  59. package/eigen/Eigen/src/Core/DenseBase.h +632 -571
  60. package/eigen/Eigen/src/Core/DenseCoeffsBase.h +511 -624
  61. package/eigen/Eigen/src/Core/DenseStorage.h +512 -509
  62. package/eigen/Eigen/src/Core/DeviceWrapper.h +153 -0
  63. package/eigen/Eigen/src/Core/Diagonal.h +169 -210
  64. package/eigen/Eigen/src/Core/DiagonalMatrix.h +351 -274
  65. package/eigen/Eigen/src/Core/DiagonalProduct.h +12 -10
  66. package/eigen/Eigen/src/Core/Dot.h +172 -222
  67. package/eigen/Eigen/src/Core/EigenBase.h +75 -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 -109
  71. package/eigen/Eigen/src/Core/Fuzzy.h +82 -105
  72. package/eigen/Eigen/src/Core/GeneralProduct.h +327 -263
  73. package/eigen/Eigen/src/Core/GenericPacketMath.h +1472 -360
  74. package/eigen/Eigen/src/Core/GlobalFunctions.h +194 -151
  75. package/eigen/Eigen/src/Core/IO.h +147 -139
  76. package/eigen/Eigen/src/Core/IndexedView.h +321 -0
  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 +56 -66
  80. package/eigen/Eigen/src/Core/Map.h +124 -142
  81. package/eigen/Eigen/src/Core/MapBase.h +256 -281
  82. package/eigen/Eigen/src/Core/MathFunctions.h +1620 -938
  83. package/eigen/Eigen/src/Core/MathFunctionsImpl.h +233 -71
  84. package/eigen/Eigen/src/Core/Matrix.h +491 -416
  85. package/eigen/Eigen/src/Core/MatrixBase.h +468 -453
  86. package/eigen/Eigen/src/Core/NestByValue.h +66 -85
  87. package/eigen/Eigen/src/Core/NoAlias.h +79 -85
  88. package/eigen/Eigen/src/Core/NumTraits.h +235 -148
  89. package/eigen/Eigen/src/Core/PartialReduxEvaluator.h +253 -0
  90. package/eigen/Eigen/src/Core/PermutationMatrix.h +461 -511
  91. package/eigen/Eigen/src/Core/PlainObjectBase.h +871 -894
  92. package/eigen/Eigen/src/Core/Product.h +260 -139
  93. package/eigen/Eigen/src/Core/ProductEvaluators.h +863 -714
  94. package/eigen/Eigen/src/Core/Random.h +161 -136
  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 +366 -336
  98. package/eigen/Eigen/src/Core/Ref.h +308 -209
  99. package/eigen/Eigen/src/Core/Replicate.h +94 -106
  100. package/eigen/Eigen/src/Core/Reshaped.h +398 -0
  101. package/eigen/Eigen/src/Core/ReturnByValue.h +49 -55
  102. package/eigen/Eigen/src/Core/Reverse.h +136 -145
  103. package/eigen/Eigen/src/Core/Select.h +70 -140
  104. package/eigen/Eigen/src/Core/SelfAdjointView.h +262 -285
  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 +97 -111
  108. package/eigen/Eigen/src/Core/SolveTriangular.h +131 -129
  109. package/eigen/Eigen/src/Core/SolverBase.h +138 -101
  110. package/eigen/Eigen/src/Core/StableNorm.h +156 -160
  111. package/eigen/Eigen/src/Core/StlIterators.h +619 -0
  112. package/eigen/Eigen/src/Core/Stride.h +91 -88
  113. package/eigen/Eigen/src/Core/Swap.h +70 -38
  114. package/eigen/Eigen/src/Core/Transpose.h +295 -273
  115. package/eigen/Eigen/src/Core/Transpositions.h +272 -317
  116. package/eigen/Eigen/src/Core/TriangularMatrix.h +670 -755
  117. package/eigen/Eigen/src/Core/VectorBlock.h +59 -72
  118. package/eigen/Eigen/src/Core/VectorwiseOp.h +668 -630
  119. package/eigen/Eigen/src/Core/Visitor.h +480 -216
  120. package/eigen/Eigen/src/Core/arch/AVX/Complex.h +407 -293
  121. package/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +79 -388
  122. package/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +2935 -491
  123. package/eigen/Eigen/src/Core/arch/AVX/Reductions.h +353 -0
  124. package/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +279 -22
  125. package/eigen/Eigen/src/Core/arch/AVX512/Complex.h +472 -0
  126. package/eigen/Eigen/src/Core/arch/AVX512/GemmKernel.h +1245 -0
  127. package/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +85 -333
  128. package/eigen/Eigen/src/Core/arch/AVX512/MathFunctionsFP16.h +75 -0
  129. package/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +2490 -649
  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 +277 -0
  135. package/eigen/Eigen/src/Core/arch/AVX512/TypeCastingFP16.h +130 -0
  136. package/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +521 -298
  137. package/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +39 -280
  138. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +3686 -0
  139. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +205 -0
  140. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +901 -0
  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 +3391 -723
  144. package/eigen/Eigen/src/Core/arch/AltiVec/TypeCasting.h +153 -0
  145. package/eigen/Eigen/src/Core/arch/Default/BFloat16.h +866 -0
  146. package/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +113 -14
  147. package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +2634 -0
  148. package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +227 -0
  149. package/eigen/Eigen/src/Core/arch/Default/Half.h +1091 -0
  150. package/eigen/Eigen/src/Core/arch/Default/Settings.h +11 -13
  151. package/eigen/Eigen/src/Core/arch/GPU/Complex.h +244 -0
  152. package/eigen/Eigen/src/Core/arch/GPU/MathFunctions.h +104 -0
  153. package/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +1712 -0
  154. package/eigen/Eigen/src/Core/arch/GPU/Tuple.h +268 -0
  155. package/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +77 -0
  156. package/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
  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 +620 -0
  164. package/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +379 -0
  165. package/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +1237 -0
  166. package/eigen/Eigen/src/Core/arch/NEON/Complex.h +531 -289
  167. package/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +243 -0
  168. package/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +50 -73
  169. package/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +5915 -579
  170. package/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +1642 -0
  171. package/eigen/Eigen/src/Core/arch/NEON/UnaryFunctors.h +57 -0
  172. package/eigen/Eigen/src/Core/arch/SSE/Complex.h +366 -334
  173. package/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +40 -514
  174. package/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +2164 -675
  175. package/eigen/Eigen/src/Core/arch/SSE/Reductions.h +324 -0
  176. package/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +188 -35
  177. package/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +48 -0
  178. package/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +674 -0
  179. package/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +52 -0
  180. package/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +227 -0
  181. package/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +303 -0
  182. package/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +576 -0
  183. package/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +83 -0
  184. package/eigen/Eigen/src/Core/arch/ZVector/Complex.h +434 -261
  185. package/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +160 -53
  186. package/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +1073 -605
  187. package/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +123 -117
  188. package/eigen/Eigen/src/Core/functors/BinaryFunctors.h +594 -322
  189. package/eigen/Eigen/src/Core/functors/NullaryFunctors.h +204 -118
  190. package/eigen/Eigen/src/Core/functors/StlFunctors.h +110 -97
  191. package/eigen/Eigen/src/Core/functors/TernaryFunctors.h +34 -7
  192. package/eigen/Eigen/src/Core/functors/UnaryFunctors.h +1158 -530
  193. package/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +2329 -1333
  194. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +328 -364
  195. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +191 -178
  196. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +85 -82
  197. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +154 -73
  198. package/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +396 -542
  199. package/eigen/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +80 -77
  200. package/eigen/Eigen/src/Core/products/Parallelizer.h +208 -92
  201. package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +331 -375
  202. package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +206 -224
  203. package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +139 -146
  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 -46
  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 -275
  212. package/eigen/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +108 -109
  213. package/eigen/Eigen/src/Core/products/TriangularSolverVector.h +70 -93
  214. package/eigen/Eigen/src/Core/util/Assert.h +158 -0
  215. package/eigen/Eigen/src/Core/util/BlasUtil.h +413 -290
  216. package/eigen/Eigen/src/Core/util/ConfigureVectorization.h +543 -0
  217. package/eigen/Eigen/src/Core/util/Constants.h +314 -263
  218. package/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +130 -78
  219. package/eigen/Eigen/src/Core/util/EmulateArray.h +270 -0
  220. package/eigen/Eigen/src/Core/util/ForwardDeclarations.h +450 -224
  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 +487 -0
  224. package/eigen/Eigen/src/Core/util/IntegralConstant.h +279 -0
  225. package/eigen/Eigen/src/Core/util/MKL_support.h +39 -30
  226. package/eigen/Eigen/src/Core/util/Macros.h +939 -646
  227. package/eigen/Eigen/src/Core/util/MaxSizeVector.h +139 -0
  228. package/eigen/Eigen/src/Core/util/Memory.h +1042 -650
  229. package/eigen/Eigen/src/Core/util/Meta.h +618 -426
  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 +51 -0
  233. package/eigen/Eigen/src/Core/util/Serializer.h +209 -0
  234. package/eigen/Eigen/src/Core/util/StaticAssert.h +51 -164
  235. package/eigen/Eigen/src/Core/util/SymbolicIndex.h +445 -0
  236. package/eigen/Eigen/src/Core/util/XprHelper.h +793 -538
  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 +91 -107
  246. package/eigen/Eigen/src/Eigenvalues/RealQZ.h +539 -606
  247. package/eigen/Eigen/src/Eigenvalues/RealSchur.h +348 -382
  248. package/eigen/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +41 -35
  249. package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +579 -600
  250. package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +47 -44
  251. package/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +434 -461
  252. package/eigen/Eigen/src/Geometry/AlignedBox.h +307 -214
  253. package/eigen/Eigen/src/Geometry/AngleAxis.h +135 -137
  254. package/eigen/Eigen/src/Geometry/EulerAngles.h +163 -74
  255. package/eigen/Eigen/src/Geometry/Homogeneous.h +289 -333
  256. package/eigen/Eigen/src/Geometry/Hyperplane.h +152 -161
  257. package/eigen/Eigen/src/Geometry/InternalHeaderCheck.h +3 -0
  258. package/eigen/Eigen/src/Geometry/OrthoMethods.h +168 -145
  259. package/eigen/Eigen/src/Geometry/ParametrizedLine.h +141 -104
  260. package/eigen/Eigen/src/Geometry/Quaternion.h +595 -497
  261. package/eigen/Eigen/src/Geometry/Rotation2D.h +110 -108
  262. package/eigen/Eigen/src/Geometry/RotationBase.h +148 -145
  263. package/eigen/Eigen/src/Geometry/Scaling.h +115 -90
  264. package/eigen/Eigen/src/Geometry/Transform.h +896 -953
  265. package/eigen/Eigen/src/Geometry/Translation.h +100 -98
  266. package/eigen/Eigen/src/Geometry/Umeyama.h +79 -84
  267. package/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +154 -0
  268. package/eigen/Eigen/src/Householder/BlockHouseholder.h +54 -42
  269. package/eigen/Eigen/src/Householder/Householder.h +104 -122
  270. package/eigen/Eigen/src/Householder/HouseholderSequence.h +416 -382
  271. package/eigen/Eigen/src/Householder/InternalHeaderCheck.h +3 -0
  272. package/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +153 -166
  273. package/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +127 -138
  274. package/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +95 -124
  275. package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +269 -267
  276. package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +246 -259
  277. package/eigen/Eigen/src/IterativeLinearSolvers/InternalHeaderCheck.h +3 -0
  278. package/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +218 -217
  279. package/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +80 -103
  280. package/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +59 -63
  281. package/eigen/Eigen/src/Jacobi/InternalHeaderCheck.h +3 -0
  282. package/eigen/Eigen/src/Jacobi/Jacobi.h +256 -291
  283. package/eigen/Eigen/src/KLUSupport/InternalHeaderCheck.h +3 -0
  284. package/eigen/Eigen/src/KLUSupport/KLUSupport.h +339 -0
  285. package/eigen/Eigen/src/LU/Determinant.h +60 -63
  286. package/eigen/Eigen/src/LU/FullPivLU.h +561 -626
  287. package/eigen/Eigen/src/LU/InternalHeaderCheck.h +3 -0
  288. package/eigen/Eigen/src/LU/InverseImpl.h +213 -275
  289. package/eigen/Eigen/src/LU/PartialPivLU.h +407 -435
  290. package/eigen/Eigen/src/LU/PartialPivLU_LAPACKE.h +54 -40
  291. package/eigen/Eigen/src/LU/arch/InverseSize4.h +353 -0
  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 +250 -282
  295. package/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +950 -1103
  296. package/eigen/Eigen/src/OrderingMethods/InternalHeaderCheck.h +3 -0
  297. package/eigen/Eigen/src/OrderingMethods/Ordering.h +111 -122
  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 -429
  302. package/eigen/Eigen/src/QR/ColPivHouseholderQR.h +494 -473
  303. package/eigen/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +120 -56
  304. package/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +223 -137
  305. package/eigen/Eigen/src/QR/FullPivHouseholderQR.h +517 -460
  306. package/eigen/Eigen/src/QR/HouseholderQR.h +412 -278
  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 +263 -261
  311. package/eigen/Eigen/src/SVD/BDCSVD.h +872 -679
  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 +585 -543
  315. package/eigen/Eigen/src/SVD/JacobiSVD_LAPACKE.h +85 -49
  316. package/eigen/Eigen/src/SVD/SVDBase.h +281 -160
  317. package/eigen/Eigen/src/SVD/UpperBidiagonalization.h +202 -237
  318. package/eigen/Eigen/src/SparseCholesky/InternalHeaderCheck.h +3 -0
  319. package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +769 -590
  320. package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +318 -129
  321. package/eigen/Eigen/src/SparseCore/AmbiVector.h +202 -251
  322. package/eigen/Eigen/src/SparseCore/CompressedStorage.h +184 -236
  323. package/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +140 -184
  324. package/eigen/Eigen/src/SparseCore/InternalHeaderCheck.h +3 -0
  325. package/eigen/Eigen/src/SparseCore/SparseAssign.h +174 -111
  326. package/eigen/Eigen/src/SparseCore/SparseBlock.h +408 -477
  327. package/eigen/Eigen/src/SparseCore/SparseColEtree.h +100 -112
  328. package/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +531 -280
  329. package/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +559 -347
  330. package/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +100 -108
  331. package/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +185 -191
  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 +1614 -1142
  337. package/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +403 -357
  338. package/eigen/Eigen/src/SparseCore/SparsePermutation.h +186 -115
  339. package/eigen/Eigen/src/SparseCore/SparseProduct.h +100 -91
  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 +371 -414
  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 +146 -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 +814 -618
  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 +273 -255
  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 +90 -101
  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 +125 -133
  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 +451 -490
  370. package/eigen/Eigen/src/StlSupport/StdDeque.h +28 -105
  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 -732
  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 +480 -380
  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 +9976 -16182
  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.inc +1370 -0
  401. package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.inc +116 -0
  402. package/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.inc +167 -0
  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/lib/LibEigen.d.ts +4 -0
  409. package/lib/LibEigen.js +14 -0
  410. package/lib/index.d.ts +1 -1
  411. package/lib/index.js +7 -3
  412. package/package.json +2 -10
  413. package/eigen/Eigen/CMakeLists.txt +0 -19
  414. package/eigen/Eigen/src/Core/BooleanRedux.h +0 -164
  415. package/eigen/Eigen/src/Core/arch/CUDA/Complex.h +0 -103
  416. package/eigen/Eigen/src/Core/arch/CUDA/Half.h +0 -675
  417. package/eigen/Eigen/src/Core/arch/CUDA/MathFunctions.h +0 -91
  418. package/eigen/Eigen/src/Core/arch/CUDA/PacketMath.h +0 -333
  419. package/eigen/Eigen/src/Core/arch/CUDA/PacketMathHalf.h +0 -1124
  420. package/eigen/Eigen/src/Core/arch/CUDA/TypeCasting.h +0 -212
  421. package/eigen/Eigen/src/Core/util/NonMPL2.h +0 -3
  422. package/eigen/Eigen/src/Geometry/arch/Geometry_SSE.h +0 -161
  423. package/eigen/Eigen/src/LU/arch/Inverse_SSE.h +0 -338
  424. package/eigen/Eigen/src/SparseCore/MappedSparseMatrix.h +0 -67
  425. package/eigen/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +0 -280
  426. package/eigen/Eigen/src/misc/lapack.h +0 -152
  427. package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h +0 -332
  428. package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +0 -552
  429. package/eigen/Eigen/src/plugins/BlockMethods.h +0 -1058
  430. package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.h +0 -115
  431. package/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.h +0 -163
  432. package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +0 -152
  433. package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +0 -85
  434. package/lib/eigen.d.ts +0 -2
  435. package/lib/eigen.js +0 -15
@@ -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).transpose(), 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
-
205
- // let's use the begining 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;
190
+ SubColumnType y_k(Y.col(k).tail(remainingCols));
191
+
192
+ // let's use the beginning of column k of Y as a temporary vector
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
-
234
- // let's use the begining of column k of X as a temporary vectors
219
+ SubColumnType x_k(X.col(k).tail(remainingRows - 1));
220
+
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