@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
@@ -10,359 +10,314 @@
10
10
  #ifndef EIGEN_TRANSPOSITIONS_H
11
11
  #define EIGEN_TRANSPOSITIONS_H
12
12
 
13
- namespace Eigen {
14
-
15
- template<typename Derived>
16
- class TranspositionsBase
17
- {
18
- typedef internal::traits<Derived> Traits;
19
-
20
- public:
21
-
22
- typedef typename Traits::IndicesType IndicesType;
23
- typedef typename IndicesType::Scalar StorageIndex;
24
- typedef Eigen::Index Index; ///< \deprecated since Eigen 3.3
25
-
26
- Derived& derived() { return *static_cast<Derived*>(this); }
27
- const Derived& derived() const { return *static_cast<const Derived*>(this); }
28
-
29
- /** Copies the \a other transpositions into \c *this */
30
- template<typename OtherDerived>
31
- Derived& operator=(const TranspositionsBase<OtherDerived>& other)
32
- {
33
- indices() = other.indices();
34
- return derived();
35
- }
36
-
37
- /** \returns the number of transpositions */
38
- Index size() const { return indices().size(); }
39
- /** \returns the number of rows of the equivalent permutation matrix */
40
- Index rows() const { return indices().size(); }
41
- /** \returns the number of columns of the equivalent permutation matrix */
42
- Index cols() const { return indices().size(); }
43
-
44
- /** Direct access to the underlying index vector */
45
- inline const StorageIndex& coeff(Index i) const { return indices().coeff(i); }
46
- /** Direct access to the underlying index vector */
47
- inline StorageIndex& coeffRef(Index i) { return indices().coeffRef(i); }
48
- /** Direct access to the underlying index vector */
49
- inline const StorageIndex& operator()(Index i) const { return indices()(i); }
50
- /** Direct access to the underlying index vector */
51
- inline StorageIndex& operator()(Index i) { return indices()(i); }
52
- /** Direct access to the underlying index vector */
53
- inline const StorageIndex& operator[](Index i) const { return indices()(i); }
54
- /** Direct access to the underlying index vector */
55
- inline StorageIndex& operator[](Index i) { return indices()(i); }
56
-
57
- /** const version of indices(). */
58
- const IndicesType& indices() const { return derived().indices(); }
59
- /** \returns a reference to the stored array representing the transpositions. */
60
- IndicesType& indices() { return derived().indices(); }
61
-
62
- /** Resizes to given size. */
63
- inline void resize(Index newSize)
64
- {
65
- indices().resize(newSize);
66
- }
67
-
68
- /** Sets \c *this to represents an identity transformation */
69
- void setIdentity()
70
- {
71
- for(StorageIndex i = 0; i < indices().size(); ++i)
72
- coeffRef(i) = i;
73
- }
74
-
75
- // FIXME: do we want such methods ?
76
- // might be usefull when the target matrix expression is complex, e.g.:
77
- // object.matrix().block(..,..,..,..) = trans * object.matrix().block(..,..,..,..);
78
- /*
79
- template<typename MatrixType>
80
- void applyForwardToRows(MatrixType& mat) const
81
- {
82
- for(Index k=0 ; k<size() ; ++k)
83
- if(m_indices(k)!=k)
84
- mat.row(k).swap(mat.row(m_indices(k)));
85
- }
86
-
87
- template<typename MatrixType>
88
- void applyBackwardToRows(MatrixType& mat) const
89
- {
90
- for(Index k=size()-1 ; k>=0 ; --k)
91
- if(m_indices(k)!=k)
92
- mat.row(k).swap(mat.row(m_indices(k)));
93
- }
94
- */
95
-
96
- /** \returns the inverse transformation */
97
- inline Transpose<TranspositionsBase> inverse() const
98
- { return Transpose<TranspositionsBase>(derived()); }
99
-
100
- /** \returns the tranpose transformation */
101
- inline Transpose<TranspositionsBase> transpose() const
102
- { return Transpose<TranspositionsBase>(derived()); }
103
-
104
- protected:
13
+ // IWYU pragma: private
14
+ #include "./InternalHeaderCheck.h"
15
+
16
+ namespace Eigen {
17
+
18
+ template <typename Derived>
19
+ class TranspositionsBase {
20
+ typedef internal::traits<Derived> Traits;
21
+
22
+ public:
23
+ typedef typename Traits::IndicesType IndicesType;
24
+ typedef typename IndicesType::Scalar StorageIndex;
25
+ typedef Eigen::Index Index; ///< \deprecated since Eigen 3.3
26
+
27
+ EIGEN_DEVICE_FUNC Derived& derived() { return *static_cast<Derived*>(this); }
28
+ EIGEN_DEVICE_FUNC const Derived& derived() const { return *static_cast<const Derived*>(this); }
29
+
30
+ /** Copies the \a other transpositions into \c *this */
31
+ template <typename OtherDerived>
32
+ Derived& operator=(const TranspositionsBase<OtherDerived>& other) {
33
+ indices() = other.indices();
34
+ return derived();
35
+ }
36
+
37
+ /** \returns the number of transpositions */
38
+ EIGEN_DEVICE_FUNC Index size() const { return indices().size(); }
39
+ /** \returns the number of rows of the equivalent permutation matrix */
40
+ EIGEN_DEVICE_FUNC Index rows() const { return indices().size(); }
41
+ /** \returns the number of columns of the equivalent permutation matrix */
42
+ EIGEN_DEVICE_FUNC Index cols() const { return indices().size(); }
43
+
44
+ /** Direct access to the underlying index vector */
45
+ EIGEN_DEVICE_FUNC inline const StorageIndex& coeff(Index i) const { return indices().coeff(i); }
46
+ /** Direct access to the underlying index vector */
47
+ inline StorageIndex& coeffRef(Index i) { return indices().coeffRef(i); }
48
+ /** Direct access to the underlying index vector */
49
+ inline const StorageIndex& operator()(Index i) const { return indices()(i); }
50
+ /** Direct access to the underlying index vector */
51
+ inline StorageIndex& operator()(Index i) { return indices()(i); }
52
+ /** Direct access to the underlying index vector */
53
+ inline const StorageIndex& operator[](Index i) const { return indices()(i); }
54
+ /** Direct access to the underlying index vector */
55
+ inline StorageIndex& operator[](Index i) { return indices()(i); }
56
+
57
+ /** const version of indices(). */
58
+ EIGEN_DEVICE_FUNC const IndicesType& indices() const { return derived().indices(); }
59
+ /** \returns a reference to the stored array representing the transpositions. */
60
+ EIGEN_DEVICE_FUNC IndicesType& indices() { return derived().indices(); }
61
+
62
+ /** Resizes to given size. */
63
+ inline void resize(Index newSize) { indices().resize(newSize); }
64
+
65
+ /** Sets \c *this to represents an identity transformation */
66
+ void setIdentity() {
67
+ for (StorageIndex i = 0; i < indices().size(); ++i) coeffRef(i) = i;
68
+ }
69
+
70
+ // FIXME: do we want such methods ?
71
+ // might be useful when the target matrix expression is complex, e.g.:
72
+ // object.matrix().block(..,..,..,..) = trans * object.matrix().block(..,..,..,..);
73
+ /*
74
+ template<typename MatrixType>
75
+ void applyForwardToRows(MatrixType& mat) const
76
+ {
77
+ for(Index k=0 ; k<size() ; ++k)
78
+ if(m_indices(k)!=k)
79
+ mat.row(k).swap(mat.row(m_indices(k)));
80
+ }
81
+
82
+ template<typename MatrixType>
83
+ void applyBackwardToRows(MatrixType& mat) const
84
+ {
85
+ for(Index k=size()-1 ; k>=0 ; --k)
86
+ if(m_indices(k)!=k)
87
+ mat.row(k).swap(mat.row(m_indices(k)));
88
+ }
89
+ */
90
+
91
+ /** \returns the inverse transformation */
92
+ inline Transpose<TranspositionsBase> inverse() const { return Transpose<TranspositionsBase>(derived()); }
93
+
94
+ /** \returns the transpose transformation */
95
+ inline Transpose<TranspositionsBase> transpose() const { return Transpose<TranspositionsBase>(derived()); }
96
+
97
+ protected:
105
98
  };
106
99
 
107
100
  namespace internal {
108
- template<int SizeAtCompileTime, int MaxSizeAtCompileTime, typename _StorageIndex>
109
- struct traits<Transpositions<SizeAtCompileTime,MaxSizeAtCompileTime,_StorageIndex> >
110
- : traits<PermutationMatrix<SizeAtCompileTime,MaxSizeAtCompileTime,_StorageIndex> >
111
- {
112
- typedef Matrix<_StorageIndex, SizeAtCompileTime, 1, 0, MaxSizeAtCompileTime, 1> IndicesType;
101
+ template <int SizeAtCompileTime, int MaxSizeAtCompileTime, typename StorageIndex_>
102
+ struct traits<Transpositions<SizeAtCompileTime, MaxSizeAtCompileTime, StorageIndex_> >
103
+ : traits<PermutationMatrix<SizeAtCompileTime, MaxSizeAtCompileTime, StorageIndex_> > {
104
+ typedef Matrix<StorageIndex_, SizeAtCompileTime, 1, 0, MaxSizeAtCompileTime, 1> IndicesType;
113
105
  typedef TranspositionsStorage StorageKind;
114
106
  };
115
- }
107
+ } // namespace internal
116
108
 
117
109
  /** \class Transpositions
118
- * \ingroup Core_Module
119
- *
120
- * \brief Represents a sequence of transpositions (row/column interchange)
121
- *
122
- * \tparam SizeAtCompileTime the number of transpositions, or Dynamic
123
- * \tparam MaxSizeAtCompileTime the maximum number of transpositions, or Dynamic. This optional parameter defaults to SizeAtCompileTime. Most of the time, you should not have to specify it.
124
- *
125
- * This class represents a permutation transformation as a sequence of \em n transpositions
126
- * \f$[T_{n-1} \ldots T_{i} \ldots T_{0}]\f$. It is internally stored as a vector of integers \c indices.
127
- * Each transposition \f$ T_{i} \f$ applied on the left of a matrix (\f$ T_{i} M\f$) interchanges
128
- * the rows \c i and \c indices[i] of the matrix \c M.
129
- * A transposition applied on the right (e.g., \f$ M T_{i}\f$) yields a column interchange.
130
- *
131
- * Compared to the class PermutationMatrix, such a sequence of transpositions is what is
132
- * computed during a decomposition with pivoting, and it is faster when applying the permutation in-place.
133
- *
134
- * To apply a sequence of transpositions to a matrix, simply use the operator * as in the following example:
135
- * \code
136
- * Transpositions tr;
137
- * MatrixXf mat;
138
- * mat = tr * mat;
139
- * \endcode
140
- * In this example, we detect that the matrix appears on both side, and so the transpositions
141
- * are applied in-place without any temporary or extra copy.
142
- *
143
- * \sa class PermutationMatrix
144
- */
145
-
146
- template<int SizeAtCompileTime, int MaxSizeAtCompileTime, typename _StorageIndex>
147
- class Transpositions : public TranspositionsBase<Transpositions<SizeAtCompileTime,MaxSizeAtCompileTime,_StorageIndex> >
148
- {
149
- typedef internal::traits<Transpositions> Traits;
150
- public:
151
-
152
- typedef TranspositionsBase<Transpositions> Base;
153
- typedef typename Traits::IndicesType IndicesType;
154
- typedef typename IndicesType::Scalar StorageIndex;
155
-
156
- inline Transpositions() {}
157
-
158
- /** Copy constructor. */
159
- template<typename OtherDerived>
160
- inline Transpositions(const TranspositionsBase<OtherDerived>& other)
161
- : m_indices(other.indices()) {}
162
-
163
- /** Generic constructor from expression of the transposition indices. */
164
- template<typename Other>
165
- explicit inline Transpositions(const MatrixBase<Other>& indices) : m_indices(indices)
166
- {}
167
-
168
- /** Copies the \a other transpositions into \c *this */
169
- template<typename OtherDerived>
170
- Transpositions& operator=(const TranspositionsBase<OtherDerived>& other)
171
- {
172
- return Base::operator=(other);
173
- }
174
-
175
- /** Constructs an uninitialized permutation matrix of given size.
176
- */
177
- inline Transpositions(Index size) : m_indices(size)
178
- {}
179
-
180
- /** const version of indices(). */
181
- const IndicesType& indices() const { return m_indices; }
182
- /** \returns a reference to the stored array representing the transpositions. */
183
- IndicesType& indices() { return m_indices; }
184
-
185
- protected:
186
-
187
- IndicesType m_indices;
110
+ * \ingroup Core_Module
111
+ *
112
+ * \brief Represents a sequence of transpositions (row/column interchange)
113
+ *
114
+ * \tparam SizeAtCompileTime the number of transpositions, or Dynamic
115
+ * \tparam MaxSizeAtCompileTime the maximum number of transpositions, or Dynamic. This optional parameter defaults to
116
+ * SizeAtCompileTime. Most of the time, you should not have to specify it.
117
+ *
118
+ * This class represents a permutation transformation as a sequence of \em n transpositions
119
+ * \f$[T_{n-1} \ldots T_{i} \ldots T_{0}]\f$. It is internally stored as a vector of integers \c indices.
120
+ * Each transposition \f$ T_{i} \f$ applied on the left of a matrix (\f$ T_{i} M\f$) interchanges
121
+ * the rows \c i and \c indices[i] of the matrix \c M.
122
+ * A transposition applied on the right (e.g., \f$ M T_{i}\f$) yields a column interchange.
123
+ *
124
+ * Compared to the class PermutationMatrix, such a sequence of transpositions is what is
125
+ * computed during a decomposition with pivoting, and it is faster when applying the permutation in-place.
126
+ *
127
+ * To apply a sequence of transpositions to a matrix, simply use the operator * as in the following example:
128
+ * \code
129
+ * Transpositions tr;
130
+ * MatrixXf mat;
131
+ * mat = tr * mat;
132
+ * \endcode
133
+ * In this example, we detect that the matrix appears on both side, and so the transpositions
134
+ * are applied in-place without any temporary or extra copy.
135
+ *
136
+ * \sa class PermutationMatrix
137
+ */
138
+
139
+ template <int SizeAtCompileTime, int MaxSizeAtCompileTime, typename StorageIndex_>
140
+ class Transpositions
141
+ : public TranspositionsBase<Transpositions<SizeAtCompileTime, MaxSizeAtCompileTime, StorageIndex_> > {
142
+ typedef internal::traits<Transpositions> Traits;
143
+
144
+ public:
145
+ typedef TranspositionsBase<Transpositions> Base;
146
+ typedef typename Traits::IndicesType IndicesType;
147
+ typedef typename IndicesType::Scalar StorageIndex;
148
+
149
+ inline Transpositions() {}
150
+
151
+ /** Copy constructor. */
152
+ template <typename OtherDerived>
153
+ inline Transpositions(const TranspositionsBase<OtherDerived>& other) : m_indices(other.indices()) {}
154
+
155
+ /** Generic constructor from expression of the transposition indices. */
156
+ template <typename Other>
157
+ explicit inline Transpositions(const MatrixBase<Other>& indices) : m_indices(indices) {}
158
+
159
+ /** Copies the \a other transpositions into \c *this */
160
+ template <typename OtherDerived>
161
+ Transpositions& operator=(const TranspositionsBase<OtherDerived>& other) {
162
+ return Base::operator=(other);
163
+ }
164
+
165
+ /** Constructs an uninitialized permutation matrix of given size.
166
+ */
167
+ inline Transpositions(Index size) : m_indices(size) {}
168
+
169
+ /** const version of indices(). */
170
+ EIGEN_DEVICE_FUNC const IndicesType& indices() const { return m_indices; }
171
+ /** \returns a reference to the stored array representing the transpositions. */
172
+ EIGEN_DEVICE_FUNC IndicesType& indices() { return m_indices; }
173
+
174
+ protected:
175
+ IndicesType m_indices;
188
176
  };
189
177
 
190
-
191
178
  namespace internal {
192
- template<int SizeAtCompileTime, int MaxSizeAtCompileTime, typename _StorageIndex, int _PacketAccess>
193
- struct traits<Map<Transpositions<SizeAtCompileTime,MaxSizeAtCompileTime,_StorageIndex>,_PacketAccess> >
194
- : traits<PermutationMatrix<SizeAtCompileTime,MaxSizeAtCompileTime,_StorageIndex> >
195
- {
196
- typedef Map<const Matrix<_StorageIndex,SizeAtCompileTime,1,0,MaxSizeAtCompileTime,1>, _PacketAccess> IndicesType;
197
- typedef _StorageIndex StorageIndex;
179
+ template <int SizeAtCompileTime, int MaxSizeAtCompileTime, typename StorageIndex_, int PacketAccess_>
180
+ struct traits<Map<Transpositions<SizeAtCompileTime, MaxSizeAtCompileTime, StorageIndex_>, PacketAccess_> >
181
+ : traits<PermutationMatrix<SizeAtCompileTime, MaxSizeAtCompileTime, StorageIndex_> > {
182
+ typedef Map<const Matrix<StorageIndex_, SizeAtCompileTime, 1, 0, MaxSizeAtCompileTime, 1>, PacketAccess_> IndicesType;
183
+ typedef StorageIndex_ StorageIndex;
198
184
  typedef TranspositionsStorage StorageKind;
199
185
  };
200
- }
201
-
202
- template<int SizeAtCompileTime, int MaxSizeAtCompileTime, typename _StorageIndex, int PacketAccess>
203
- class Map<Transpositions<SizeAtCompileTime,MaxSizeAtCompileTime,_StorageIndex>,PacketAccess>
204
- : public TranspositionsBase<Map<Transpositions<SizeAtCompileTime,MaxSizeAtCompileTime,_StorageIndex>,PacketAccess> >
205
- {
206
- typedef internal::traits<Map> Traits;
207
- public:
208
-
209
- typedef TranspositionsBase<Map> Base;
210
- typedef typename Traits::IndicesType IndicesType;
211
- typedef typename IndicesType::Scalar StorageIndex;
212
-
213
- explicit inline Map(const StorageIndex* indicesPtr)
214
- : m_indices(indicesPtr)
215
- {}
216
-
217
- inline Map(const StorageIndex* indicesPtr, Index size)
218
- : m_indices(indicesPtr,size)
219
- {}
220
-
221
- /** Copies the \a other transpositions into \c *this */
222
- template<typename OtherDerived>
223
- Map& operator=(const TranspositionsBase<OtherDerived>& other)
224
- {
225
- return Base::operator=(other);
226
- }
227
-
228
- #ifndef EIGEN_PARSED_BY_DOXYGEN
229
- /** This is a special case of the templated operator=. Its purpose is to
230
- * prevent a default operator= from hiding the templated operator=.
231
- */
232
- Map& operator=(const Map& other)
233
- {
234
- m_indices = other.m_indices;
235
- return *this;
236
- }
237
- #endif
238
-
239
- /** const version of indices(). */
240
- const IndicesType& indices() const { return m_indices; }
241
-
242
- /** \returns a reference to the stored array representing the transpositions. */
243
- IndicesType& indices() { return m_indices; }
244
-
245
- protected:
246
-
247
- IndicesType m_indices;
186
+ } // namespace internal
187
+
188
+ template <int SizeAtCompileTime, int MaxSizeAtCompileTime, typename StorageIndex_, int PacketAccess>
189
+ class Map<Transpositions<SizeAtCompileTime, MaxSizeAtCompileTime, StorageIndex_>, PacketAccess>
190
+ : public TranspositionsBase<
191
+ Map<Transpositions<SizeAtCompileTime, MaxSizeAtCompileTime, StorageIndex_>, PacketAccess> > {
192
+ typedef internal::traits<Map> Traits;
193
+
194
+ public:
195
+ typedef TranspositionsBase<Map> Base;
196
+ typedef typename Traits::IndicesType IndicesType;
197
+ typedef typename IndicesType::Scalar StorageIndex;
198
+
199
+ explicit inline Map(const StorageIndex* indicesPtr) : m_indices(indicesPtr) {}
200
+
201
+ inline Map(const StorageIndex* indicesPtr, Index size) : m_indices(indicesPtr, size) {}
202
+
203
+ /** Copies the \a other transpositions into \c *this */
204
+ template <typename OtherDerived>
205
+ Map& operator=(const TranspositionsBase<OtherDerived>& other) {
206
+ return Base::operator=(other);
207
+ }
208
+
209
+ #ifndef EIGEN_PARSED_BY_DOXYGEN
210
+ /** This is a special case of the templated operator=. Its purpose is to
211
+ * prevent a default operator= from hiding the templated operator=.
212
+ */
213
+ Map& operator=(const Map& other) {
214
+ m_indices = other.m_indices;
215
+ return *this;
216
+ }
217
+ #endif
218
+
219
+ /** const version of indices(). */
220
+ EIGEN_DEVICE_FUNC const IndicesType& indices() const { return m_indices; }
221
+
222
+ /** \returns a reference to the stored array representing the transpositions. */
223
+ EIGEN_DEVICE_FUNC IndicesType& indices() { return m_indices; }
224
+
225
+ protected:
226
+ IndicesType m_indices;
248
227
  };
249
228
 
250
229
  namespace internal {
251
- template<typename _IndicesType>
252
- struct traits<TranspositionsWrapper<_IndicesType> >
253
- : traits<PermutationWrapper<_IndicesType> >
254
- {
230
+ template <typename IndicesType_>
231
+ struct traits<TranspositionsWrapper<IndicesType_> > : traits<PermutationWrapper<IndicesType_> > {
255
232
  typedef TranspositionsStorage StorageKind;
256
233
  };
257
- }
258
-
259
- template<typename _IndicesType>
260
- class TranspositionsWrapper
261
- : public TranspositionsBase<TranspositionsWrapper<_IndicesType> >
262
- {
263
- typedef internal::traits<TranspositionsWrapper> Traits;
264
- public:
234
+ } // namespace internal
265
235
 
266
- typedef TranspositionsBase<TranspositionsWrapper> Base;
267
- typedef typename Traits::IndicesType IndicesType;
268
- typedef typename IndicesType::Scalar StorageIndex;
236
+ template <typename IndicesType_>
237
+ class TranspositionsWrapper : public TranspositionsBase<TranspositionsWrapper<IndicesType_> > {
238
+ typedef internal::traits<TranspositionsWrapper> Traits;
269
239
 
270
- explicit inline TranspositionsWrapper(IndicesType& indices)
271
- : m_indices(indices)
272
- {}
240
+ public:
241
+ typedef TranspositionsBase<TranspositionsWrapper> Base;
242
+ typedef typename Traits::IndicesType IndicesType;
243
+ typedef typename IndicesType::Scalar StorageIndex;
273
244
 
274
- /** Copies the \a other transpositions into \c *this */
275
- template<typename OtherDerived>
276
- TranspositionsWrapper& operator=(const TranspositionsBase<OtherDerived>& other)
277
- {
278
- return Base::operator=(other);
279
- }
245
+ explicit inline TranspositionsWrapper(IndicesType& indices) : m_indices(indices) {}
280
246
 
281
- /** const version of indices(). */
282
- const IndicesType& indices() const { return m_indices; }
247
+ /** Copies the \a other transpositions into \c *this */
248
+ template <typename OtherDerived>
249
+ TranspositionsWrapper& operator=(const TranspositionsBase<OtherDerived>& other) {
250
+ return Base::operator=(other);
251
+ }
283
252
 
284
- /** \returns a reference to the stored array representing the transpositions. */
285
- IndicesType& indices() { return m_indices; }
253
+ /** const version of indices(). */
254
+ EIGEN_DEVICE_FUNC const IndicesType& indices() const { return m_indices; }
286
255
 
287
- protected:
256
+ /** \returns a reference to the stored array representing the transpositions. */
257
+ EIGEN_DEVICE_FUNC IndicesType& indices() { return m_indices; }
288
258
 
289
- typename IndicesType::Nested m_indices;
259
+ protected:
260
+ typename IndicesType::Nested m_indices;
290
261
  };
291
262
 
292
-
293
-
294
263
  /** \returns the \a matrix with the \a transpositions applied to the columns.
295
- */
296
- template<typename MatrixDerived, typename TranspositionsDerived>
297
- EIGEN_DEVICE_FUNC
298
- const Product<MatrixDerived, TranspositionsDerived, AliasFreeProduct>
299
- operator*(const MatrixBase<MatrixDerived> &matrix,
300
- const TranspositionsBase<TranspositionsDerived>& transpositions)
301
- {
302
- return Product<MatrixDerived, TranspositionsDerived, AliasFreeProduct>
303
- (matrix.derived(), transpositions.derived());
264
+ */
265
+ template <typename MatrixDerived, typename TranspositionsDerived>
266
+ EIGEN_DEVICE_FUNC const Product<MatrixDerived, TranspositionsDerived, AliasFreeProduct> operator*(
267
+ const MatrixBase<MatrixDerived>& matrix, const TranspositionsBase<TranspositionsDerived>& transpositions) {
268
+ return Product<MatrixDerived, TranspositionsDerived, AliasFreeProduct>(matrix.derived(), transpositions.derived());
304
269
  }
305
270
 
306
271
  /** \returns the \a matrix with the \a transpositions applied to the rows.
307
- */
308
- template<typename TranspositionsDerived, typename MatrixDerived>
309
- EIGEN_DEVICE_FUNC
310
- const Product<TranspositionsDerived, MatrixDerived, AliasFreeProduct>
311
- operator*(const TranspositionsBase<TranspositionsDerived> &transpositions,
312
- const MatrixBase<MatrixDerived>& matrix)
313
- {
314
- return Product<TranspositionsDerived, MatrixDerived, AliasFreeProduct>
315
- (transpositions.derived(), matrix.derived());
272
+ */
273
+ template <typename TranspositionsDerived, typename MatrixDerived>
274
+ EIGEN_DEVICE_FUNC const Product<TranspositionsDerived, MatrixDerived, AliasFreeProduct> operator*(
275
+ const TranspositionsBase<TranspositionsDerived>& transpositions, const MatrixBase<MatrixDerived>& matrix) {
276
+ return Product<TranspositionsDerived, MatrixDerived, AliasFreeProduct>(transpositions.derived(), matrix.derived());
316
277
  }
317
278
 
318
279
  // Template partial specialization for transposed/inverse transpositions
319
280
 
320
281
  namespace internal {
321
282
 
322
- template<typename Derived>
323
- struct traits<Transpose<TranspositionsBase<Derived> > >
324
- : traits<Derived>
325
- {};
326
-
327
- } // end namespace internal
328
-
329
- template<typename TranspositionsDerived>
330
- class Transpose<TranspositionsBase<TranspositionsDerived> >
331
- {
332
- typedef TranspositionsDerived TranspositionType;
333
- typedef typename TranspositionType::IndicesType IndicesType;
334
- public:
335
-
336
- explicit Transpose(const TranspositionType& t) : m_transpositions(t) {}
337
-
338
- Index size() const { return m_transpositions.size(); }
339
- Index rows() const { return m_transpositions.size(); }
340
- Index cols() const { return m_transpositions.size(); }
341
-
342
- /** \returns the \a matrix with the inverse transpositions applied to the columns.
343
- */
344
- template<typename OtherDerived> friend
345
- const Product<OtherDerived, Transpose, AliasFreeProduct>
346
- operator*(const MatrixBase<OtherDerived>& matrix, const Transpose& trt)
347
- {
348
- return Product<OtherDerived, Transpose, AliasFreeProduct>(matrix.derived(), trt);
349
- }
350
-
351
- /** \returns the \a matrix with the inverse transpositions applied to the rows.
352
- */
353
- template<typename OtherDerived>
354
- const Product<Transpose, OtherDerived, AliasFreeProduct>
355
- operator*(const MatrixBase<OtherDerived>& matrix) const
356
- {
357
- return Product<Transpose, OtherDerived, AliasFreeProduct>(*this, matrix.derived());
358
- }
359
-
360
- const TranspositionType& nestedExpression() const { return m_transpositions; }
361
-
362
- protected:
363
- const TranspositionType& m_transpositions;
283
+ template <typename Derived>
284
+ struct traits<Transpose<TranspositionsBase<Derived> > > : traits<Derived> {};
285
+
286
+ } // end namespace internal
287
+
288
+ template <typename TranspositionsDerived>
289
+ class Transpose<TranspositionsBase<TranspositionsDerived> > {
290
+ typedef TranspositionsDerived TranspositionType;
291
+ typedef typename TranspositionType::IndicesType IndicesType;
292
+
293
+ public:
294
+ explicit Transpose(const TranspositionType& t) : m_transpositions(t) {}
295
+
296
+ EIGEN_DEVICE_FUNC constexpr Index size() const noexcept { return m_transpositions.size(); }
297
+ EIGEN_DEVICE_FUNC constexpr Index rows() const noexcept { return m_transpositions.size(); }
298
+ EIGEN_DEVICE_FUNC constexpr Index cols() const noexcept { return m_transpositions.size(); }
299
+
300
+ /** \returns the \a matrix with the inverse transpositions applied to the columns.
301
+ */
302
+ template <typename OtherDerived>
303
+ friend const Product<OtherDerived, Transpose, AliasFreeProduct> operator*(const MatrixBase<OtherDerived>& matrix,
304
+ const Transpose& trt) {
305
+ return Product<OtherDerived, Transpose, AliasFreeProduct>(matrix.derived(), trt);
306
+ }
307
+
308
+ /** \returns the \a matrix with the inverse transpositions applied to the rows.
309
+ */
310
+ template <typename OtherDerived>
311
+ const Product<Transpose, OtherDerived, AliasFreeProduct> operator*(const MatrixBase<OtherDerived>& matrix) const {
312
+ return Product<Transpose, OtherDerived, AliasFreeProduct>(*this, matrix.derived());
313
+ }
314
+
315
+ EIGEN_DEVICE_FUNC const TranspositionType& nestedExpression() const { return m_transpositions; }
316
+
317
+ protected:
318
+ const TranspositionType& m_transpositions;
364
319
  };
365
320
 
366
- } // end namespace Eigen
321
+ } // end namespace Eigen
367
322
 
368
- #endif // EIGEN_TRANSPOSITIONS_H
323
+ #endif // EIGEN_TRANSPOSITIONS_H