@smake/eigen 1.0.2 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (435) hide show
  1. package/README.md +1 -1
  2. package/eigen/Eigen/AccelerateSupport +52 -0
  3. package/eigen/Eigen/Cholesky +18 -21
  4. package/eigen/Eigen/CholmodSupport +28 -28
  5. package/eigen/Eigen/Core +235 -326
  6. package/eigen/Eigen/Eigenvalues +16 -14
  7. package/eigen/Eigen/Geometry +21 -24
  8. package/eigen/Eigen/Householder +9 -8
  9. package/eigen/Eigen/IterativeLinearSolvers +8 -4
  10. package/eigen/Eigen/Jacobi +14 -14
  11. package/eigen/Eigen/KLUSupport +43 -0
  12. package/eigen/Eigen/LU +16 -20
  13. package/eigen/Eigen/MetisSupport +12 -12
  14. package/eigen/Eigen/OrderingMethods +54 -54
  15. package/eigen/Eigen/PaStiXSupport +23 -20
  16. package/eigen/Eigen/PardisoSupport +17 -14
  17. package/eigen/Eigen/QR +18 -21
  18. package/eigen/Eigen/QtAlignedMalloc +5 -13
  19. package/eigen/Eigen/SPQRSupport +21 -14
  20. package/eigen/Eigen/SVD +23 -18
  21. package/eigen/Eigen/Sparse +1 -4
  22. package/eigen/Eigen/SparseCholesky +18 -23
  23. package/eigen/Eigen/SparseCore +18 -17
  24. package/eigen/Eigen/SparseLU +12 -8
  25. package/eigen/Eigen/SparseQR +16 -14
  26. package/eigen/Eigen/StdDeque +5 -2
  27. package/eigen/Eigen/StdList +5 -2
  28. package/eigen/Eigen/StdVector +5 -2
  29. package/eigen/Eigen/SuperLUSupport +30 -24
  30. package/eigen/Eigen/ThreadPool +80 -0
  31. package/eigen/Eigen/UmfPackSupport +19 -17
  32. package/eigen/Eigen/Version +14 -0
  33. package/eigen/Eigen/src/AccelerateSupport/AccelerateSupport.h +423 -0
  34. package/eigen/Eigen/src/AccelerateSupport/InternalHeaderCheck.h +3 -0
  35. package/eigen/Eigen/src/Cholesky/InternalHeaderCheck.h +3 -0
  36. package/eigen/Eigen/src/Cholesky/LDLT.h +377 -401
  37. package/eigen/Eigen/src/Cholesky/LLT.h +332 -360
  38. package/eigen/Eigen/src/Cholesky/LLT_LAPACKE.h +81 -56
  39. package/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +620 -521
  40. package/eigen/Eigen/src/CholmodSupport/InternalHeaderCheck.h +3 -0
  41. package/eigen/Eigen/src/Core/ArithmeticSequence.h +239 -0
  42. package/eigen/Eigen/src/Core/Array.h +341 -294
  43. package/eigen/Eigen/src/Core/ArrayBase.h +190 -203
  44. package/eigen/Eigen/src/Core/ArrayWrapper.h +127 -171
  45. package/eigen/Eigen/src/Core/Assign.h +30 -40
  46. package/eigen/Eigen/src/Core/AssignEvaluator.h +711 -589
  47. package/eigen/Eigen/src/Core/Assign_MKL.h +130 -125
  48. package/eigen/Eigen/src/Core/BandMatrix.h +268 -283
  49. package/eigen/Eigen/src/Core/Block.h +375 -398
  50. package/eigen/Eigen/src/Core/CommaInitializer.h +86 -97
  51. package/eigen/Eigen/src/Core/ConditionEstimator.h +51 -53
  52. package/eigen/Eigen/src/Core/CoreEvaluators.h +1356 -1026
  53. package/eigen/Eigen/src/Core/CoreIterators.h +73 -59
  54. package/eigen/Eigen/src/Core/CwiseBinaryOp.h +114 -132
  55. package/eigen/Eigen/src/Core/CwiseNullaryOp.h +726 -617
  56. package/eigen/Eigen/src/Core/CwiseTernaryOp.h +77 -103
  57. package/eigen/Eigen/src/Core/CwiseUnaryOp.h +56 -68
  58. package/eigen/Eigen/src/Core/CwiseUnaryView.h +132 -95
  59. package/eigen/Eigen/src/Core/DenseBase.h +632 -571
  60. package/eigen/Eigen/src/Core/DenseCoeffsBase.h +511 -624
  61. package/eigen/Eigen/src/Core/DenseStorage.h +512 -509
  62. package/eigen/Eigen/src/Core/DeviceWrapper.h +153 -0
  63. package/eigen/Eigen/src/Core/Diagonal.h +169 -210
  64. package/eigen/Eigen/src/Core/DiagonalMatrix.h +351 -274
  65. package/eigen/Eigen/src/Core/DiagonalProduct.h +12 -10
  66. package/eigen/Eigen/src/Core/Dot.h +172 -222
  67. package/eigen/Eigen/src/Core/EigenBase.h +75 -85
  68. package/eigen/Eigen/src/Core/Fill.h +138 -0
  69. package/eigen/Eigen/src/Core/FindCoeff.h +464 -0
  70. package/eigen/Eigen/src/Core/ForceAlignedAccess.h +90 -109
  71. package/eigen/Eigen/src/Core/Fuzzy.h +82 -105
  72. package/eigen/Eigen/src/Core/GeneralProduct.h +327 -263
  73. package/eigen/Eigen/src/Core/GenericPacketMath.h +1472 -360
  74. package/eigen/Eigen/src/Core/GlobalFunctions.h +194 -151
  75. package/eigen/Eigen/src/Core/IO.h +147 -139
  76. package/eigen/Eigen/src/Core/IndexedView.h +321 -0
  77. package/eigen/Eigen/src/Core/InnerProduct.h +260 -0
  78. package/eigen/Eigen/src/Core/InternalHeaderCheck.h +3 -0
  79. package/eigen/Eigen/src/Core/Inverse.h +56 -66
  80. package/eigen/Eigen/src/Core/Map.h +124 -142
  81. package/eigen/Eigen/src/Core/MapBase.h +256 -281
  82. package/eigen/Eigen/src/Core/MathFunctions.h +1620 -938
  83. package/eigen/Eigen/src/Core/MathFunctionsImpl.h +233 -71
  84. package/eigen/Eigen/src/Core/Matrix.h +491 -416
  85. package/eigen/Eigen/src/Core/MatrixBase.h +468 -453
  86. package/eigen/Eigen/src/Core/NestByValue.h +66 -85
  87. package/eigen/Eigen/src/Core/NoAlias.h +79 -85
  88. package/eigen/Eigen/src/Core/NumTraits.h +235 -148
  89. package/eigen/Eigen/src/Core/PartialReduxEvaluator.h +253 -0
  90. package/eigen/Eigen/src/Core/PermutationMatrix.h +461 -511
  91. package/eigen/Eigen/src/Core/PlainObjectBase.h +871 -894
  92. package/eigen/Eigen/src/Core/Product.h +260 -139
  93. package/eigen/Eigen/src/Core/ProductEvaluators.h +863 -714
  94. package/eigen/Eigen/src/Core/Random.h +161 -136
  95. package/eigen/Eigen/src/Core/RandomImpl.h +262 -0
  96. package/eigen/Eigen/src/Core/RealView.h +250 -0
  97. package/eigen/Eigen/src/Core/Redux.h +366 -336
  98. package/eigen/Eigen/src/Core/Ref.h +308 -209
  99. package/eigen/Eigen/src/Core/Replicate.h +94 -106
  100. package/eigen/Eigen/src/Core/Reshaped.h +398 -0
  101. package/eigen/Eigen/src/Core/ReturnByValue.h +49 -55
  102. package/eigen/Eigen/src/Core/Reverse.h +136 -145
  103. package/eigen/Eigen/src/Core/Select.h +70 -140
  104. package/eigen/Eigen/src/Core/SelfAdjointView.h +262 -285
  105. package/eigen/Eigen/src/Core/SelfCwiseBinaryOp.h +23 -20
  106. package/eigen/Eigen/src/Core/SkewSymmetricMatrix3.h +382 -0
  107. package/eigen/Eigen/src/Core/Solve.h +97 -111
  108. package/eigen/Eigen/src/Core/SolveTriangular.h +131 -129
  109. package/eigen/Eigen/src/Core/SolverBase.h +138 -101
  110. package/eigen/Eigen/src/Core/StableNorm.h +156 -160
  111. package/eigen/Eigen/src/Core/StlIterators.h +619 -0
  112. package/eigen/Eigen/src/Core/Stride.h +91 -88
  113. package/eigen/Eigen/src/Core/Swap.h +70 -38
  114. package/eigen/Eigen/src/Core/Transpose.h +295 -273
  115. package/eigen/Eigen/src/Core/Transpositions.h +272 -317
  116. package/eigen/Eigen/src/Core/TriangularMatrix.h +670 -755
  117. package/eigen/Eigen/src/Core/VectorBlock.h +59 -72
  118. package/eigen/Eigen/src/Core/VectorwiseOp.h +668 -630
  119. package/eigen/Eigen/src/Core/Visitor.h +480 -216
  120. package/eigen/Eigen/src/Core/arch/AVX/Complex.h +407 -293
  121. package/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +79 -388
  122. package/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +2935 -491
  123. package/eigen/Eigen/src/Core/arch/AVX/Reductions.h +353 -0
  124. package/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +279 -22
  125. package/eigen/Eigen/src/Core/arch/AVX512/Complex.h +472 -0
  126. package/eigen/Eigen/src/Core/arch/AVX512/GemmKernel.h +1245 -0
  127. package/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +85 -333
  128. package/eigen/Eigen/src/Core/arch/AVX512/MathFunctionsFP16.h +75 -0
  129. package/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +2490 -649
  130. package/eigen/Eigen/src/Core/arch/AVX512/PacketMathFP16.h +1413 -0
  131. package/eigen/Eigen/src/Core/arch/AVX512/Reductions.h +297 -0
  132. package/eigen/Eigen/src/Core/arch/AVX512/TrsmKernel.h +1167 -0
  133. package/eigen/Eigen/src/Core/arch/AVX512/TrsmUnrolls.inc +1219 -0
  134. package/eigen/Eigen/src/Core/arch/AVX512/TypeCasting.h +277 -0
  135. package/eigen/Eigen/src/Core/arch/AVX512/TypeCastingFP16.h +130 -0
  136. package/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +521 -298
  137. package/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +39 -280
  138. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +3686 -0
  139. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +205 -0
  140. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +901 -0
  141. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMAbfloat16.h +742 -0
  142. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixVectorProduct.inc +2818 -0
  143. package/eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h +3391 -723
  144. package/eigen/Eigen/src/Core/arch/AltiVec/TypeCasting.h +153 -0
  145. package/eigen/Eigen/src/Core/arch/Default/BFloat16.h +866 -0
  146. package/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +113 -14
  147. package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +2634 -0
  148. package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +227 -0
  149. package/eigen/Eigen/src/Core/arch/Default/Half.h +1091 -0
  150. package/eigen/Eigen/src/Core/arch/Default/Settings.h +11 -13
  151. package/eigen/Eigen/src/Core/arch/GPU/Complex.h +244 -0
  152. package/eigen/Eigen/src/Core/arch/GPU/MathFunctions.h +104 -0
  153. package/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +1712 -0
  154. package/eigen/Eigen/src/Core/arch/GPU/Tuple.h +268 -0
  155. package/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +77 -0
  156. package/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
  157. package/eigen/Eigen/src/Core/arch/HVX/PacketMath.h +1088 -0
  158. package/eigen/Eigen/src/Core/arch/LSX/Complex.h +520 -0
  159. package/eigen/Eigen/src/Core/arch/LSX/GeneralBlockPanelKernel.h +23 -0
  160. package/eigen/Eigen/src/Core/arch/LSX/MathFunctions.h +43 -0
  161. package/eigen/Eigen/src/Core/arch/LSX/PacketMath.h +2866 -0
  162. package/eigen/Eigen/src/Core/arch/LSX/TypeCasting.h +526 -0
  163. package/eigen/Eigen/src/Core/arch/MSA/Complex.h +620 -0
  164. package/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +379 -0
  165. package/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +1237 -0
  166. package/eigen/Eigen/src/Core/arch/NEON/Complex.h +531 -289
  167. package/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +243 -0
  168. package/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +50 -73
  169. package/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +5915 -579
  170. package/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +1642 -0
  171. package/eigen/Eigen/src/Core/arch/NEON/UnaryFunctors.h +57 -0
  172. package/eigen/Eigen/src/Core/arch/SSE/Complex.h +366 -334
  173. package/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +40 -514
  174. package/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +2164 -675
  175. package/eigen/Eigen/src/Core/arch/SSE/Reductions.h +324 -0
  176. package/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +188 -35
  177. package/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +48 -0
  178. package/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +674 -0
  179. package/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +52 -0
  180. package/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +227 -0
  181. package/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +303 -0
  182. package/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +576 -0
  183. package/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +83 -0
  184. package/eigen/Eigen/src/Core/arch/ZVector/Complex.h +434 -261
  185. package/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +160 -53
  186. package/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +1073 -605
  187. package/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +123 -117
  188. package/eigen/Eigen/src/Core/functors/BinaryFunctors.h +594 -322
  189. package/eigen/Eigen/src/Core/functors/NullaryFunctors.h +204 -118
  190. package/eigen/Eigen/src/Core/functors/StlFunctors.h +110 -97
  191. package/eigen/Eigen/src/Core/functors/TernaryFunctors.h +34 -7
  192. package/eigen/Eigen/src/Core/functors/UnaryFunctors.h +1158 -530
  193. package/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +2329 -1333
  194. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +328 -364
  195. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +191 -178
  196. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +85 -82
  197. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +154 -73
  198. package/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +396 -542
  199. package/eigen/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +80 -77
  200. package/eigen/Eigen/src/Core/products/Parallelizer.h +208 -92
  201. package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +331 -375
  202. package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +206 -224
  203. package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +139 -146
  204. package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +58 -61
  205. package/eigen/Eigen/src/Core/products/SelfadjointProduct.h +71 -71
  206. package/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h +48 -46
  207. package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h +294 -369
  208. package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +246 -238
  209. package/eigen/Eigen/src/Core/products/TriangularMatrixVector.h +244 -247
  210. package/eigen/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +212 -192
  211. package/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h +328 -275
  212. package/eigen/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +108 -109
  213. package/eigen/Eigen/src/Core/products/TriangularSolverVector.h +70 -93
  214. package/eigen/Eigen/src/Core/util/Assert.h +158 -0
  215. package/eigen/Eigen/src/Core/util/BlasUtil.h +413 -290
  216. package/eigen/Eigen/src/Core/util/ConfigureVectorization.h +543 -0
  217. package/eigen/Eigen/src/Core/util/Constants.h +314 -263
  218. package/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +130 -78
  219. package/eigen/Eigen/src/Core/util/EmulateArray.h +270 -0
  220. package/eigen/Eigen/src/Core/util/ForwardDeclarations.h +450 -224
  221. package/eigen/Eigen/src/Core/util/GpuHipCudaDefines.inc +101 -0
  222. package/eigen/Eigen/src/Core/util/GpuHipCudaUndefines.inc +45 -0
  223. package/eigen/Eigen/src/Core/util/IndexedViewHelper.h +487 -0
  224. package/eigen/Eigen/src/Core/util/IntegralConstant.h +279 -0
  225. package/eigen/Eigen/src/Core/util/MKL_support.h +39 -30
  226. package/eigen/Eigen/src/Core/util/Macros.h +939 -646
  227. package/eigen/Eigen/src/Core/util/MaxSizeVector.h +139 -0
  228. package/eigen/Eigen/src/Core/util/Memory.h +1042 -650
  229. package/eigen/Eigen/src/Core/util/Meta.h +618 -426
  230. package/eigen/Eigen/src/Core/util/MoreMeta.h +638 -0
  231. package/eigen/Eigen/src/Core/util/ReenableStupidWarnings.h +32 -19
  232. package/eigen/Eigen/src/Core/util/ReshapedHelper.h +51 -0
  233. package/eigen/Eigen/src/Core/util/Serializer.h +209 -0
  234. package/eigen/Eigen/src/Core/util/StaticAssert.h +51 -164
  235. package/eigen/Eigen/src/Core/util/SymbolicIndex.h +445 -0
  236. package/eigen/Eigen/src/Core/util/XprHelper.h +793 -538
  237. package/eigen/Eigen/src/Eigenvalues/ComplexEigenSolver.h +246 -277
  238. package/eigen/Eigen/src/Eigenvalues/ComplexSchur.h +299 -319
  239. package/eigen/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +52 -48
  240. package/eigen/Eigen/src/Eigenvalues/EigenSolver.h +413 -456
  241. package/eigen/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +309 -325
  242. package/eigen/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +157 -171
  243. package/eigen/Eigen/src/Eigenvalues/HessenbergDecomposition.h +292 -310
  244. package/eigen/Eigen/src/Eigenvalues/InternalHeaderCheck.h +3 -0
  245. package/eigen/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +91 -107
  246. package/eigen/Eigen/src/Eigenvalues/RealQZ.h +539 -606
  247. package/eigen/Eigen/src/Eigenvalues/RealSchur.h +348 -382
  248. package/eigen/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +41 -35
  249. package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +579 -600
  250. package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +47 -44
  251. package/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +434 -461
  252. package/eigen/Eigen/src/Geometry/AlignedBox.h +307 -214
  253. package/eigen/Eigen/src/Geometry/AngleAxis.h +135 -137
  254. package/eigen/Eigen/src/Geometry/EulerAngles.h +163 -74
  255. package/eigen/Eigen/src/Geometry/Homogeneous.h +289 -333
  256. package/eigen/Eigen/src/Geometry/Hyperplane.h +152 -161
  257. package/eigen/Eigen/src/Geometry/InternalHeaderCheck.h +3 -0
  258. package/eigen/Eigen/src/Geometry/OrthoMethods.h +168 -145
  259. package/eigen/Eigen/src/Geometry/ParametrizedLine.h +141 -104
  260. package/eigen/Eigen/src/Geometry/Quaternion.h +595 -497
  261. package/eigen/Eigen/src/Geometry/Rotation2D.h +110 -108
  262. package/eigen/Eigen/src/Geometry/RotationBase.h +148 -145
  263. package/eigen/Eigen/src/Geometry/Scaling.h +115 -90
  264. package/eigen/Eigen/src/Geometry/Transform.h +896 -953
  265. package/eigen/Eigen/src/Geometry/Translation.h +100 -98
  266. package/eigen/Eigen/src/Geometry/Umeyama.h +79 -84
  267. package/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +154 -0
  268. package/eigen/Eigen/src/Householder/BlockHouseholder.h +54 -42
  269. package/eigen/Eigen/src/Householder/Householder.h +104 -122
  270. package/eigen/Eigen/src/Householder/HouseholderSequence.h +416 -382
  271. package/eigen/Eigen/src/Householder/InternalHeaderCheck.h +3 -0
  272. package/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +153 -166
  273. package/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +127 -138
  274. package/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +95 -124
  275. package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +269 -267
  276. package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +246 -259
  277. package/eigen/Eigen/src/IterativeLinearSolvers/InternalHeaderCheck.h +3 -0
  278. package/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +218 -217
  279. package/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +80 -103
  280. package/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +59 -63
  281. package/eigen/Eigen/src/Jacobi/InternalHeaderCheck.h +3 -0
  282. package/eigen/Eigen/src/Jacobi/Jacobi.h +256 -291
  283. package/eigen/Eigen/src/KLUSupport/InternalHeaderCheck.h +3 -0
  284. package/eigen/Eigen/src/KLUSupport/KLUSupport.h +339 -0
  285. package/eigen/Eigen/src/LU/Determinant.h +60 -63
  286. package/eigen/Eigen/src/LU/FullPivLU.h +561 -626
  287. package/eigen/Eigen/src/LU/InternalHeaderCheck.h +3 -0
  288. package/eigen/Eigen/src/LU/InverseImpl.h +213 -275
  289. package/eigen/Eigen/src/LU/PartialPivLU.h +407 -435
  290. package/eigen/Eigen/src/LU/PartialPivLU_LAPACKE.h +54 -40
  291. package/eigen/Eigen/src/LU/arch/InverseSize4.h +353 -0
  292. package/eigen/Eigen/src/MetisSupport/InternalHeaderCheck.h +3 -0
  293. package/eigen/Eigen/src/MetisSupport/MetisSupport.h +81 -93
  294. package/eigen/Eigen/src/OrderingMethods/Amd.h +250 -282
  295. package/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +950 -1103
  296. package/eigen/Eigen/src/OrderingMethods/InternalHeaderCheck.h +3 -0
  297. package/eigen/Eigen/src/OrderingMethods/Ordering.h +111 -122
  298. package/eigen/Eigen/src/PaStiXSupport/InternalHeaderCheck.h +3 -0
  299. package/eigen/Eigen/src/PaStiXSupport/PaStiXSupport.h +524 -570
  300. package/eigen/Eigen/src/PardisoSupport/InternalHeaderCheck.h +3 -0
  301. package/eigen/Eigen/src/PardisoSupport/PardisoSupport.h +385 -429
  302. package/eigen/Eigen/src/QR/ColPivHouseholderQR.h +494 -473
  303. package/eigen/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +120 -56
  304. package/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +223 -137
  305. package/eigen/Eigen/src/QR/FullPivHouseholderQR.h +517 -460
  306. package/eigen/Eigen/src/QR/HouseholderQR.h +412 -278
  307. package/eigen/Eigen/src/QR/HouseholderQR_LAPACKE.h +32 -23
  308. package/eigen/Eigen/src/QR/InternalHeaderCheck.h +3 -0
  309. package/eigen/Eigen/src/SPQRSupport/InternalHeaderCheck.h +3 -0
  310. package/eigen/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +263 -261
  311. package/eigen/Eigen/src/SVD/BDCSVD.h +872 -679
  312. package/eigen/Eigen/src/SVD/BDCSVD_LAPACKE.h +174 -0
  313. package/eigen/Eigen/src/SVD/InternalHeaderCheck.h +3 -0
  314. package/eigen/Eigen/src/SVD/JacobiSVD.h +585 -543
  315. package/eigen/Eigen/src/SVD/JacobiSVD_LAPACKE.h +85 -49
  316. package/eigen/Eigen/src/SVD/SVDBase.h +281 -160
  317. package/eigen/Eigen/src/SVD/UpperBidiagonalization.h +202 -237
  318. package/eigen/Eigen/src/SparseCholesky/InternalHeaderCheck.h +3 -0
  319. package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +769 -590
  320. package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +318 -129
  321. package/eigen/Eigen/src/SparseCore/AmbiVector.h +202 -251
  322. package/eigen/Eigen/src/SparseCore/CompressedStorage.h +184 -236
  323. package/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +140 -184
  324. package/eigen/Eigen/src/SparseCore/InternalHeaderCheck.h +3 -0
  325. package/eigen/Eigen/src/SparseCore/SparseAssign.h +174 -111
  326. package/eigen/Eigen/src/SparseCore/SparseBlock.h +408 -477
  327. package/eigen/Eigen/src/SparseCore/SparseColEtree.h +100 -112
  328. package/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +531 -280
  329. package/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +559 -347
  330. package/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +100 -108
  331. package/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +185 -191
  332. package/eigen/Eigen/src/SparseCore/SparseDiagonalProduct.h +71 -71
  333. package/eigen/Eigen/src/SparseCore/SparseDot.h +49 -47
  334. package/eigen/Eigen/src/SparseCore/SparseFuzzy.h +13 -11
  335. package/eigen/Eigen/src/SparseCore/SparseMap.h +243 -253
  336. package/eigen/Eigen/src/SparseCore/SparseMatrix.h +1614 -1142
  337. package/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +403 -357
  338. package/eigen/Eigen/src/SparseCore/SparsePermutation.h +186 -115
  339. package/eigen/Eigen/src/SparseCore/SparseProduct.h +100 -91
  340. package/eigen/Eigen/src/SparseCore/SparseRedux.h +22 -24
  341. package/eigen/Eigen/src/SparseCore/SparseRef.h +268 -295
  342. package/eigen/Eigen/src/SparseCore/SparseSelfAdjointView.h +371 -414
  343. package/eigen/Eigen/src/SparseCore/SparseSolverBase.h +78 -87
  344. package/eigen/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +81 -95
  345. package/eigen/Eigen/src/SparseCore/SparseTranspose.h +62 -71
  346. package/eigen/Eigen/src/SparseCore/SparseTriangularView.h +132 -144
  347. package/eigen/Eigen/src/SparseCore/SparseUtil.h +146 -115
  348. package/eigen/Eigen/src/SparseCore/SparseVector.h +426 -372
  349. package/eigen/Eigen/src/SparseCore/SparseView.h +164 -193
  350. package/eigen/Eigen/src/SparseCore/TriangularSolver.h +129 -170
  351. package/eigen/Eigen/src/SparseLU/InternalHeaderCheck.h +3 -0
  352. package/eigen/Eigen/src/SparseLU/SparseLU.h +814 -618
  353. package/eigen/Eigen/src/SparseLU/SparseLUImpl.h +61 -48
  354. package/eigen/Eigen/src/SparseLU/SparseLU_Memory.h +102 -118
  355. package/eigen/Eigen/src/SparseLU/SparseLU_Structs.h +38 -35
  356. package/eigen/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +273 -255
  357. package/eigen/Eigen/src/SparseLU/SparseLU_Utils.h +44 -49
  358. package/eigen/Eigen/src/SparseLU/SparseLU_column_bmod.h +104 -108
  359. package/eigen/Eigen/src/SparseLU/SparseLU_column_dfs.h +90 -101
  360. package/eigen/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +57 -58
  361. package/eigen/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +43 -55
  362. package/eigen/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +74 -71
  363. package/eigen/Eigen/src/SparseLU/SparseLU_panel_bmod.h +125 -133
  364. package/eigen/Eigen/src/SparseLU/SparseLU_panel_dfs.h +136 -159
  365. package/eigen/Eigen/src/SparseLU/SparseLU_pivotL.h +51 -52
  366. package/eigen/Eigen/src/SparseLU/SparseLU_pruneL.h +67 -73
  367. package/eigen/Eigen/src/SparseLU/SparseLU_relax_snode.h +24 -26
  368. package/eigen/Eigen/src/SparseQR/InternalHeaderCheck.h +3 -0
  369. package/eigen/Eigen/src/SparseQR/SparseQR.h +451 -490
  370. package/eigen/Eigen/src/StlSupport/StdDeque.h +28 -105
  371. package/eigen/Eigen/src/StlSupport/StdList.h +28 -84
  372. package/eigen/Eigen/src/StlSupport/StdVector.h +28 -108
  373. package/eigen/Eigen/src/StlSupport/details.h +48 -50
  374. package/eigen/Eigen/src/SuperLUSupport/InternalHeaderCheck.h +3 -0
  375. package/eigen/Eigen/src/SuperLUSupport/SuperLUSupport.h +634 -732
  376. package/eigen/Eigen/src/ThreadPool/Barrier.h +70 -0
  377. package/eigen/Eigen/src/ThreadPool/CoreThreadPoolDevice.h +336 -0
  378. package/eigen/Eigen/src/ThreadPool/EventCount.h +241 -0
  379. package/eigen/Eigen/src/ThreadPool/ForkJoin.h +140 -0
  380. package/eigen/Eigen/src/ThreadPool/InternalHeaderCheck.h +4 -0
  381. package/eigen/Eigen/src/ThreadPool/NonBlockingThreadPool.h +587 -0
  382. package/eigen/Eigen/src/ThreadPool/RunQueue.h +230 -0
  383. package/eigen/Eigen/src/ThreadPool/ThreadCancel.h +21 -0
  384. package/eigen/Eigen/src/ThreadPool/ThreadEnvironment.h +43 -0
  385. package/eigen/Eigen/src/ThreadPool/ThreadLocal.h +289 -0
  386. package/eigen/Eigen/src/ThreadPool/ThreadPoolInterface.h +50 -0
  387. package/eigen/Eigen/src/ThreadPool/ThreadYield.h +16 -0
  388. package/eigen/Eigen/src/UmfPackSupport/InternalHeaderCheck.h +3 -0
  389. package/eigen/Eigen/src/UmfPackSupport/UmfPackSupport.h +480 -380
  390. package/eigen/Eigen/src/misc/Image.h +41 -43
  391. package/eigen/Eigen/src/misc/InternalHeaderCheck.h +3 -0
  392. package/eigen/Eigen/src/misc/Kernel.h +39 -41
  393. package/eigen/Eigen/src/misc/RealSvd2x2.h +19 -21
  394. package/eigen/Eigen/src/misc/blas.h +83 -426
  395. package/eigen/Eigen/src/misc/lapacke.h +9976 -16182
  396. package/eigen/Eigen/src/misc/lapacke_helpers.h +163 -0
  397. package/eigen/Eigen/src/misc/lapacke_mangling.h +4 -5
  398. package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.inc +344 -0
  399. package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.inc +544 -0
  400. package/eigen/Eigen/src/plugins/BlockMethods.inc +1370 -0
  401. package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.inc +116 -0
  402. package/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.inc +167 -0
  403. package/eigen/Eigen/src/plugins/IndexedViewMethods.inc +192 -0
  404. package/eigen/Eigen/src/plugins/InternalHeaderCheck.inc +3 -0
  405. package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.inc +331 -0
  406. package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.inc +118 -0
  407. package/eigen/Eigen/src/plugins/ReshapedMethods.inc +133 -0
  408. package/lib/LibEigen.d.ts +4 -0
  409. package/lib/LibEigen.js +14 -0
  410. package/lib/index.d.ts +1 -1
  411. package/lib/index.js +7 -3
  412. package/package.json +2 -10
  413. package/eigen/Eigen/CMakeLists.txt +0 -19
  414. package/eigen/Eigen/src/Core/BooleanRedux.h +0 -164
  415. package/eigen/Eigen/src/Core/arch/CUDA/Complex.h +0 -103
  416. package/eigen/Eigen/src/Core/arch/CUDA/Half.h +0 -675
  417. package/eigen/Eigen/src/Core/arch/CUDA/MathFunctions.h +0 -91
  418. package/eigen/Eigen/src/Core/arch/CUDA/PacketMath.h +0 -333
  419. package/eigen/Eigen/src/Core/arch/CUDA/PacketMathHalf.h +0 -1124
  420. package/eigen/Eigen/src/Core/arch/CUDA/TypeCasting.h +0 -212
  421. package/eigen/Eigen/src/Core/util/NonMPL2.h +0 -3
  422. package/eigen/Eigen/src/Geometry/arch/Geometry_SSE.h +0 -161
  423. package/eigen/Eigen/src/LU/arch/Inverse_SSE.h +0 -338
  424. package/eigen/Eigen/src/SparseCore/MappedSparseMatrix.h +0 -67
  425. package/eigen/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +0 -280
  426. package/eigen/Eigen/src/misc/lapack.h +0 -152
  427. package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h +0 -332
  428. package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +0 -552
  429. package/eigen/Eigen/src/plugins/BlockMethods.h +0 -1058
  430. package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.h +0 -115
  431. package/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.h +0 -163
  432. package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +0 -152
  433. package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +0 -85
  434. package/lib/eigen.d.ts +0 -2
  435. package/lib/eigen.js +0 -15
@@ -11,18 +11,20 @@
11
11
  #ifndef EIGEN_DIAGONALPRODUCT_H
12
12
  #define EIGEN_DIAGONALPRODUCT_H
13
13
 
14
- namespace Eigen {
14
+ // IWYU pragma: private
15
+ #include "./InternalHeaderCheck.h"
16
+
17
+ namespace Eigen {
15
18
 
16
19
  /** \returns the diagonal matrix product of \c *this by the diagonal matrix \a diagonal.
17
- */
18
- template<typename Derived>
19
- template<typename DiagonalDerived>
20
- inline const Product<Derived, DiagonalDerived, LazyProduct>
21
- MatrixBase<Derived>::operator*(const DiagonalBase<DiagonalDerived> &a_diagonal) const
22
- {
23
- return Product<Derived, DiagonalDerived, LazyProduct>(derived(),a_diagonal.derived());
20
+ */
21
+ template <typename Derived>
22
+ template <typename DiagonalDerived>
23
+ EIGEN_DEVICE_FUNC inline const Product<Derived, DiagonalDerived, LazyProduct> MatrixBase<Derived>::operator*(
24
+ const DiagonalBase<DiagonalDerived> &a_diagonal) const {
25
+ return Product<Derived, DiagonalDerived, LazyProduct>(derived(), a_diagonal.derived());
24
26
  }
25
27
 
26
- } // end namespace Eigen
28
+ } // end namespace Eigen
27
29
 
28
- #endif // EIGEN_DIAGONALPRODUCT_H
30
+ #endif // EIGEN_DIAGONALPRODUCT_H
@@ -10,309 +10,259 @@
10
10
  #ifndef EIGEN_DOT_H
11
11
  #define EIGEN_DOT_H
12
12
 
13
- namespace Eigen {
13
+ // IWYU pragma: private
14
+ #include "./InternalHeaderCheck.h"
15
+
16
+ namespace Eigen {
14
17
 
15
18
  namespace internal {
16
19
 
17
- // helper function for dot(). The problem is that if we put that in the body of dot(), then upon calling dot
18
- // with mismatched types, the compiler emits errors about failing to instantiate cwiseProduct BEFORE
19
- // looking at the static assertions. Thus this is a trick to get better compile errors.
20
- template<typename T, typename U,
21
- // the NeedToTranspose condition here is taken straight from Assign.h
22
- bool NeedToTranspose = T::IsVectorAtCompileTime
23
- && U::IsVectorAtCompileTime
24
- && ((int(T::RowsAtCompileTime) == 1 && int(U::ColsAtCompileTime) == 1)
25
- | // FIXME | instead of || to please GCC 4.4.0 stupid warning "suggest parentheses around &&".
26
- // revert to || as soon as not needed anymore.
27
- (int(T::ColsAtCompileTime) == 1 && int(U::RowsAtCompileTime) == 1))
28
- >
29
- struct dot_nocheck
30
- {
31
- typedef scalar_conj_product_op<typename traits<T>::Scalar,typename traits<U>::Scalar> conj_prod;
32
- typedef typename conj_prod::result_type ResScalar;
33
- EIGEN_DEVICE_FUNC
34
- EIGEN_STRONG_INLINE
35
- static ResScalar run(const MatrixBase<T>& a, const MatrixBase<U>& b)
36
- {
37
- return a.template binaryExpr<conj_prod>(b).sum();
20
+ template <typename Derived, typename Scalar = typename traits<Derived>::Scalar>
21
+ struct squared_norm_impl {
22
+ using Real = typename NumTraits<Scalar>::Real;
23
+ static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Real run(const Derived& a) {
24
+ Scalar result = a.unaryExpr(squared_norm_functor<Scalar>()).sum();
25
+ return numext::real(result) + numext::imag(result);
38
26
  }
39
27
  };
40
28
 
41
- template<typename T, typename U>
42
- struct dot_nocheck<T, U, true>
43
- {
44
- typedef scalar_conj_product_op<typename traits<T>::Scalar,typename traits<U>::Scalar> conj_prod;
45
- typedef typename conj_prod::result_type ResScalar;
46
- EIGEN_DEVICE_FUNC
47
- EIGEN_STRONG_INLINE
48
- static ResScalar run(const MatrixBase<T>& a, const MatrixBase<U>& b)
49
- {
50
- return a.transpose().template binaryExpr<conj_prod>(b).sum();
51
- }
29
+ template <typename Derived>
30
+ struct squared_norm_impl<Derived, bool> {
31
+ static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool run(const Derived& a) { return a.any(); }
52
32
  };
53
33
 
54
- } // end namespace internal
34
+ } // end namespace internal
55
35
 
56
36
  /** \fn MatrixBase::dot
57
- * \returns the dot product of *this with other.
58
- *
59
- * \only_for_vectors
60
- *
61
- * \note If the scalar type is complex numbers, then this function returns the hermitian
62
- * (sesquilinear) dot product, conjugate-linear in the first variable and linear in the
63
- * second variable.
64
- *
65
- * \sa squaredNorm(), norm()
66
- */
67
- template<typename Derived>
68
- template<typename OtherDerived>
69
- EIGEN_DEVICE_FUNC
70
- EIGEN_STRONG_INLINE
71
- typename ScalarBinaryOpTraits<typename internal::traits<Derived>::Scalar,typename internal::traits<OtherDerived>::Scalar>::ReturnType
72
- MatrixBase<Derived>::dot(const MatrixBase<OtherDerived>& other) const
73
- {
74
- EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
75
- EIGEN_STATIC_ASSERT_VECTOR_ONLY(OtherDerived)
76
- EIGEN_STATIC_ASSERT_SAME_VECTOR_SIZE(Derived,OtherDerived)
77
- #if !(defined(EIGEN_NO_STATIC_ASSERT) && defined(EIGEN_NO_DEBUG))
78
- typedef internal::scalar_conj_product_op<Scalar,typename OtherDerived::Scalar> func;
79
- EIGEN_CHECK_BINARY_COMPATIBILIY(func,Scalar,typename OtherDerived::Scalar);
80
- #endif
81
-
82
- eigen_assert(size() == other.size());
83
-
84
- return internal::dot_nocheck<Derived,OtherDerived>::run(*this, other);
37
+ * \returns the dot product of *this with other.
38
+ *
39
+ * \only_for_vectors
40
+ *
41
+ * \note If the scalar type is complex numbers, then this function returns the hermitian
42
+ * (sesquilinear) dot product, conjugate-linear in the first variable and linear in the
43
+ * second variable.
44
+ *
45
+ * \sa squaredNorm(), norm()
46
+ */
47
+ template <typename Derived>
48
+ template <typename OtherDerived>
49
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
50
+ typename ScalarBinaryOpTraits<typename internal::traits<Derived>::Scalar,
51
+ typename internal::traits<OtherDerived>::Scalar>::ReturnType
52
+ MatrixBase<Derived>::dot(const MatrixBase<OtherDerived>& other) const {
53
+ return internal::dot_impl<Derived, OtherDerived>::run(derived(), other.derived());
85
54
  }
86
55
 
87
56
  //---------- implementation of L2 norm and related functions ----------
88
57
 
89
- /** \returns, for vectors, the squared \em l2 norm of \c *this, and for matrices the Frobenius norm.
90
- * In both cases, it consists in the sum of the square of all the matrix entries.
91
- * For vectors, this is also equals to the dot product of \c *this with itself.
92
- *
93
- * \sa dot(), norm(), lpNorm()
94
- */
95
- template<typename Derived>
96
- EIGEN_STRONG_INLINE typename NumTraits<typename internal::traits<Derived>::Scalar>::Real MatrixBase<Derived>::squaredNorm() const
97
- {
98
- return numext::real((*this).cwiseAbs2().sum());
58
+ /** \returns, for vectors, the squared \em l2 norm of \c *this, and for matrices the squared Frobenius norm.
59
+ * In both cases, it consists in the sum of the square of all the matrix entries.
60
+ * For vectors, this is also equals to the dot product of \c *this with itself.
61
+ *
62
+ * \sa dot(), norm(), lpNorm()
63
+ */
64
+ template <typename Derived>
65
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE typename NumTraits<typename internal::traits<Derived>::Scalar>::Real
66
+ MatrixBase<Derived>::squaredNorm() const {
67
+ return internal::squared_norm_impl<Derived>::run(derived());
99
68
  }
100
69
 
101
70
  /** \returns, for vectors, the \em l2 norm of \c *this, and for matrices the Frobenius norm.
102
- * In both cases, it consists in the square root of the sum of the square of all the matrix entries.
103
- * For vectors, this is also equals to the square root of the dot product of \c *this with itself.
104
- *
105
- * \sa lpNorm(), dot(), squaredNorm()
106
- */
107
- template<typename Derived>
108
- EIGEN_STRONG_INLINE typename NumTraits<typename internal::traits<Derived>::Scalar>::Real MatrixBase<Derived>::norm() const
109
- {
71
+ * In both cases, it consists in the square root of the sum of the square of all the matrix entries.
72
+ * For vectors, this is also equals to the square root of the dot product of \c *this with itself.
73
+ *
74
+ * \sa lpNorm(), dot(), squaredNorm()
75
+ */
76
+ template <typename Derived>
77
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE typename NumTraits<typename internal::traits<Derived>::Scalar>::Real
78
+ MatrixBase<Derived>::norm() const {
110
79
  return numext::sqrt(squaredNorm());
111
80
  }
112
81
 
113
82
  /** \returns an expression of the quotient of \c *this by its own norm.
114
- *
115
- * \warning If the input vector is too small (i.e., this->norm()==0),
116
- * then this function returns a copy of the input.
117
- *
118
- * \only_for_vectors
119
- *
120
- * \sa norm(), normalize()
121
- */
122
- template<typename Derived>
123
- EIGEN_STRONG_INLINE const typename MatrixBase<Derived>::PlainObject
124
- MatrixBase<Derived>::normalized() const
125
- {
126
- typedef typename internal::nested_eval<Derived,2>::type _Nested;
127
- _Nested n(derived());
83
+ *
84
+ * \warning If the input vector is too small (i.e., this->norm()==0),
85
+ * then this function returns a copy of the input.
86
+ *
87
+ * \only_for_vectors
88
+ *
89
+ * \sa norm(), normalize()
90
+ */
91
+ template <typename Derived>
92
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const typename MatrixBase<Derived>::PlainObject MatrixBase<Derived>::normalized()
93
+ const {
94
+ typedef typename internal::nested_eval<Derived, 2>::type Nested_;
95
+ Nested_ n(derived());
128
96
  RealScalar z = n.squaredNorm();
129
97
  // NOTE: after extensive benchmarking, this conditional does not impact performance, at least on recent x86 CPU
130
- if(z>RealScalar(0))
98
+ if (z > RealScalar(0))
131
99
  return n / numext::sqrt(z);
132
100
  else
133
101
  return n;
134
102
  }
135
103
 
136
104
  /** Normalizes the vector, i.e. divides it by its own norm.
137
- *
138
- * \only_for_vectors
139
- *
140
- * \warning If the input vector is too small (i.e., this->norm()==0), then \c *this is left unchanged.
141
- *
142
- * \sa norm(), normalized()
143
- */
144
- template<typename Derived>
145
- EIGEN_STRONG_INLINE void MatrixBase<Derived>::normalize()
146
- {
105
+ *
106
+ * \only_for_vectors
107
+ *
108
+ * \warning If the input vector is too small (i.e., this->norm()==0), then \c *this is left unchanged.
109
+ *
110
+ * \sa norm(), normalized()
111
+ */
112
+ template <typename Derived>
113
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void MatrixBase<Derived>::normalize() {
147
114
  RealScalar z = squaredNorm();
148
115
  // NOTE: after extensive benchmarking, this conditional does not impact performance, at least on recent x86 CPU
149
- if(z>RealScalar(0))
150
- derived() /= numext::sqrt(z);
116
+ if (z > RealScalar(0)) derived() /= numext::sqrt(z);
151
117
  }
152
118
 
153
119
  /** \returns an expression of the quotient of \c *this by its own norm while avoiding underflow and overflow.
154
- *
155
- * \only_for_vectors
156
- *
157
- * This method is analogue to the normalized() method, but it reduces the risk of
158
- * underflow and overflow when computing the norm.
159
- *
160
- * \warning If the input vector is too small (i.e., this->norm()==0),
161
- * then this function returns a copy of the input.
162
- *
163
- * \sa stableNorm(), stableNormalize(), normalized()
164
- */
165
- template<typename Derived>
166
- EIGEN_STRONG_INLINE const typename MatrixBase<Derived>::PlainObject
167
- MatrixBase<Derived>::stableNormalized() const
168
- {
169
- typedef typename internal::nested_eval<Derived,3>::type _Nested;
170
- _Nested n(derived());
120
+ *
121
+ * \only_for_vectors
122
+ *
123
+ * This method is analogue to the normalized() method, but it reduces the risk of
124
+ * underflow and overflow when computing the norm.
125
+ *
126
+ * \warning If the input vector is too small (i.e., this->norm()==0),
127
+ * then this function returns a copy of the input.
128
+ *
129
+ * \sa stableNorm(), stableNormalize(), normalized()
130
+ */
131
+ template <typename Derived>
132
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const typename MatrixBase<Derived>::PlainObject
133
+ MatrixBase<Derived>::stableNormalized() const {
134
+ typedef typename internal::nested_eval<Derived, 3>::type Nested_;
135
+ Nested_ n(derived());
171
136
  RealScalar w = n.cwiseAbs().maxCoeff();
172
- RealScalar z = (n/w).squaredNorm();
173
- if(z>RealScalar(0))
174
- return n / (numext::sqrt(z)*w);
137
+ RealScalar z = (n / w).squaredNorm();
138
+ if (z > RealScalar(0))
139
+ return n / (numext::sqrt(z) * w);
175
140
  else
176
141
  return n;
177
142
  }
178
143
 
179
144
  /** Normalizes the vector while avoid underflow and overflow
180
- *
181
- * \only_for_vectors
182
- *
183
- * This method is analogue to the normalize() method, but it reduces the risk of
184
- * underflow and overflow when computing the norm.
185
- *
186
- * \warning If the input vector is too small (i.e., this->norm()==0), then \c *this is left unchanged.
187
- *
188
- * \sa stableNorm(), stableNormalized(), normalize()
189
- */
190
- template<typename Derived>
191
- EIGEN_STRONG_INLINE void MatrixBase<Derived>::stableNormalize()
192
- {
145
+ *
146
+ * \only_for_vectors
147
+ *
148
+ * This method is analogue to the normalize() method, but it reduces the risk of
149
+ * underflow and overflow when computing the norm.
150
+ *
151
+ * \warning If the input vector is too small (i.e., this->norm()==0), then \c *this is left unchanged.
152
+ *
153
+ * \sa stableNorm(), stableNormalized(), normalize()
154
+ */
155
+ template <typename Derived>
156
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void MatrixBase<Derived>::stableNormalize() {
193
157
  RealScalar w = cwiseAbs().maxCoeff();
194
- RealScalar z = (derived()/w).squaredNorm();
195
- if(z>RealScalar(0))
196
- derived() /= numext::sqrt(z)*w;
158
+ RealScalar z = (derived() / w).squaredNorm();
159
+ if (z > RealScalar(0)) derived() /= numext::sqrt(z) * w;
197
160
  }
198
161
 
199
162
  //---------- implementation of other norms ----------
200
163
 
201
164
  namespace internal {
202
165
 
203
- template<typename Derived, int p>
204
- struct lpNorm_selector
205
- {
166
+ template <typename Derived, int p>
167
+ struct lpNorm_selector {
206
168
  typedef typename NumTraits<typename traits<Derived>::Scalar>::Real RealScalar;
207
- EIGEN_DEVICE_FUNC
208
- static inline RealScalar run(const MatrixBase<Derived>& m)
209
- {
210
- EIGEN_USING_STD_MATH(pow)
211
- return pow(m.cwiseAbs().array().pow(p).sum(), RealScalar(1)/p);
169
+ EIGEN_DEVICE_FUNC static inline RealScalar run(const MatrixBase<Derived>& m) {
170
+ EIGEN_USING_STD(pow)
171
+ return pow(m.cwiseAbs().array().pow(p).sum(), RealScalar(1) / p);
212
172
  }
213
173
  };
214
174
 
215
- template<typename Derived>
216
- struct lpNorm_selector<Derived, 1>
217
- {
218
- EIGEN_DEVICE_FUNC
219
- static inline typename NumTraits<typename traits<Derived>::Scalar>::Real run(const MatrixBase<Derived>& m)
220
- {
175
+ template <typename Derived>
176
+ struct lpNorm_selector<Derived, 1> {
177
+ EIGEN_DEVICE_FUNC static inline typename NumTraits<typename traits<Derived>::Scalar>::Real run(
178
+ const MatrixBase<Derived>& m) {
221
179
  return m.cwiseAbs().sum();
222
180
  }
223
181
  };
224
182
 
225
- template<typename Derived>
226
- struct lpNorm_selector<Derived, 2>
227
- {
228
- EIGEN_DEVICE_FUNC
229
- static inline typename NumTraits<typename traits<Derived>::Scalar>::Real run(const MatrixBase<Derived>& m)
230
- {
183
+ template <typename Derived>
184
+ struct lpNorm_selector<Derived, 2> {
185
+ EIGEN_DEVICE_FUNC static inline typename NumTraits<typename traits<Derived>::Scalar>::Real run(
186
+ const MatrixBase<Derived>& m) {
231
187
  return m.norm();
232
188
  }
233
189
  };
234
190
 
235
- template<typename Derived>
236
- struct lpNorm_selector<Derived, Infinity>
237
- {
191
+ template <typename Derived>
192
+ struct lpNorm_selector<Derived, Infinity> {
238
193
  typedef typename NumTraits<typename traits<Derived>::Scalar>::Real RealScalar;
239
- EIGEN_DEVICE_FUNC
240
- static inline RealScalar run(const MatrixBase<Derived>& m)
241
- {
242
- if(Derived::SizeAtCompileTime==0 || (Derived::SizeAtCompileTime==Dynamic && m.size()==0))
194
+ EIGEN_DEVICE_FUNC static inline RealScalar run(const MatrixBase<Derived>& m) {
195
+ if (Derived::SizeAtCompileTime == 0 || (Derived::SizeAtCompileTime == Dynamic && m.size() == 0))
243
196
  return RealScalar(0);
244
197
  return m.cwiseAbs().maxCoeff();
245
198
  }
246
199
  };
247
200
 
248
- } // end namespace internal
201
+ } // end namespace internal
249
202
 
250
- /** \returns the \b coefficient-wise \f$ \ell^p \f$ norm of \c *this, that is, returns the p-th root of the sum of the p-th powers of the absolute values
251
- * of the coefficients of \c *this. If \a p is the special value \a Eigen::Infinity, this function returns the \f$ \ell^\infty \f$
252
- * norm, that is the maximum of the absolute values of the coefficients of \c *this.
253
- *
254
- * In all cases, if \c *this is empty, then the value 0 is returned.
255
- *
256
- * \note For matrices, this function does not compute the <a href="https://en.wikipedia.org/wiki/Operator_norm">operator-norm</a>. That is, if \c *this is a matrix, then its coefficients are interpreted as a 1D vector. Nonetheless, you can easily compute the 1-norm and \f$\infty\f$-norm matrix operator norms using \link TutorialReductionsVisitorsBroadcastingReductionsNorm partial reductions \endlink.
257
- *
258
- * \sa norm()
259
- */
260
- template<typename Derived>
261
- template<int p>
203
+ /** \returns the \b coefficient-wise \f$ \ell^p \f$ norm of \c *this, that is, returns the p-th root of the sum of the
204
+ * p-th powers of the absolute values of the coefficients of \c *this. If \a p is the special value \a Eigen::Infinity,
205
+ * this function returns the \f$ \ell^\infty \f$ norm, that is the maximum of the absolute values of the coefficients of
206
+ * \c *this.
207
+ *
208
+ * In all cases, if \c *this is empty, then the value 0 is returned.
209
+ *
210
+ * \note For matrices, this function does not compute the <a
211
+ * href="https://en.wikipedia.org/wiki/Operator_norm">operator-norm</a>. That is, if \c *this is a matrix, then its
212
+ * coefficients are interpreted as a 1D vector. Nonetheless, you can easily compute the 1-norm and \f$\infty\f$-norm
213
+ * matrix operator norms using \link TutorialReductionsVisitorsBroadcastingReductionsNorm partial reductions \endlink.
214
+ *
215
+ * \sa norm()
216
+ */
217
+ template <typename Derived>
218
+ template <int p>
262
219
  #ifndef EIGEN_PARSED_BY_DOXYGEN
263
- inline typename NumTraits<typename internal::traits<Derived>::Scalar>::Real
220
+ EIGEN_DEVICE_FUNC inline typename NumTraits<typename internal::traits<Derived>::Scalar>::Real
264
221
  #else
265
- MatrixBase<Derived>::RealScalar
222
+ EIGEN_DEVICE_FUNC MatrixBase<Derived>::RealScalar
266
223
  #endif
267
- MatrixBase<Derived>::lpNorm() const
268
- {
224
+ MatrixBase<Derived>::lpNorm() const {
269
225
  return internal::lpNorm_selector<Derived, p>::run(*this);
270
226
  }
271
227
 
272
228
  //---------- implementation of isOrthogonal / isUnitary ----------
273
229
 
274
230
  /** \returns true if *this is approximately orthogonal to \a other,
275
- * within the precision given by \a prec.
276
- *
277
- * Example: \include MatrixBase_isOrthogonal.cpp
278
- * Output: \verbinclude MatrixBase_isOrthogonal.out
279
- */
280
- template<typename Derived>
281
- template<typename OtherDerived>
282
- bool MatrixBase<Derived>::isOrthogonal
283
- (const MatrixBase<OtherDerived>& other, const RealScalar& prec) const
284
- {
285
- typename internal::nested_eval<Derived,2>::type nested(derived());
286
- typename internal::nested_eval<OtherDerived,2>::type otherNested(other.derived());
231
+ * within the precision given by \a prec.
232
+ *
233
+ * Example: \include MatrixBase_isOrthogonal.cpp
234
+ * Output: \verbinclude MatrixBase_isOrthogonal.out
235
+ */
236
+ template <typename Derived>
237
+ template <typename OtherDerived>
238
+ bool MatrixBase<Derived>::isOrthogonal(const MatrixBase<OtherDerived>& other, const RealScalar& prec) const {
239
+ typename internal::nested_eval<Derived, 2>::type nested(derived());
240
+ typename internal::nested_eval<OtherDerived, 2>::type otherNested(other.derived());
287
241
  return numext::abs2(nested.dot(otherNested)) <= prec * prec * nested.squaredNorm() * otherNested.squaredNorm();
288
242
  }
289
243
 
290
244
  /** \returns true if *this is approximately an unitary matrix,
291
- * within the precision given by \a prec. In the case where the \a Scalar
292
- * type is real numbers, a unitary matrix is an orthogonal matrix, whence the name.
293
- *
294
- * \note This can be used to check whether a family of vectors forms an orthonormal basis.
295
- * Indeed, \c m.isUnitary() returns true if and only if the columns (equivalently, the rows) of m form an
296
- * orthonormal basis.
297
- *
298
- * Example: \include MatrixBase_isUnitary.cpp
299
- * Output: \verbinclude MatrixBase_isUnitary.out
300
- */
301
- template<typename Derived>
302
- bool MatrixBase<Derived>::isUnitary(const RealScalar& prec) const
303
- {
304
- typename internal::nested_eval<Derived,1>::type self(derived());
305
- for(Index i = 0; i < cols(); ++i)
306
- {
307
- if(!internal::isApprox(self.col(i).squaredNorm(), static_cast<RealScalar>(1), prec))
308
- return false;
309
- for(Index j = 0; j < i; ++j)
310
- if(!internal::isMuchSmallerThan(self.col(i).dot(self.col(j)), static_cast<Scalar>(1), prec))
311
- return false;
245
+ * within the precision given by \a prec. In the case where the \a Scalar
246
+ * type is real numbers, a unitary matrix is an orthogonal matrix, whence the name.
247
+ *
248
+ * \note This can be used to check whether a family of vectors forms an orthonormal basis.
249
+ * Indeed, \c m.isUnitary() returns true if and only if the columns (equivalently, the rows) of m form an
250
+ * orthonormal basis.
251
+ *
252
+ * Example: \include MatrixBase_isUnitary.cpp
253
+ * Output: \verbinclude MatrixBase_isUnitary.out
254
+ */
255
+ template <typename Derived>
256
+ bool MatrixBase<Derived>::isUnitary(const RealScalar& prec) const {
257
+ typename internal::nested_eval<Derived, 1>::type self(derived());
258
+ for (Index i = 0; i < cols(); ++i) {
259
+ if (!internal::isApprox(self.col(i).squaredNorm(), static_cast<RealScalar>(1), prec)) return false;
260
+ for (Index j = 0; j < i; ++j)
261
+ if (!internal::isMuchSmallerThan(self.col(i).dot(self.col(j)), static_cast<Scalar>(1), prec)) return false;
312
262
  }
313
263
  return true;
314
264
  }
315
265
 
316
- } // end namespace Eigen
266
+ } // end namespace Eigen
317
267
 
318
- #endif // EIGEN_DOT_H
268
+ #endif // EIGEN_DOT_H