@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
@@ -0,0 +1,3 @@
1
+ #ifndef EIGEN_LU_MODULE_H
2
+ #error "Please include Eigen/LU instead of including headers inside the src directory directly."
3
+ #endif
@@ -11,7 +11,10 @@
11
11
  #ifndef EIGEN_INVERSE_IMPL_H
12
12
  #define EIGEN_INVERSE_IMPL_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
 
@@ -19,51 +22,40 @@ namespace internal {
19
22
  *** General case implementation ***
20
23
  **********************************/
21
24
 
22
- template<typename MatrixType, typename ResultType, int Size = MatrixType::RowsAtCompileTime>
23
- struct compute_inverse
24
- {
25
- EIGEN_DEVICE_FUNC
26
- static inline void run(const MatrixType& matrix, ResultType& result)
27
- {
25
+ template <typename MatrixType, typename ResultType, int Size = MatrixType::RowsAtCompileTime>
26
+ struct compute_inverse {
27
+ EIGEN_DEVICE_FUNC static inline void run(const MatrixType& matrix, ResultType& result) {
28
28
  result = matrix.partialPivLu().inverse();
29
29
  }
30
30
  };
31
31
 
32
- template<typename MatrixType, typename ResultType, int Size = MatrixType::RowsAtCompileTime>
33
- struct compute_inverse_and_det_with_check { /* nothing! general case not supported. */ };
32
+ template <typename MatrixType, typename ResultType, int Size = MatrixType::RowsAtCompileTime>
33
+ struct compute_inverse_and_det_with_check { /* nothing! general case not supported. */
34
+ };
34
35
 
35
36
  /****************************
36
37
  *** Size 1 implementation ***
37
38
  ****************************/
38
39
 
39
- template<typename MatrixType, typename ResultType>
40
- struct compute_inverse<MatrixType, ResultType, 1>
41
- {
42
- EIGEN_DEVICE_FUNC
43
- static inline void run(const MatrixType& matrix, ResultType& result)
44
- {
40
+ template <typename MatrixType, typename ResultType>
41
+ struct compute_inverse<MatrixType, ResultType, 1> {
42
+ EIGEN_DEVICE_FUNC static inline void run(const MatrixType& matrix, ResultType& result) {
45
43
  typedef typename MatrixType::Scalar Scalar;
46
44
  internal::evaluator<MatrixType> matrixEval(matrix);
47
- result.coeffRef(0,0) = Scalar(1) / matrixEval.coeff(0,0);
45
+ result.coeffRef(0, 0) = Scalar(1) / matrixEval.coeff(0, 0);
48
46
  }
49
47
  };
50
48
 
51
- template<typename MatrixType, typename ResultType>
52
- struct compute_inverse_and_det_with_check<MatrixType, ResultType, 1>
53
- {
54
- EIGEN_DEVICE_FUNC
55
- static inline void run(
56
- const MatrixType& matrix,
57
- const typename MatrixType::RealScalar& absDeterminantThreshold,
58
- ResultType& result,
59
- typename ResultType::Scalar& determinant,
60
- bool& invertible
61
- )
62
- {
49
+ template <typename MatrixType, typename ResultType>
50
+ struct compute_inverse_and_det_with_check<MatrixType, ResultType, 1> {
51
+ EIGEN_DEVICE_FUNC static inline void run(const MatrixType& matrix,
52
+ const typename MatrixType::RealScalar& absDeterminantThreshold,
53
+ ResultType& result, typename ResultType::Scalar& determinant,
54
+ bool& invertible) {
63
55
  using std::abs;
64
- determinant = matrix.coeff(0,0);
56
+ determinant = matrix.coeff(0, 0);
65
57
  invertible = abs(determinant) > absDeterminantThreshold;
66
- if(invertible) result.coeffRef(0,0) = typename ResultType::Scalar(1) / determinant;
58
+ if (invertible) result.coeffRef(0, 0) = typename ResultType::Scalar(1) / determinant;
67
59
  }
68
60
  };
69
61
 
@@ -71,47 +63,37 @@ struct compute_inverse_and_det_with_check<MatrixType, ResultType, 1>
71
63
  *** Size 2 implementation ***
72
64
  ****************************/
73
65
 
74
- template<typename MatrixType, typename ResultType>
75
- EIGEN_DEVICE_FUNC
76
- inline void compute_inverse_size2_helper(
77
- const MatrixType& matrix, const typename ResultType::Scalar& invdet,
78
- ResultType& result)
79
- {
80
- result.coeffRef(0,0) = matrix.coeff(1,1) * invdet;
81
- result.coeffRef(1,0) = -matrix.coeff(1,0) * invdet;
82
- result.coeffRef(0,1) = -matrix.coeff(0,1) * invdet;
83
- result.coeffRef(1,1) = matrix.coeff(0,0) * invdet;
66
+ template <typename MatrixType, typename ResultType>
67
+ EIGEN_DEVICE_FUNC inline void compute_inverse_size2_helper(const MatrixType& matrix,
68
+ const typename ResultType::Scalar& invdet,
69
+ ResultType& result) {
70
+ typename ResultType::Scalar temp = matrix.coeff(0, 0);
71
+ result.coeffRef(0, 0) = matrix.coeff(1, 1) * invdet;
72
+ result.coeffRef(1, 0) = -matrix.coeff(1, 0) * invdet;
73
+ result.coeffRef(0, 1) = -matrix.coeff(0, 1) * invdet;
74
+ result.coeffRef(1, 1) = temp * invdet;
84
75
  }
85
76
 
86
- template<typename MatrixType, typename ResultType>
87
- struct compute_inverse<MatrixType, ResultType, 2>
88
- {
89
- EIGEN_DEVICE_FUNC
90
- static inline void run(const MatrixType& matrix, ResultType& result)
91
- {
77
+ template <typename MatrixType, typename ResultType>
78
+ struct compute_inverse<MatrixType, ResultType, 2> {
79
+ EIGEN_DEVICE_FUNC static inline void run(const MatrixType& matrix, ResultType& result) {
92
80
  typedef typename ResultType::Scalar Scalar;
93
81
  const Scalar invdet = typename MatrixType::Scalar(1) / matrix.determinant();
94
82
  compute_inverse_size2_helper(matrix, invdet, result);
95
83
  }
96
84
  };
97
85
 
98
- template<typename MatrixType, typename ResultType>
99
- struct compute_inverse_and_det_with_check<MatrixType, ResultType, 2>
100
- {
101
- EIGEN_DEVICE_FUNC
102
- static inline void run(
103
- const MatrixType& matrix,
104
- const typename MatrixType::RealScalar& absDeterminantThreshold,
105
- ResultType& inverse,
106
- typename ResultType::Scalar& determinant,
107
- bool& invertible
108
- )
109
- {
86
+ template <typename MatrixType, typename ResultType>
87
+ struct compute_inverse_and_det_with_check<MatrixType, ResultType, 2> {
88
+ EIGEN_DEVICE_FUNC static inline void run(const MatrixType& matrix,
89
+ const typename MatrixType::RealScalar& absDeterminantThreshold,
90
+ ResultType& inverse, typename ResultType::Scalar& determinant,
91
+ bool& invertible) {
110
92
  using std::abs;
111
93
  typedef typename ResultType::Scalar Scalar;
112
94
  determinant = matrix.determinant();
113
95
  invertible = abs(determinant) > absDeterminantThreshold;
114
- if(!invertible) return;
96
+ if (!invertible) return;
115
97
  const Scalar invdet = Scalar(1) / determinant;
116
98
  compute_inverse_size2_helper(matrix, invdet, inverse);
117
99
  }
@@ -121,75 +103,58 @@ struct compute_inverse_and_det_with_check<MatrixType, ResultType, 2>
121
103
  *** Size 3 implementation ***
122
104
  ****************************/
123
105
 
124
- template<typename MatrixType, int i, int j>
125
- EIGEN_DEVICE_FUNC
126
- inline typename MatrixType::Scalar cofactor_3x3(const MatrixType& m)
127
- {
128
- enum {
129
- i1 = (i+1) % 3,
130
- i2 = (i+2) % 3,
131
- j1 = (j+1) % 3,
132
- j2 = (j+2) % 3
133
- };
134
- return m.coeff(i1, j1) * m.coeff(i2, j2)
135
- - m.coeff(i1, j2) * m.coeff(i2, j1);
106
+ template <typename MatrixType, int i, int j>
107
+ EIGEN_DEVICE_FUNC inline typename MatrixType::Scalar cofactor_3x3(const MatrixType& m) {
108
+ enum { i1 = (i + 1) % 3, i2 = (i + 2) % 3, j1 = (j + 1) % 3, j2 = (j + 2) % 3 };
109
+ return m.coeff(i1, j1) * m.coeff(i2, j2) - m.coeff(i1, j2) * m.coeff(i2, j1);
136
110
  }
137
111
 
138
- template<typename MatrixType, typename ResultType>
139
- EIGEN_DEVICE_FUNC
140
- inline void compute_inverse_size3_helper(
141
- const MatrixType& matrix,
142
- const typename ResultType::Scalar& invdet,
143
- const Matrix<typename ResultType::Scalar,3,1>& cofactors_col0,
144
- ResultType& result)
145
- {
112
+ template <typename MatrixType, typename ResultType>
113
+ EIGEN_DEVICE_FUNC inline void compute_inverse_size3_helper(
114
+ const MatrixType& matrix, const typename ResultType::Scalar& invdet,
115
+ const Matrix<typename ResultType::Scalar, 3, 1>& cofactors_col0, ResultType& result) {
116
+ // Compute cofactors in a way that avoids aliasing issues.
117
+ typedef typename ResultType::Scalar Scalar;
118
+ const Scalar c01 = cofactor_3x3<MatrixType, 0, 1>(matrix) * invdet;
119
+ const Scalar c11 = cofactor_3x3<MatrixType, 1, 1>(matrix) * invdet;
120
+ const Scalar c02 = cofactor_3x3<MatrixType, 0, 2>(matrix) * invdet;
121
+ result.coeffRef(1, 2) = cofactor_3x3<MatrixType, 2, 1>(matrix) * invdet;
122
+ result.coeffRef(2, 1) = cofactor_3x3<MatrixType, 1, 2>(matrix) * invdet;
123
+ result.coeffRef(2, 2) = cofactor_3x3<MatrixType, 2, 2>(matrix) * invdet;
124
+ result.coeffRef(1, 0) = c01;
125
+ result.coeffRef(1, 1) = c11;
126
+ result.coeffRef(2, 0) = c02;
146
127
  result.row(0) = cofactors_col0 * invdet;
147
- result.coeffRef(1,0) = cofactor_3x3<MatrixType,0,1>(matrix) * invdet;
148
- result.coeffRef(1,1) = cofactor_3x3<MatrixType,1,1>(matrix) * invdet;
149
- result.coeffRef(1,2) = cofactor_3x3<MatrixType,2,1>(matrix) * invdet;
150
- result.coeffRef(2,0) = cofactor_3x3<MatrixType,0,2>(matrix) * invdet;
151
- result.coeffRef(2,1) = cofactor_3x3<MatrixType,1,2>(matrix) * invdet;
152
- result.coeffRef(2,2) = cofactor_3x3<MatrixType,2,2>(matrix) * invdet;
153
128
  }
154
129
 
155
- template<typename MatrixType, typename ResultType>
156
- struct compute_inverse<MatrixType, ResultType, 3>
157
- {
158
- EIGEN_DEVICE_FUNC
159
- static inline void run(const MatrixType& matrix, ResultType& result)
160
- {
130
+ template <typename MatrixType, typename ResultType>
131
+ struct compute_inverse<MatrixType, ResultType, 3> {
132
+ EIGEN_DEVICE_FUNC static inline void run(const MatrixType& matrix, ResultType& result) {
161
133
  typedef typename ResultType::Scalar Scalar;
162
- Matrix<typename MatrixType::Scalar,3,1> cofactors_col0;
163
- cofactors_col0.coeffRef(0) = cofactor_3x3<MatrixType,0,0>(matrix);
164
- cofactors_col0.coeffRef(1) = cofactor_3x3<MatrixType,1,0>(matrix);
165
- cofactors_col0.coeffRef(2) = cofactor_3x3<MatrixType,2,0>(matrix);
134
+ Matrix<typename MatrixType::Scalar, 3, 1> cofactors_col0;
135
+ cofactors_col0.coeffRef(0) = cofactor_3x3<MatrixType, 0, 0>(matrix);
136
+ cofactors_col0.coeffRef(1) = cofactor_3x3<MatrixType, 1, 0>(matrix);
137
+ cofactors_col0.coeffRef(2) = cofactor_3x3<MatrixType, 2, 0>(matrix);
166
138
  const Scalar det = (cofactors_col0.cwiseProduct(matrix.col(0))).sum();
167
139
  const Scalar invdet = Scalar(1) / det;
168
140
  compute_inverse_size3_helper(matrix, invdet, cofactors_col0, result);
169
141
  }
170
142
  };
171
143
 
172
- template<typename MatrixType, typename ResultType>
173
- struct compute_inverse_and_det_with_check<MatrixType, ResultType, 3>
174
- {
175
- EIGEN_DEVICE_FUNC
176
- static inline void run(
177
- const MatrixType& matrix,
178
- const typename MatrixType::RealScalar& absDeterminantThreshold,
179
- ResultType& inverse,
180
- typename ResultType::Scalar& determinant,
181
- bool& invertible
182
- )
183
- {
184
- using std::abs;
144
+ template <typename MatrixType, typename ResultType>
145
+ struct compute_inverse_and_det_with_check<MatrixType, ResultType, 3> {
146
+ EIGEN_DEVICE_FUNC static inline void run(const MatrixType& matrix,
147
+ const typename MatrixType::RealScalar& absDeterminantThreshold,
148
+ ResultType& inverse, typename ResultType::Scalar& determinant,
149
+ bool& invertible) {
185
150
  typedef typename ResultType::Scalar Scalar;
186
- Matrix<Scalar,3,1> cofactors_col0;
187
- cofactors_col0.coeffRef(0) = cofactor_3x3<MatrixType,0,0>(matrix);
188
- cofactors_col0.coeffRef(1) = cofactor_3x3<MatrixType,1,0>(matrix);
189
- cofactors_col0.coeffRef(2) = cofactor_3x3<MatrixType,2,0>(matrix);
151
+ Matrix<Scalar, 3, 1> cofactors_col0;
152
+ cofactors_col0.coeffRef(0) = cofactor_3x3<MatrixType, 0, 0>(matrix);
153
+ cofactors_col0.coeffRef(1) = cofactor_3x3<MatrixType, 1, 0>(matrix);
154
+ cofactors_col0.coeffRef(2) = cofactor_3x3<MatrixType, 2, 0>(matrix);
190
155
  determinant = (cofactors_col0.cwiseProduct(matrix.col(0))).sum();
191
- invertible = abs(determinant) > absDeterminantThreshold;
192
- if(!invertible) return;
156
+ invertible = Eigen::numext::abs(determinant) > absDeterminantThreshold;
157
+ if (!invertible) return;
193
158
  const Scalar invdet = Scalar(1) / determinant;
194
159
  compute_inverse_size3_helper(matrix, invdet, cofactors_col0, inverse);
195
160
  }
@@ -199,81 +164,62 @@ struct compute_inverse_and_det_with_check<MatrixType, ResultType, 3>
199
164
  *** Size 4 implementation ***
200
165
  ****************************/
201
166
 
202
- template<typename Derived>
203
- EIGEN_DEVICE_FUNC
204
- inline const typename Derived::Scalar general_det3_helper
205
- (const MatrixBase<Derived>& matrix, int i1, int i2, int i3, int j1, int j2, int j3)
206
- {
207
- return matrix.coeff(i1,j1)
208
- * (matrix.coeff(i2,j2) * matrix.coeff(i3,j3) - matrix.coeff(i2,j3) * matrix.coeff(i3,j2));
167
+ template <typename Derived>
168
+ EIGEN_DEVICE_FUNC inline const typename Derived::Scalar general_det3_helper(const MatrixBase<Derived>& matrix, int i1,
169
+ int i2, int i3, int j1, int j2, int j3) {
170
+ return matrix.coeff(i1, j1) *
171
+ (matrix.coeff(i2, j2) * matrix.coeff(i3, j3) - matrix.coeff(i2, j3) * matrix.coeff(i3, j2));
209
172
  }
210
173
 
211
- template<typename MatrixType, int i, int j>
212
- EIGEN_DEVICE_FUNC
213
- inline typename MatrixType::Scalar cofactor_4x4(const MatrixType& matrix)
214
- {
215
- enum {
216
- i1 = (i+1) % 4,
217
- i2 = (i+2) % 4,
218
- i3 = (i+3) % 4,
219
- j1 = (j+1) % 4,
220
- j2 = (j+2) % 4,
221
- j3 = (j+3) % 4
222
- };
223
- return general_det3_helper(matrix, i1, i2, i3, j1, j2, j3)
224
- + general_det3_helper(matrix, i2, i3, i1, j1, j2, j3)
225
- + general_det3_helper(matrix, i3, i1, i2, j1, j2, j3);
174
+ template <typename MatrixType, int i, int j>
175
+ EIGEN_DEVICE_FUNC inline typename MatrixType::Scalar cofactor_4x4(const MatrixType& matrix) {
176
+ enum { i1 = (i + 1) % 4, i2 = (i + 2) % 4, i3 = (i + 3) % 4, j1 = (j + 1) % 4, j2 = (j + 2) % 4, j3 = (j + 3) % 4 };
177
+ return general_det3_helper(matrix, i1, i2, i3, j1, j2, j3) + general_det3_helper(matrix, i2, i3, i1, j1, j2, j3) +
178
+ general_det3_helper(matrix, i3, i1, i2, j1, j2, j3);
226
179
  }
227
180
 
228
- template<int Arch, typename Scalar, typename MatrixType, typename ResultType>
229
- struct compute_inverse_size4
230
- {
231
- EIGEN_DEVICE_FUNC
232
- static void run(const MatrixType& matrix, ResultType& result)
233
- {
234
- result.coeffRef(0,0) = cofactor_4x4<MatrixType,0,0>(matrix);
235
- result.coeffRef(1,0) = -cofactor_4x4<MatrixType,0,1>(matrix);
236
- result.coeffRef(2,0) = cofactor_4x4<MatrixType,0,2>(matrix);
237
- result.coeffRef(3,0) = -cofactor_4x4<MatrixType,0,3>(matrix);
238
- result.coeffRef(0,2) = cofactor_4x4<MatrixType,2,0>(matrix);
239
- result.coeffRef(1,2) = -cofactor_4x4<MatrixType,2,1>(matrix);
240
- result.coeffRef(2,2) = cofactor_4x4<MatrixType,2,2>(matrix);
241
- result.coeffRef(3,2) = -cofactor_4x4<MatrixType,2,3>(matrix);
242
- result.coeffRef(0,1) = -cofactor_4x4<MatrixType,1,0>(matrix);
243
- result.coeffRef(1,1) = cofactor_4x4<MatrixType,1,1>(matrix);
244
- result.coeffRef(2,1) = -cofactor_4x4<MatrixType,1,2>(matrix);
245
- result.coeffRef(3,1) = cofactor_4x4<MatrixType,1,3>(matrix);
246
- result.coeffRef(0,3) = -cofactor_4x4<MatrixType,3,0>(matrix);
247
- result.coeffRef(1,3) = cofactor_4x4<MatrixType,3,1>(matrix);
248
- result.coeffRef(2,3) = -cofactor_4x4<MatrixType,3,2>(matrix);
249
- result.coeffRef(3,3) = cofactor_4x4<MatrixType,3,3>(matrix);
181
+ template <int Arch, typename Scalar, typename MatrixType, typename ResultType>
182
+ struct compute_inverse_size4 {
183
+ EIGEN_DEVICE_FUNC static void run(const MatrixType& matrix, ResultType& result) {
184
+ result.coeffRef(0, 0) = cofactor_4x4<MatrixType, 0, 0>(matrix);
185
+ result.coeffRef(1, 0) = -cofactor_4x4<MatrixType, 0, 1>(matrix);
186
+ result.coeffRef(2, 0) = cofactor_4x4<MatrixType, 0, 2>(matrix);
187
+ result.coeffRef(3, 0) = -cofactor_4x4<MatrixType, 0, 3>(matrix);
188
+ result.coeffRef(0, 2) = cofactor_4x4<MatrixType, 2, 0>(matrix);
189
+ result.coeffRef(1, 2) = -cofactor_4x4<MatrixType, 2, 1>(matrix);
190
+ result.coeffRef(2, 2) = cofactor_4x4<MatrixType, 2, 2>(matrix);
191
+ result.coeffRef(3, 2) = -cofactor_4x4<MatrixType, 2, 3>(matrix);
192
+ result.coeffRef(0, 1) = -cofactor_4x4<MatrixType, 1, 0>(matrix);
193
+ result.coeffRef(1, 1) = cofactor_4x4<MatrixType, 1, 1>(matrix);
194
+ result.coeffRef(2, 1) = -cofactor_4x4<MatrixType, 1, 2>(matrix);
195
+ result.coeffRef(3, 1) = cofactor_4x4<MatrixType, 1, 3>(matrix);
196
+ result.coeffRef(0, 3) = -cofactor_4x4<MatrixType, 3, 0>(matrix);
197
+ result.coeffRef(1, 3) = cofactor_4x4<MatrixType, 3, 1>(matrix);
198
+ result.coeffRef(2, 3) = -cofactor_4x4<MatrixType, 3, 2>(matrix);
199
+ result.coeffRef(3, 3) = cofactor_4x4<MatrixType, 3, 3>(matrix);
250
200
  result /= (matrix.col(0).cwiseProduct(result.row(0).transpose())).sum();
251
201
  }
252
202
  };
253
203
 
254
- template<typename MatrixType, typename ResultType>
204
+ template <typename MatrixType, typename ResultType>
255
205
  struct compute_inverse<MatrixType, ResultType, 4>
256
- : compute_inverse_size4<Architecture::Target, typename MatrixType::Scalar,
257
- MatrixType, ResultType>
258
- {
259
- };
260
-
261
- template<typename MatrixType, typename ResultType>
262
- struct compute_inverse_and_det_with_check<MatrixType, ResultType, 4>
263
- {
264
- EIGEN_DEVICE_FUNC
265
- static inline void run(
266
- const MatrixType& matrix,
267
- const typename MatrixType::RealScalar& absDeterminantThreshold,
268
- ResultType& inverse,
269
- typename ResultType::Scalar& determinant,
270
- bool& invertible
271
- )
272
- {
206
+ : compute_inverse_size4<Architecture::Target, typename MatrixType::Scalar, MatrixType, ResultType> {};
207
+
208
+ template <typename MatrixType, typename ResultType>
209
+ struct compute_inverse_and_det_with_check<MatrixType, ResultType, 4> {
210
+ EIGEN_DEVICE_FUNC static inline void run(const MatrixType& matrix,
211
+ const typename MatrixType::RealScalar& absDeterminantThreshold,
212
+ ResultType& inverse, typename ResultType::Scalar& determinant,
213
+ bool& invertible) {
273
214
  using std::abs;
274
215
  determinant = matrix.determinant();
275
216
  invertible = abs(determinant) > absDeterminantThreshold;
276
- if(invertible) compute_inverse<MatrixType, ResultType>::run(matrix, inverse);
217
+ if (invertible && extract_data(matrix) != extract_data(inverse)) {
218
+ compute_inverse<MatrixType, ResultType>::run(matrix, inverse);
219
+ } else if (invertible) {
220
+ MatrixType matrix_t = matrix;
221
+ compute_inverse<MatrixType, ResultType>::run(matrix_t, inverse);
222
+ }
277
223
  }
278
224
  };
279
225
 
@@ -281,135 +227,127 @@ struct compute_inverse_and_det_with_check<MatrixType, ResultType, 4>
281
227
  *** MatrixBase methods ***
282
228
  *************************/
283
229
 
284
- } // end namespace internal
230
+ } // end namespace internal
285
231
 
286
232
  namespace internal {
287
233
 
288
234
  // Specialization for "dense = dense_xpr.inverse()"
289
- template<typename DstXprType, typename XprType>
290
- struct Assignment<DstXprType, Inverse<XprType>, internal::assign_op<typename DstXprType::Scalar,typename XprType::Scalar>, Dense2Dense>
291
- {
235
+ template <typename DstXprType, typename XprType>
236
+ struct Assignment<DstXprType, Inverse<XprType>,
237
+ internal::assign_op<typename DstXprType::Scalar, typename XprType::Scalar>, Dense2Dense> {
292
238
  typedef Inverse<XprType> SrcXprType;
293
- static void run(DstXprType &dst, const SrcXprType &src, const internal::assign_op<typename DstXprType::Scalar,typename XprType::Scalar> &)
294
- {
239
+ EIGEN_DEVICE_FUNC static void run(DstXprType& dst, const SrcXprType& src,
240
+ const internal::assign_op<typename DstXprType::Scalar, typename XprType::Scalar>&) {
295
241
  Index dstRows = src.rows();
296
242
  Index dstCols = src.cols();
297
- if((dst.rows()!=dstRows) || (dst.cols()!=dstCols))
298
- dst.resize(dstRows, dstCols);
299
-
300
- const int Size = EIGEN_PLAIN_ENUM_MIN(XprType::ColsAtCompileTime,DstXprType::ColsAtCompileTime);
243
+ if ((dst.rows() != dstRows) || (dst.cols() != dstCols)) dst.resize(dstRows, dstCols);
244
+
245
+ const int Size = plain_enum_min(XprType::ColsAtCompileTime, DstXprType::ColsAtCompileTime);
301
246
  EIGEN_ONLY_USED_FOR_DEBUG(Size);
302
- eigen_assert(( (Size<=1) || (Size>4) || (extract_data(src.nestedExpression())!=extract_data(dst)))
303
- && "Aliasing problem detected in inverse(), you need to do inverse().eval() here.");
247
+ eigen_assert(((Size <= 1) || (Size > 4) || (extract_data(src.nestedExpression()) != extract_data(dst))) &&
248
+ "Aliasing problem detected in inverse(), you need to do inverse().eval() here.");
249
+
250
+ typedef typename internal::nested_eval<XprType, XprType::ColsAtCompileTime>::type ActualXprType;
251
+ typedef internal::remove_all_t<ActualXprType> ActualXprTypeCleanded;
304
252
 
305
- typedef typename internal::nested_eval<XprType,XprType::ColsAtCompileTime>::type ActualXprType;
306
- typedef typename internal::remove_all<ActualXprType>::type ActualXprTypeCleanded;
307
-
308
253
  ActualXprType actual_xpr(src.nestedExpression());
309
-
254
+
310
255
  compute_inverse<ActualXprTypeCleanded, DstXprType>::run(actual_xpr, dst);
311
256
  }
312
257
  };
313
258
 
314
-
315
- } // end namespace internal
259
+ } // end namespace internal
316
260
 
317
261
  /** \lu_module
318
- *
319
- * \returns the matrix inverse of this matrix.
320
- *
321
- * For small fixed sizes up to 4x4, this method uses cofactors.
322
- * In the general case, this method uses class PartialPivLU.
323
- *
324
- * \note This matrix must be invertible, otherwise the result is undefined. If you need an
325
- * invertibility check, do the following:
326
- * \li for fixed sizes up to 4x4, use computeInverseAndDetWithCheck().
327
- * \li for the general case, use class FullPivLU.
328
- *
329
- * Example: \include MatrixBase_inverse.cpp
330
- * Output: \verbinclude MatrixBase_inverse.out
331
- *
332
- * \sa computeInverseAndDetWithCheck()
333
- */
334
- template<typename Derived>
335
- inline const Inverse<Derived> MatrixBase<Derived>::inverse() const
336
- {
337
- EIGEN_STATIC_ASSERT(!NumTraits<Scalar>::IsInteger,THIS_FUNCTION_IS_NOT_FOR_INTEGER_NUMERIC_TYPES)
262
+ *
263
+ * \returns the matrix inverse of this matrix.
264
+ *
265
+ * For small fixed sizes up to 4x4, this method uses cofactors.
266
+ * In the general case, this method uses class PartialPivLU.
267
+ *
268
+ * \note This matrix must be invertible, otherwise the result is undefined. If you need an
269
+ * invertibility check, do the following:
270
+ * \li for fixed sizes up to 4x4, use computeInverseAndDetWithCheck().
271
+ * \li for the general case, use class PartialPivLU.
272
+ *
273
+ * Example: \include MatrixBase_inverse.cpp
274
+ * Output: \verbinclude MatrixBase_inverse.out
275
+ *
276
+ * \sa computeInverseAndDetWithCheck()
277
+ */
278
+ template <typename Derived>
279
+ EIGEN_DEVICE_FUNC inline const Inverse<Derived> MatrixBase<Derived>::inverse() const {
280
+ EIGEN_STATIC_ASSERT(!NumTraits<Scalar>::IsInteger, THIS_FUNCTION_IS_NOT_FOR_INTEGER_NUMERIC_TYPES)
338
281
  eigen_assert(rows() == cols());
339
282
  return Inverse<Derived>(derived());
340
283
  }
341
284
 
342
285
  /** \lu_module
343
- *
344
- * Computation of matrix inverse and determinant, with invertibility check.
345
- *
346
- * This is only for fixed-size square matrices of size up to 4x4.
347
- *
348
- * \param inverse Reference to the matrix in which to store the inverse.
349
- * \param determinant Reference to the variable in which to store the determinant.
350
- * \param invertible Reference to the bool variable in which to store whether the matrix is invertible.
351
- * \param absDeterminantThreshold Optional parameter controlling the invertibility check.
352
- * The matrix will be declared invertible if the absolute value of its
353
- * determinant is greater than this threshold.
354
- *
355
- * Example: \include MatrixBase_computeInverseAndDetWithCheck.cpp
356
- * Output: \verbinclude MatrixBase_computeInverseAndDetWithCheck.out
357
- *
358
- * \sa inverse(), computeInverseWithCheck()
359
- */
360
- template<typename Derived>
361
- template<typename ResultType>
362
- inline void MatrixBase<Derived>::computeInverseAndDetWithCheck(
363
- ResultType& inverse,
364
- typename ResultType::Scalar& determinant,
365
- bool& invertible,
366
- const RealScalar& absDeterminantThreshold
367
- ) const
368
- {
286
+ *
287
+ * Computation of matrix inverse and determinant, with invertibility check.
288
+ *
289
+ * This is only for fixed-size square matrices of size up to 4x4.
290
+ *
291
+ * Notice that it will trigger a copy of input matrix when trying to do the inverse in place.
292
+ *
293
+ * \param inverse Reference to the matrix in which to store the inverse.
294
+ * \param determinant Reference to the variable in which to store the determinant.
295
+ * \param invertible Reference to the bool variable in which to store whether the matrix is invertible.
296
+ * \param absDeterminantThreshold Optional parameter controlling the invertibility check.
297
+ * The matrix will be declared invertible if the absolute value of its
298
+ * determinant is greater than this threshold.
299
+ *
300
+ * Example: \include MatrixBase_computeInverseAndDetWithCheck.cpp
301
+ * Output: \verbinclude MatrixBase_computeInverseAndDetWithCheck.out
302
+ *
303
+ * \sa inverse(), computeInverseWithCheck()
304
+ */
305
+ template <typename Derived>
306
+ template <typename ResultType>
307
+ inline void MatrixBase<Derived>::computeInverseAndDetWithCheck(ResultType& inverse,
308
+ typename ResultType::Scalar& determinant,
309
+ bool& invertible,
310
+ const RealScalar& absDeterminantThreshold) const {
369
311
  // i'd love to put some static assertions there, but SFINAE means that they have no effect...
370
312
  eigen_assert(rows() == cols());
371
313
  // for 2x2, it's worth giving a chance to avoid evaluating.
372
314
  // for larger sizes, evaluating has negligible cost and limits code size.
373
- typedef typename internal::conditional<
374
- RowsAtCompileTime == 2,
375
- typename internal::remove_all<typename internal::nested_eval<Derived, 2>::type>::type,
376
- PlainObject
377
- >::type MatrixType;
378
- internal::compute_inverse_and_det_with_check<MatrixType, ResultType>::run
379
- (derived(), absDeterminantThreshold, inverse, determinant, invertible);
315
+ typedef std::conditional_t<RowsAtCompileTime == 2,
316
+ internal::remove_all_t<typename internal::nested_eval<Derived, 2>::type>, PlainObject>
317
+ MatrixType;
318
+ internal::compute_inverse_and_det_with_check<MatrixType, ResultType>::run(derived(), absDeterminantThreshold, inverse,
319
+ determinant, invertible);
380
320
  }
381
321
 
382
322
  /** \lu_module
383
- *
384
- * Computation of matrix inverse, with invertibility check.
385
- *
386
- * This is only for fixed-size square matrices of size up to 4x4.
387
- *
388
- * \param inverse Reference to the matrix in which to store the inverse.
389
- * \param invertible Reference to the bool variable in which to store whether the matrix is invertible.
390
- * \param absDeterminantThreshold Optional parameter controlling the invertibility check.
391
- * The matrix will be declared invertible if the absolute value of its
392
- * determinant is greater than this threshold.
393
- *
394
- * Example: \include MatrixBase_computeInverseWithCheck.cpp
395
- * Output: \verbinclude MatrixBase_computeInverseWithCheck.out
396
- *
397
- * \sa inverse(), computeInverseAndDetWithCheck()
398
- */
399
- template<typename Derived>
400
- template<typename ResultType>
401
- inline void MatrixBase<Derived>::computeInverseWithCheck(
402
- ResultType& inverse,
403
- bool& invertible,
404
- const RealScalar& absDeterminantThreshold
405
- ) const
406
- {
323
+ *
324
+ * Computation of matrix inverse, with invertibility check.
325
+ *
326
+ * This is only for fixed-size square matrices of size up to 4x4.
327
+ *
328
+ * Notice that it will trigger a copy of input matrix when trying to do the inverse in place.
329
+ *
330
+ * \param inverse Reference to the matrix in which to store the inverse.
331
+ * \param invertible Reference to the bool variable in which to store whether the matrix is invertible.
332
+ * \param absDeterminantThreshold Optional parameter controlling the invertibility check.
333
+ * The matrix will be declared invertible if the absolute value of its
334
+ * determinant is greater than this threshold.
335
+ *
336
+ * Example: \include MatrixBase_computeInverseWithCheck.cpp
337
+ * Output: \verbinclude MatrixBase_computeInverseWithCheck.out
338
+ *
339
+ * \sa inverse(), computeInverseAndDetWithCheck()
340
+ */
341
+ template <typename Derived>
342
+ template <typename ResultType>
343
+ inline void MatrixBase<Derived>::computeInverseWithCheck(ResultType& inverse, bool& invertible,
344
+ const RealScalar& absDeterminantThreshold) const {
407
345
  Scalar determinant;
408
346
  // i'd love to put some static assertions there, but SFINAE means that they have no effect...
409
347
  eigen_assert(rows() == cols());
410
- computeInverseAndDetWithCheck(inverse,determinant,invertible,absDeterminantThreshold);
348
+ computeInverseAndDetWithCheck(inverse, determinant, invertible, absDeterminantThreshold);
411
349
  }
412
350
 
413
- } // end namespace Eigen
351
+ } // end namespace Eigen
414
352
 
415
- #endif // EIGEN_INVERSE_IMPL_H
353
+ #endif // EIGEN_INVERSE_IMPL_H