@smake/eigen 1.0.2 → 1.1.0

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 (287) hide show
  1. package/README.md +1 -1
  2. package/eigen/COPYING.APACHE +203 -0
  3. package/eigen/COPYING.BSD +26 -0
  4. package/eigen/COPYING.GPL +674 -0
  5. package/eigen/COPYING.LGPL +502 -0
  6. package/eigen/COPYING.MINPACK +51 -0
  7. package/eigen/COPYING.MPL2 +373 -0
  8. package/eigen/COPYING.README +18 -0
  9. package/eigen/Eigen/Cholesky +0 -1
  10. package/eigen/Eigen/Core +108 -266
  11. package/eigen/Eigen/Eigenvalues +0 -1
  12. package/eigen/Eigen/Geometry +3 -6
  13. package/eigen/Eigen/Householder +0 -1
  14. package/eigen/Eigen/Jacobi +0 -1
  15. package/eigen/Eigen/KLUSupport +41 -0
  16. package/eigen/Eigen/LU +2 -5
  17. package/eigen/Eigen/OrderingMethods +0 -3
  18. package/eigen/Eigen/PaStiXSupport +1 -0
  19. package/eigen/Eigen/PardisoSupport +0 -0
  20. package/eigen/Eigen/QR +0 -1
  21. package/eigen/Eigen/QtAlignedMalloc +0 -1
  22. package/eigen/Eigen/SVD +0 -1
  23. package/eigen/Eigen/Sparse +0 -2
  24. package/eigen/Eigen/SparseCholesky +0 -8
  25. package/eigen/Eigen/SparseLU +4 -0
  26. package/eigen/Eigen/src/Cholesky/LDLT.h +42 -27
  27. package/eigen/Eigen/src/Cholesky/LLT.h +39 -23
  28. package/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +90 -47
  29. package/eigen/Eigen/src/Core/ArithmeticSequence.h +413 -0
  30. package/eigen/Eigen/src/Core/Array.h +99 -11
  31. package/eigen/Eigen/src/Core/ArrayBase.h +1 -1
  32. package/eigen/Eigen/src/Core/ArrayWrapper.h +21 -21
  33. package/eigen/Eigen/src/Core/Assign.h +1 -1
  34. package/eigen/Eigen/src/Core/AssignEvaluator.h +125 -50
  35. package/eigen/Eigen/src/Core/Assign_MKL.h +10 -10
  36. package/eigen/Eigen/src/Core/BandMatrix.h +16 -16
  37. package/eigen/Eigen/src/Core/Block.h +56 -60
  38. package/eigen/Eigen/src/Core/BooleanRedux.h +29 -31
  39. package/eigen/Eigen/src/Core/CommaInitializer.h +7 -3
  40. package/eigen/Eigen/src/Core/CoreEvaluators.h +325 -272
  41. package/eigen/Eigen/src/Core/CoreIterators.h +5 -0
  42. package/eigen/Eigen/src/Core/CwiseBinaryOp.h +21 -22
  43. package/eigen/Eigen/src/Core/CwiseNullaryOp.h +153 -18
  44. package/eigen/Eigen/src/Core/CwiseUnaryOp.h +6 -6
  45. package/eigen/Eigen/src/Core/CwiseUnaryView.h +12 -10
  46. package/eigen/Eigen/src/Core/DenseBase.h +128 -39
  47. package/eigen/Eigen/src/Core/DenseCoeffsBase.h +25 -21
  48. package/eigen/Eigen/src/Core/DenseStorage.h +150 -68
  49. package/eigen/Eigen/src/Core/Diagonal.h +21 -23
  50. package/eigen/Eigen/src/Core/DiagonalMatrix.h +50 -2
  51. package/eigen/Eigen/src/Core/DiagonalProduct.h +1 -1
  52. package/eigen/Eigen/src/Core/Dot.h +10 -10
  53. package/eigen/Eigen/src/Core/EigenBase.h +10 -9
  54. package/eigen/Eigen/src/Core/ForceAlignedAccess.h +8 -4
  55. package/eigen/Eigen/src/Core/Fuzzy.h +3 -3
  56. package/eigen/Eigen/src/Core/GeneralProduct.h +20 -10
  57. package/eigen/Eigen/src/Core/GenericPacketMath.h +597 -147
  58. package/eigen/Eigen/src/Core/GlobalFunctions.h +40 -33
  59. package/eigen/Eigen/src/Core/IO.h +40 -7
  60. package/eigen/Eigen/src/Core/IndexedView.h +237 -0
  61. package/eigen/Eigen/src/Core/Inverse.h +9 -10
  62. package/eigen/Eigen/src/Core/Map.h +7 -7
  63. package/eigen/Eigen/src/Core/MapBase.h +5 -3
  64. package/eigen/Eigen/src/Core/MathFunctions.h +756 -120
  65. package/eigen/Eigen/src/Core/MathFunctionsImpl.h +118 -19
  66. package/eigen/Eigen/src/Core/Matrix.h +131 -25
  67. package/eigen/Eigen/src/Core/MatrixBase.h +19 -2
  68. package/eigen/Eigen/src/Core/NestByValue.h +25 -50
  69. package/eigen/Eigen/src/Core/NoAlias.h +4 -3
  70. package/eigen/Eigen/src/Core/NumTraits.h +107 -20
  71. package/eigen/Eigen/src/Core/PartialReduxEvaluator.h +232 -0
  72. package/eigen/Eigen/src/Core/PermutationMatrix.h +3 -3
  73. package/eigen/Eigen/src/Core/PlainObjectBase.h +145 -54
  74. package/eigen/Eigen/src/Core/Product.h +30 -25
  75. package/eigen/Eigen/src/Core/ProductEvaluators.h +183 -142
  76. package/eigen/Eigen/src/Core/Random.h +37 -1
  77. package/eigen/Eigen/src/Core/Redux.h +180 -170
  78. package/eigen/Eigen/src/Core/Ref.h +118 -21
  79. package/eigen/Eigen/src/Core/Replicate.h +8 -8
  80. package/eigen/Eigen/src/Core/Reshaped.h +454 -0
  81. package/eigen/Eigen/src/Core/ReturnByValue.h +7 -5
  82. package/eigen/Eigen/src/Core/Reverse.h +18 -12
  83. package/eigen/Eigen/src/Core/Select.h +8 -6
  84. package/eigen/Eigen/src/Core/SelfAdjointView.h +33 -20
  85. package/eigen/Eigen/src/Core/Solve.h +14 -14
  86. package/eigen/Eigen/src/Core/SolveTriangular.h +13 -13
  87. package/eigen/Eigen/src/Core/SolverBase.h +41 -3
  88. package/eigen/Eigen/src/Core/StableNorm.h +100 -70
  89. package/eigen/Eigen/src/Core/StlIterators.h +463 -0
  90. package/eigen/Eigen/src/Core/Stride.h +9 -4
  91. package/eigen/Eigen/src/Core/Swap.h +5 -4
  92. package/eigen/Eigen/src/Core/Transpose.h +86 -27
  93. package/eigen/Eigen/src/Core/Transpositions.h +26 -8
  94. package/eigen/Eigen/src/Core/TriangularMatrix.h +88 -72
  95. package/eigen/Eigen/src/Core/VectorBlock.h +5 -5
  96. package/eigen/Eigen/src/Core/VectorwiseOp.h +159 -70
  97. package/eigen/Eigen/src/Core/Visitor.h +137 -29
  98. package/eigen/Eigen/src/Core/arch/AVX/Complex.h +50 -129
  99. package/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +126 -337
  100. package/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +1092 -155
  101. package/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +65 -1
  102. package/eigen/Eigen/src/Core/arch/AVX512/Complex.h +422 -0
  103. package/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +186 -213
  104. package/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +1250 -252
  105. package/eigen/Eigen/src/Core/arch/AVX512/TypeCasting.h +89 -0
  106. package/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +152 -165
  107. package/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +19 -251
  108. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +2937 -0
  109. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +221 -0
  110. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +629 -0
  111. package/eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h +2042 -392
  112. package/eigen/Eigen/src/Core/arch/CUDA/Complex.h +235 -80
  113. package/eigen/Eigen/src/Core/arch/Default/BFloat16.h +700 -0
  114. package/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +102 -14
  115. package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +1649 -0
  116. package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +110 -0
  117. package/eigen/Eigen/src/Core/arch/Default/Half.h +942 -0
  118. package/eigen/Eigen/src/Core/arch/Default/Settings.h +1 -1
  119. package/eigen/Eigen/src/Core/arch/Default/TypeCasting.h +120 -0
  120. package/eigen/Eigen/src/Core/arch/{CUDA → GPU}/MathFunctions.h +16 -4
  121. package/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +1685 -0
  122. package/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +80 -0
  123. package/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
  124. package/eigen/Eigen/src/Core/arch/MSA/Complex.h +648 -0
  125. package/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +387 -0
  126. package/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +1233 -0
  127. package/eigen/Eigen/src/Core/arch/NEON/Complex.h +313 -219
  128. package/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +183 -0
  129. package/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +54 -70
  130. package/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +4376 -549
  131. package/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +1419 -0
  132. package/eigen/Eigen/src/Core/arch/SSE/Complex.h +59 -179
  133. package/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +65 -428
  134. package/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +893 -283
  135. package/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +65 -0
  136. package/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +44 -0
  137. package/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +752 -0
  138. package/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +49 -0
  139. package/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +232 -0
  140. package/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +301 -0
  141. package/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +670 -0
  142. package/eigen/Eigen/src/Core/arch/SYCL/SyclMemoryModel.h +694 -0
  143. package/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +85 -0
  144. package/eigen/Eigen/src/Core/arch/ZVector/Complex.h +212 -183
  145. package/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +101 -5
  146. package/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +510 -395
  147. package/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +11 -2
  148. package/eigen/Eigen/src/Core/functors/BinaryFunctors.h +112 -46
  149. package/eigen/Eigen/src/Core/functors/NullaryFunctors.h +31 -30
  150. package/eigen/Eigen/src/Core/functors/StlFunctors.h +32 -2
  151. package/eigen/Eigen/src/Core/functors/UnaryFunctors.h +354 -15
  152. package/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +1073 -585
  153. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +29 -7
  154. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +4 -4
  155. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +1 -1
  156. package/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +382 -483
  157. package/eigen/Eigen/src/Core/products/Parallelizer.h +23 -9
  158. package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +23 -6
  159. package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +8 -6
  160. package/eigen/Eigen/src/Core/products/SelfadjointProduct.h +2 -2
  161. package/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h +5 -4
  162. package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h +3 -3
  163. package/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h +5 -3
  164. package/eigen/Eigen/src/Core/products/TriangularSolverVector.h +13 -10
  165. package/eigen/Eigen/src/Core/util/BlasUtil.h +208 -124
  166. package/eigen/Eigen/src/Core/util/ConfigureVectorization.h +512 -0
  167. package/eigen/Eigen/src/Core/util/Constants.h +25 -9
  168. package/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +14 -2
  169. package/eigen/Eigen/src/Core/util/ForwardDeclarations.h +28 -4
  170. package/eigen/Eigen/src/Core/util/IndexedViewHelper.h +186 -0
  171. package/eigen/Eigen/src/Core/util/IntegralConstant.h +272 -0
  172. package/eigen/Eigen/src/Core/util/MKL_support.h +8 -1
  173. package/eigen/Eigen/src/Core/util/Macros.h +661 -250
  174. package/eigen/Eigen/src/Core/util/Memory.h +222 -52
  175. package/eigen/Eigen/src/Core/util/Meta.h +349 -105
  176. package/eigen/Eigen/src/Core/util/ReshapedHelper.h +51 -0
  177. package/eigen/Eigen/src/Core/util/StaticAssert.h +8 -5
  178. package/eigen/Eigen/src/Core/util/SymbolicIndex.h +293 -0
  179. package/eigen/Eigen/src/Core/util/XprHelper.h +48 -30
  180. package/eigen/Eigen/src/Eigenvalues/ComplexEigenSolver.h +1 -1
  181. package/eigen/Eigen/src/Eigenvalues/ComplexSchur.h +1 -1
  182. package/eigen/Eigen/src/Eigenvalues/EigenSolver.h +2 -2
  183. package/eigen/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +1 -1
  184. package/eigen/Eigen/src/Eigenvalues/HessenbergDecomposition.h +2 -2
  185. package/eigen/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +2 -2
  186. package/eigen/Eigen/src/Eigenvalues/RealQZ.h +9 -6
  187. package/eigen/Eigen/src/Eigenvalues/RealSchur.h +10 -5
  188. package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +75 -42
  189. package/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +20 -15
  190. package/eigen/Eigen/src/Geometry/AlignedBox.h +99 -5
  191. package/eigen/Eigen/src/Geometry/AngleAxis.h +4 -4
  192. package/eigen/Eigen/src/Geometry/EulerAngles.h +3 -3
  193. package/eigen/Eigen/src/Geometry/Homogeneous.h +15 -11
  194. package/eigen/Eigen/src/Geometry/Hyperplane.h +1 -1
  195. package/eigen/Eigen/src/Geometry/OrthoMethods.h +3 -2
  196. package/eigen/Eigen/src/Geometry/ParametrizedLine.h +39 -2
  197. package/eigen/Eigen/src/Geometry/Quaternion.h +52 -14
  198. package/eigen/Eigen/src/Geometry/Rotation2D.h +3 -3
  199. package/eigen/Eigen/src/Geometry/Scaling.h +22 -4
  200. package/eigen/Eigen/src/Geometry/Transform.h +86 -65
  201. package/eigen/Eigen/src/Geometry/Translation.h +6 -6
  202. package/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +168 -0
  203. package/eigen/Eigen/src/Householder/BlockHouseholder.h +9 -2
  204. package/eigen/Eigen/src/Householder/Householder.h +8 -4
  205. package/eigen/Eigen/src/Householder/HouseholderSequence.h +123 -48
  206. package/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +15 -15
  207. package/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +7 -23
  208. package/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +5 -22
  209. package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +41 -47
  210. package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +51 -60
  211. package/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +70 -20
  212. package/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +2 -20
  213. package/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +11 -9
  214. package/eigen/Eigen/src/Jacobi/Jacobi.h +31 -10
  215. package/eigen/Eigen/src/KLUSupport/KLUSupport.h +358 -0
  216. package/eigen/Eigen/src/LU/Determinant.h +35 -19
  217. package/eigen/Eigen/src/LU/FullPivLU.h +29 -43
  218. package/eigen/Eigen/src/LU/InverseImpl.h +25 -8
  219. package/eigen/Eigen/src/LU/PartialPivLU.h +67 -57
  220. package/eigen/Eigen/src/LU/arch/InverseSize4.h +351 -0
  221. package/eigen/Eigen/src/OrderingMethods/Amd.h +7 -17
  222. package/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +297 -277
  223. package/eigen/Eigen/src/OrderingMethods/Ordering.h +6 -10
  224. package/eigen/Eigen/src/PaStiXSupport/PaStiXSupport.h +1 -1
  225. package/eigen/Eigen/src/PardisoSupport/PardisoSupport.h +10 -9
  226. package/eigen/Eigen/src/QR/ColPivHouseholderQR.h +41 -20
  227. package/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +100 -27
  228. package/eigen/Eigen/src/QR/FullPivHouseholderQR.h +59 -22
  229. package/eigen/Eigen/src/QR/HouseholderQR.h +48 -23
  230. package/eigen/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +25 -3
  231. package/eigen/Eigen/src/SVD/BDCSVD.h +137 -48
  232. package/eigen/Eigen/src/SVD/JacobiSVD.h +22 -14
  233. package/eigen/Eigen/src/SVD/SVDBase.h +82 -21
  234. package/eigen/Eigen/src/SVD/UpperBidiagonalization.h +3 -3
  235. package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +16 -8
  236. package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +11 -36
  237. package/eigen/Eigen/src/SparseCore/CompressedStorage.h +16 -0
  238. package/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +6 -6
  239. package/eigen/Eigen/src/SparseCore/SparseAssign.h +81 -27
  240. package/eigen/Eigen/src/SparseCore/SparseBlock.h +25 -57
  241. package/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +40 -11
  242. package/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +11 -15
  243. package/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +2 -2
  244. package/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +30 -8
  245. package/eigen/Eigen/src/SparseCore/SparseMatrix.h +124 -10
  246. package/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +5 -12
  247. package/eigen/Eigen/src/SparseCore/SparseProduct.h +13 -1
  248. package/eigen/Eigen/src/SparseCore/SparseRef.h +7 -7
  249. package/eigen/Eigen/src/SparseCore/SparseSelfAdjointView.h +3 -0
  250. package/eigen/Eigen/src/SparseCore/SparseUtil.h +8 -0
  251. package/eigen/Eigen/src/SparseCore/SparseVector.h +1 -1
  252. package/eigen/Eigen/src/SparseLU/SparseLU.h +160 -10
  253. package/eigen/Eigen/src/SparseLU/SparseLU_Memory.h +1 -1
  254. package/eigen/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +76 -2
  255. package/eigen/Eigen/src/SparseLU/SparseLU_column_dfs.h +2 -2
  256. package/eigen/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +1 -1
  257. package/eigen/Eigen/src/SparseLU/SparseLU_panel_bmod.h +1 -1
  258. package/eigen/Eigen/src/SparseQR/SparseQR.h +19 -6
  259. package/eigen/Eigen/src/StlSupport/StdDeque.h +2 -14
  260. package/eigen/Eigen/src/StlSupport/StdList.h +2 -2
  261. package/eigen/Eigen/src/StlSupport/StdVector.h +2 -2
  262. package/eigen/Eigen/src/SuperLUSupport/SuperLUSupport.h +6 -8
  263. package/eigen/Eigen/src/UmfPackSupport/UmfPackSupport.h +175 -39
  264. package/eigen/Eigen/src/misc/lapacke.h +5 -4
  265. package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h +27 -1
  266. package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +155 -11
  267. package/eigen/Eigen/src/plugins/BlockMethods.h +626 -242
  268. package/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.h +14 -0
  269. package/eigen/Eigen/src/plugins/IndexedViewMethods.h +262 -0
  270. package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +4 -4
  271. package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +10 -0
  272. package/eigen/Eigen/src/plugins/ReshapedMethods.h +149 -0
  273. package/eigen/README.md +5 -0
  274. package/lib/LibEigen.d.ts +4 -0
  275. package/lib/LibEigen.js +14 -0
  276. package/lib/index.d.ts +1 -1
  277. package/lib/index.js +7 -3
  278. package/package.json +2 -10
  279. package/eigen/Eigen/CMakeLists.txt +0 -19
  280. package/eigen/Eigen/src/Core/arch/CUDA/Half.h +0 -675
  281. package/eigen/Eigen/src/Core/arch/CUDA/PacketMath.h +0 -333
  282. package/eigen/Eigen/src/Core/arch/CUDA/PacketMathHalf.h +0 -1124
  283. package/eigen/Eigen/src/Core/arch/CUDA/TypeCasting.h +0 -212
  284. package/eigen/Eigen/src/Geometry/arch/Geometry_SSE.h +0 -161
  285. package/eigen/Eigen/src/LU/arch/Inverse_SSE.h +0 -338
  286. package/lib/eigen.d.ts +0 -2
  287. package/lib/eigen.js +0 -15
@@ -75,12 +75,12 @@ class MappedSuperNodalMatrix
75
75
  /**
76
76
  * Number of rows
77
77
  */
78
- Index rows() { return m_row; }
78
+ Index rows() const { return m_row; }
79
79
 
80
80
  /**
81
81
  * Number of columns
82
82
  */
83
- Index cols() { return m_col; }
83
+ Index cols() const { return m_col; }
84
84
 
85
85
  /**
86
86
  * Return the array of nonzero values packed by column
@@ -156,6 +156,9 @@ class MappedSuperNodalMatrix
156
156
  class InnerIterator;
157
157
  template<typename Dest>
158
158
  void solveInPlace( MatrixBase<Dest>&X) const;
159
+ template<bool Conjugate, typename Dest>
160
+ void solveTransposedInPlace( MatrixBase<Dest>&X) const;
161
+
159
162
 
160
163
 
161
164
 
@@ -294,6 +297,77 @@ void MappedSuperNodalMatrix<Scalar,Index_>::solveInPlace( MatrixBase<Dest>&X) co
294
297
  }
295
298
  }
296
299
 
300
+ template<typename Scalar, typename Index_>
301
+ template<bool Conjugate, typename Dest>
302
+ void MappedSuperNodalMatrix<Scalar,Index_>::solveTransposedInPlace( MatrixBase<Dest>&X) const
303
+ {
304
+ using numext::conj;
305
+ Index n = int(X.rows());
306
+ Index nrhs = Index(X.cols());
307
+ const Scalar * Lval = valuePtr(); // Nonzero values
308
+ Matrix<Scalar,Dynamic,Dest::ColsAtCompileTime, ColMajor> work(n, nrhs); // working vector
309
+ work.setZero();
310
+ for (Index k = nsuper(); k >= 0; k--)
311
+ {
312
+ Index fsupc = supToCol()[k]; // First column of the current supernode
313
+ Index istart = rowIndexPtr()[fsupc]; // Pointer index to the subscript of the current column
314
+ Index nsupr = rowIndexPtr()[fsupc+1] - istart; // Number of rows in the current supernode
315
+ Index nsupc = supToCol()[k+1] - fsupc; // Number of columns in the current supernode
316
+ Index nrow = nsupr - nsupc; // Number of rows in the non-diagonal part of the supernode
317
+ Index irow; //Current index row
318
+
319
+ if (nsupc == 1 )
320
+ {
321
+ for (Index j = 0; j < nrhs; j++)
322
+ {
323
+ InnerIterator it(*this, fsupc);
324
+ ++it; // Skip the diagonal element
325
+ for (; it; ++it)
326
+ {
327
+ irow = it.row();
328
+ X(fsupc,j) -= X(irow, j) * (Conjugate?conj(it.value()):it.value());
329
+ }
330
+ }
331
+ }
332
+ else
333
+ {
334
+ // The supernode has more than one column
335
+ Index luptr = colIndexPtr()[fsupc];
336
+ Index lda = colIndexPtr()[fsupc+1] - luptr;
337
+
338
+ //Begin Gather
339
+ for (Index j = 0; j < nrhs; j++)
340
+ {
341
+ Index iptr = istart + nsupc;
342
+ for (Index i = 0; i < nrow; i++)
343
+ {
344
+ irow = rowIndex()[iptr];
345
+ work.topRows(nrow)(i,j)= X(irow,j); // Gather operation
346
+ iptr++;
347
+ }
348
+ }
349
+
350
+ // Matrix-vector product with transposed submatrix
351
+ Map<const Matrix<Scalar,Dynamic,Dynamic, ColMajor>, 0, OuterStride<> > A( &(Lval[luptr+nsupc]), nrow, nsupc, OuterStride<>(lda) );
352
+ Map< Matrix<Scalar,Dynamic,Dest::ColsAtCompileTime, ColMajor>, 0, OuterStride<> > U (&(X(fsupc,0)), nsupc, nrhs, OuterStride<>(n) );
353
+ if(Conjugate)
354
+ U = U - A.adjoint() * work.topRows(nrow);
355
+ else
356
+ U = U - A.transpose() * work.topRows(nrow);
357
+
358
+ // Triangular solve (of transposed diagonal block)
359
+ new (&A) Map<const Matrix<Scalar,Dynamic,Dynamic, ColMajor>, 0, OuterStride<> > ( &(Lval[luptr]), nsupc, nsupc, OuterStride<>(lda) );
360
+ if(Conjugate)
361
+ U = A.adjoint().template triangularView<UnitUpper>().solve(U);
362
+ else
363
+ U = A.transpose().template triangularView<UnitUpper>().solve(U);
364
+
365
+ }
366
+
367
+ }
368
+ }
369
+
370
+
297
371
  } // end namespace internal
298
372
 
299
373
  } // end namespace Eigen
@@ -151,7 +151,7 @@ Index SparseLUImpl<Scalar,StorageIndex>::column_dfs(const Index m, const Index j
151
151
  StorageIndex ito = glu.xlsub(fsupc+1);
152
152
  glu.xlsub(jcolm1) = ito;
153
153
  StorageIndex istop = ito + jptr - jm1ptr;
154
- xprune(jcolm1) = istop; // intialize xprune(jcol-1)
154
+ xprune(jcolm1) = istop; // initialize xprune(jcol-1)
155
155
  glu.xlsub(jcol) = istop;
156
156
 
157
157
  for (StorageIndex ifrom = jm1ptr; ifrom < nextl; ++ifrom, ++ito)
@@ -166,7 +166,7 @@ Index SparseLUImpl<Scalar,StorageIndex>::column_dfs(const Index m, const Index j
166
166
  // Tidy up the pointers before exit
167
167
  glu.xsup(nsuper+1) = jcolp1;
168
168
  glu.supno(jcolp1) = nsuper;
169
- xprune(jcol) = StorageIndex(nextl); // Intialize upper bound for pruning
169
+ xprune(jcol) = StorageIndex(nextl); // Initialize upper bound for pruning
170
170
  glu.xlsub(jcolp1) = StorageIndex(nextl);
171
171
 
172
172
  return 0;
@@ -215,7 +215,7 @@ void sparselu_gemm(Index m, Index n, Index d, const Scalar* A, Index lda, const
215
215
  if(RK==4){ a3 = pload<Packet>(A3+i+(I+1)*PacketSize); }\
216
216
  pstore(C0+i+(I)*PacketSize, c0);
217
217
 
218
- // agressive vectorization and peeling
218
+ // aggressive vectorization and peeling
219
219
  for(Index i=0; i<actual_b_end1; i+=PacketSize*8)
220
220
  {
221
221
  EIGEN_ASM_COMMENT("SPARSELU_GEMML_KERNEL2");
@@ -38,7 +38,7 @@ namespace internal {
38
38
  * \brief Performs numeric block updates (sup-panel) in topological order.
39
39
  *
40
40
  * Before entering this routine, the original nonzeros in the panel
41
- * were already copied i nto the spa[m,w]
41
+ * were already copied into the spa[m,w]
42
42
  *
43
43
  * \param m number of rows in the matrix
44
44
  * \param w Panel size
@@ -41,15 +41,16 @@ namespace internal {
41
41
  /**
42
42
  * \ingroup SparseQR_Module
43
43
  * \class SparseQR
44
- * \brief Sparse left-looking rank-revealing QR factorization
44
+ * \brief Sparse left-looking QR factorization with numerical column pivoting
45
45
  *
46
- * This class implements a left-looking rank-revealing QR decomposition
47
- * of sparse matrices. When a column has a norm less than a given tolerance
46
+ * This class implements a left-looking QR decomposition of sparse matrices
47
+ * with numerical column pivoting.
48
+ * When a column has a norm less than a given tolerance
48
49
  * it is implicitly permuted to the end. The QR factorization thus obtained is
49
50
  * given by A*P = Q*R where R is upper triangular or trapezoidal.
50
51
  *
51
52
  * P is the column permutation which is the product of the fill-reducing and the
52
- * rank-revealing permutations. Use colsPermutation() to get it.
53
+ * numerical permutations. Use colsPermutation() to get it.
53
54
  *
54
55
  * Q is the orthogonal matrix represented as products of Householder reflectors.
55
56
  * Use matrixQ() to get an expression and matrixQ().adjoint() to get the adjoint.
@@ -64,6 +65,17 @@ namespace internal {
64
65
  *
65
66
  * \implsparsesolverconcept
66
67
  *
68
+ * The numerical pivoting strategy and default threshold are the same as in SuiteSparse QR, and
69
+ * detailed in the following paper:
70
+ * <i>
71
+ * Tim Davis, "Algorithm 915, SuiteSparseQR: Multifrontal Multithreaded Rank-Revealing
72
+ * Sparse QR Factorization, ACM Trans. on Math. Soft. 38(1), 2011.
73
+ * </i>
74
+ * Even though it is qualified as "rank-revealing", this strategy might fail for some
75
+ * rank deficient problems. When this class is used to solve linear or least-square problems
76
+ * it is thus strongly recommended to check the accuracy of the computed solution. If it
77
+ * failed, it usually helps to increase the threshold with setPivotThreshold.
78
+ *
67
79
  * \warning The input sparse matrix A must be in compressed mode (see SparseMatrix::makeCompressed()).
68
80
  * \warning For complex matrices matrixQ().transpose() will actually return the adjoint matrix.
69
81
  *
@@ -331,7 +343,7 @@ void SparseQR<MatrixType,OrderingType>::analyzePattern(const MatrixType& mat)
331
343
  m_R.resize(m, n);
332
344
  m_Q.resize(m, diagSize);
333
345
 
334
- // Allocate space for nonzero elements : rough estimation
346
+ // Allocate space for nonzero elements: rough estimation
335
347
  m_R.reserve(2*mat.nonZeros()); //FIXME Get a more accurate estimation through symbolic factorization with the etree
336
348
  m_Q.reserve(2*mat.nonZeros());
337
349
  m_hcoeffs.resize(diagSize);
@@ -640,7 +652,8 @@ struct SparseQR_QProduct : ReturnByValue<SparseQR_QProduct<SparseQRType, Derived
640
652
  // Compute res = Q * other column by column
641
653
  for(Index j = 0; j < res.cols(); j++)
642
654
  {
643
- for (Index k = diagSize-1; k >=0; k--)
655
+ Index start_k = internal::is_identity<Derived>::value ? numext::mini(j,diagSize-1) : diagSize-1;
656
+ for (Index k = start_k; k >=0; k--)
644
657
  {
645
658
  Scalar tau = Scalar(0);
646
659
  tau = m_qr.m_Q.col(k).dot(res.col(j));
@@ -36,7 +36,7 @@ namespace std \
36
36
  deque(InputIterator first, InputIterator last, const allocator_type& a = allocator_type()) : deque_base(first, last, a) {} \
37
37
  deque(const deque& c) : deque_base(c) {} \
38
38
  explicit deque(size_type num, const value_type& val = value_type()) : deque_base(num, val) {} \
39
- deque(iterator start, iterator end) : deque_base(start, end) {} \
39
+ deque(iterator start_, iterator end_) : deque_base(start_, end_) {} \
40
40
  deque& operator=(const deque& x) { \
41
41
  deque_base::operator=(x); \
42
42
  return *this; \
@@ -62,7 +62,7 @@ namespace std {
62
62
  : deque_base(first, last, a) {} \
63
63
  deque(const deque& c) : deque_base(c) {} \
64
64
  explicit deque(size_type num, const value_type& val = value_type()) : deque_base(num, val) {} \
65
- deque(iterator start, iterator end) : deque_base(start, end) {} \
65
+ deque(iterator start_, iterator end_) : deque_base(start_, end_) {} \
66
66
  deque& operator=(const deque& x) { \
67
67
  deque_base::operator=(x); \
68
68
  return *this; \
@@ -98,19 +98,7 @@ namespace std {
98
98
  { return deque_base::insert(position,x); }
99
99
  void insert(const_iterator position, size_type new_size, const value_type& x)
100
100
  { deque_base::insert(position, new_size, x); }
101
- #elif defined(_GLIBCXX_DEQUE) && EIGEN_GNUC_AT_LEAST(4,2) && !EIGEN_GNUC_AT_LEAST(10, 1)
102
- // workaround GCC std::deque implementation
103
- // GCC 10.1 doesn't let us access _Deque_impl _M_impl anymore and we have to
104
- // fall-back to the default case
105
- void resize(size_type new_size, const value_type& x)
106
- {
107
- if (new_size < deque_base::size())
108
- deque_base::_M_erase_at_end(this->_M_impl._M_start + new_size);
109
- else
110
- deque_base::insert(deque_base::end(), new_size - deque_base::size(), x);
111
- }
112
101
  #else
113
- // either non-GCC or GCC between 4.1 and 10.1
114
102
  // default implementation which should always work.
115
103
  void resize(size_type new_size, const value_type& x)
116
104
  {
@@ -35,7 +35,7 @@ namespace std \
35
35
  list(InputIterator first, InputIterator last, const allocator_type& a = allocator_type()) : list_base(first, last, a) {} \
36
36
  list(const list& c) : list_base(c) {} \
37
37
  explicit list(size_type num, const value_type& val = value_type()) : list_base(num, val) {} \
38
- list(iterator start, iterator end) : list_base(start, end) {} \
38
+ list(iterator start_, iterator end_) : list_base(start_, end_) {} \
39
39
  list& operator=(const list& x) { \
40
40
  list_base::operator=(x); \
41
41
  return *this; \
@@ -62,7 +62,7 @@ namespace std
62
62
  : list_base(first, last, a) {} \
63
63
  list(const list& c) : list_base(c) {} \
64
64
  explicit list(size_type num, const value_type& val = value_type()) : list_base(num, val) {} \
65
- list(iterator start, iterator end) : list_base(start, end) {} \
65
+ list(iterator start_, iterator end_) : list_base(start_, end_) {} \
66
66
  list& operator=(const list& x) { \
67
67
  list_base::operator=(x); \
68
68
  return *this; \
@@ -36,7 +36,7 @@ namespace std \
36
36
  vector(InputIterator first, InputIterator last, const allocator_type& a = allocator_type()) : vector_base(first, last, a) {} \
37
37
  vector(const vector& c) : vector_base(c) {} \
38
38
  explicit vector(size_type num, const value_type& val = value_type()) : vector_base(num, val) {} \
39
- vector(iterator start, iterator end) : vector_base(start, end) {} \
39
+ vector(iterator start_, iterator end_) : vector_base(start_, end_) {} \
40
40
  vector& operator=(const vector& x) { \
41
41
  vector_base::operator=(x); \
42
42
  return *this; \
@@ -62,7 +62,7 @@ namespace std {
62
62
  : vector_base(first, last, a) {} \
63
63
  vector(const vector& c) : vector_base(c) {} \
64
64
  explicit vector(size_type num, const value_type& val = value_type()) : vector_base(num, val) {} \
65
- vector(iterator start, iterator end) : vector_base(start, end) {} \
65
+ vector(iterator start_, iterator end_) : vector_base(start_, end_) {} \
66
66
  vector& operator=(const vector& x) { \
67
67
  vector_base::operator=(x); \
68
68
  return *this; \
@@ -217,12 +217,12 @@ struct SluMatrix : SuperMatrix
217
217
  res.setScalarType<typename MatrixType::Scalar>();
218
218
 
219
219
  // FIXME the following is not very accurate
220
- if (MatrixType::Flags & Upper)
220
+ if (int(MatrixType::Flags) & int(Upper))
221
221
  res.Mtype = SLU_TRU;
222
- if (MatrixType::Flags & Lower)
222
+ if (int(MatrixType::Flags) & int(Lower))
223
223
  res.Mtype = SLU_TRL;
224
224
 
225
- eigen_assert(((MatrixType::Flags & SelfAdjoint)==0) && "SelfAdjoint matrix shape not supported by SuperLU");
225
+ eigen_assert(((int(MatrixType::Flags) & int(SelfAdjoint))==0) && "SelfAdjoint matrix shape not supported by SuperLU");
226
226
 
227
227
  return res;
228
228
  }
@@ -352,7 +352,7 @@ class SuperLUBase : public SparseSolverBase<Derived>
352
352
 
353
353
  /** \brief Reports whether previous computation was successful.
354
354
  *
355
- * \returns \c Success if computation was succesful,
355
+ * \returns \c Success if computation was successful,
356
356
  * \c NumericalIssue if the matrix.appears to be negative.
357
357
  */
358
358
  ComputationInfo info() const
@@ -650,9 +650,8 @@ void SuperLU<MatrixType>::_solve_impl(const MatrixBase<Rhs> &b, MatrixBase<Dest>
650
650
  {
651
651
  eigen_assert(m_factorizationIsOk && "The decomposition is not in a valid state for solving, you must first call either compute() or analyzePattern()/factorize()");
652
652
 
653
- const Index size = m_matrix.rows();
654
653
  const Index rhsCols = b.cols();
655
- eigen_assert(size==b.rows());
654
+ eigen_assert(m_matrix.rows()==b.rows());
656
655
 
657
656
  m_sluOptions.Trans = NOTRANS;
658
657
  m_sluOptions.Fact = FACTORED;
@@ -974,9 +973,8 @@ void SuperILU<MatrixType>::_solve_impl(const MatrixBase<Rhs> &b, MatrixBase<Dest
974
973
  {
975
974
  eigen_assert(m_factorizationIsOk && "The decomposition is not in a valid state for solving, you must first call either compute() or analyzePattern()/factorize()");
976
975
 
977
- const int size = m_matrix.rows();
978
976
  const int rhsCols = b.cols();
979
- eigen_assert(size==b.rows());
977
+ eigen_assert(m_matrix.rows()==b.rows());
980
978
 
981
979
  m_sluOptions.Trans = NOTRANS;
982
980
  m_sluOptions.Fact = FACTORED;