@smake/eigen 1.1.0 → 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 (431) hide show
  1. package/README.md +1 -1
  2. package/eigen/Eigen/AccelerateSupport +52 -0
  3. package/eigen/Eigen/Cholesky +18 -20
  4. package/eigen/Eigen/CholmodSupport +28 -28
  5. package/eigen/Eigen/Core +187 -120
  6. package/eigen/Eigen/Eigenvalues +16 -13
  7. package/eigen/Eigen/Geometry +18 -18
  8. package/eigen/Eigen/Householder +9 -7
  9. package/eigen/Eigen/IterativeLinearSolvers +8 -4
  10. package/eigen/Eigen/Jacobi +14 -13
  11. package/eigen/Eigen/KLUSupport +23 -21
  12. package/eigen/Eigen/LU +15 -16
  13. package/eigen/Eigen/MetisSupport +12 -12
  14. package/eigen/Eigen/OrderingMethods +54 -51
  15. package/eigen/Eigen/PaStiXSupport +23 -21
  16. package/eigen/Eigen/PardisoSupport +17 -14
  17. package/eigen/Eigen/QR +18 -20
  18. package/eigen/Eigen/QtAlignedMalloc +5 -12
  19. package/eigen/Eigen/SPQRSupport +21 -14
  20. package/eigen/Eigen/SVD +23 -17
  21. package/eigen/Eigen/Sparse +1 -2
  22. package/eigen/Eigen/SparseCholesky +18 -15
  23. package/eigen/Eigen/SparseCore +18 -17
  24. package/eigen/Eigen/SparseLU +9 -9
  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 +366 -405
  37. package/eigen/Eigen/src/Cholesky/LLT.h +323 -367
  38. package/eigen/Eigen/src/Cholesky/LLT_LAPACKE.h +81 -56
  39. package/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +585 -529
  40. package/eigen/Eigen/src/CholmodSupport/InternalHeaderCheck.h +3 -0
  41. package/eigen/Eigen/src/Core/ArithmeticSequence.h +143 -317
  42. package/eigen/Eigen/src/Core/Array.h +329 -370
  43. package/eigen/Eigen/src/Core/ArrayBase.h +190 -203
  44. package/eigen/Eigen/src/Core/ArrayWrapper.h +126 -170
  45. package/eigen/Eigen/src/Core/Assign.h +30 -40
  46. package/eigen/Eigen/src/Core/AssignEvaluator.h +651 -604
  47. package/eigen/Eigen/src/Core/Assign_MKL.h +125 -120
  48. package/eigen/Eigen/src/Core/BandMatrix.h +267 -282
  49. package/eigen/Eigen/src/Core/Block.h +371 -390
  50. package/eigen/Eigen/src/Core/CommaInitializer.h +85 -100
  51. package/eigen/Eigen/src/Core/ConditionEstimator.h +51 -53
  52. package/eigen/Eigen/src/Core/CoreEvaluators.h +1214 -937
  53. package/eigen/Eigen/src/Core/CoreIterators.h +72 -63
  54. package/eigen/Eigen/src/Core/CwiseBinaryOp.h +112 -129
  55. package/eigen/Eigen/src/Core/CwiseNullaryOp.h +676 -702
  56. package/eigen/Eigen/src/Core/CwiseTernaryOp.h +77 -103
  57. package/eigen/Eigen/src/Core/CwiseUnaryOp.h +55 -67
  58. package/eigen/Eigen/src/Core/CwiseUnaryView.h +127 -92
  59. package/eigen/Eigen/src/Core/DenseBase.h +630 -658
  60. package/eigen/Eigen/src/Core/DenseCoeffsBase.h +511 -628
  61. package/eigen/Eigen/src/Core/DenseStorage.h +511 -590
  62. package/eigen/Eigen/src/Core/DeviceWrapper.h +153 -0
  63. package/eigen/Eigen/src/Core/Diagonal.h +168 -207
  64. package/eigen/Eigen/src/Core/DiagonalMatrix.h +346 -317
  65. package/eigen/Eigen/src/Core/DiagonalProduct.h +12 -10
  66. package/eigen/Eigen/src/Core/Dot.h +167 -217
  67. package/eigen/Eigen/src/Core/EigenBase.h +74 -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 -113
  71. package/eigen/Eigen/src/Core/Fuzzy.h +82 -105
  72. package/eigen/Eigen/src/Core/GeneralProduct.h +315 -261
  73. package/eigen/Eigen/src/Core/GenericPacketMath.h +1182 -520
  74. package/eigen/Eigen/src/Core/GlobalFunctions.h +193 -157
  75. package/eigen/Eigen/src/Core/IO.h +131 -156
  76. package/eigen/Eigen/src/Core/IndexedView.h +209 -125
  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 +50 -59
  80. package/eigen/Eigen/src/Core/Map.h +123 -141
  81. package/eigen/Eigen/src/Core/MapBase.h +255 -282
  82. package/eigen/Eigen/src/Core/MathFunctions.h +1247 -1201
  83. package/eigen/Eigen/src/Core/MathFunctionsImpl.h +162 -99
  84. package/eigen/Eigen/src/Core/Matrix.h +463 -494
  85. package/eigen/Eigen/src/Core/MatrixBase.h +468 -470
  86. package/eigen/Eigen/src/Core/NestByValue.h +58 -52
  87. package/eigen/Eigen/src/Core/NoAlias.h +79 -86
  88. package/eigen/Eigen/src/Core/NumTraits.h +206 -206
  89. package/eigen/Eigen/src/Core/PartialReduxEvaluator.h +163 -142
  90. package/eigen/Eigen/src/Core/PermutationMatrix.h +461 -511
  91. package/eigen/Eigen/src/Core/PlainObjectBase.h +858 -972
  92. package/eigen/Eigen/src/Core/Product.h +246 -130
  93. package/eigen/Eigen/src/Core/ProductEvaluators.h +779 -671
  94. package/eigen/Eigen/src/Core/Random.h +153 -164
  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 +334 -314
  98. package/eigen/Eigen/src/Core/Ref.h +259 -257
  99. package/eigen/Eigen/src/Core/Replicate.h +92 -104
  100. package/eigen/Eigen/src/Core/Reshaped.h +215 -271
  101. package/eigen/Eigen/src/Core/ReturnByValue.h +47 -55
  102. package/eigen/Eigen/src/Core/Reverse.h +133 -148
  103. package/eigen/Eigen/src/Core/Select.h +68 -140
  104. package/eigen/Eigen/src/Core/SelfAdjointView.h +254 -290
  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 +88 -102
  108. package/eigen/Eigen/src/Core/SolveTriangular.h +126 -124
  109. package/eigen/Eigen/src/Core/SolverBase.h +132 -133
  110. package/eigen/Eigen/src/Core/StableNorm.h +113 -147
  111. package/eigen/Eigen/src/Core/StlIterators.h +404 -248
  112. package/eigen/Eigen/src/Core/Stride.h +90 -92
  113. package/eigen/Eigen/src/Core/Swap.h +70 -39
  114. package/eigen/Eigen/src/Core/Transpose.h +258 -295
  115. package/eigen/Eigen/src/Core/Transpositions.h +270 -333
  116. package/eigen/Eigen/src/Core/TriangularMatrix.h +642 -743
  117. package/eigen/Eigen/src/Core/VectorBlock.h +59 -72
  118. package/eigen/Eigen/src/Core/VectorwiseOp.h +653 -704
  119. package/eigen/Eigen/src/Core/Visitor.h +464 -308
  120. package/eigen/Eigen/src/Core/arch/AVX/Complex.h +380 -187
  121. package/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +65 -163
  122. package/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +2145 -638
  123. package/eigen/Eigen/src/Core/arch/AVX/Reductions.h +353 -0
  124. package/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +253 -60
  125. package/eigen/Eigen/src/Core/arch/AVX512/Complex.h +278 -228
  126. package/eigen/Eigen/src/Core/arch/AVX512/GemmKernel.h +1245 -0
  127. package/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +48 -269
  128. package/eigen/Eigen/src/Core/arch/AVX512/MathFunctionsFP16.h +75 -0
  129. package/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +1597 -754
  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 +229 -41
  135. package/eigen/Eigen/src/Core/arch/AVX512/TypeCastingFP16.h +130 -0
  136. package/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +420 -184
  137. package/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +40 -49
  138. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +2962 -2213
  139. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +196 -212
  140. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +713 -441
  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 +2380 -1362
  144. package/eigen/Eigen/src/Core/arch/AltiVec/TypeCasting.h +153 -0
  145. package/eigen/Eigen/src/Core/arch/Default/BFloat16.h +390 -224
  146. package/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +78 -67
  147. package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +1784 -799
  148. package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +167 -50
  149. package/eigen/Eigen/src/Core/arch/Default/Half.h +528 -379
  150. package/eigen/Eigen/src/Core/arch/Default/Settings.h +10 -12
  151. package/eigen/Eigen/src/Core/arch/GPU/Complex.h +244 -0
  152. package/eigen/Eigen/src/Core/arch/GPU/MathFunctions.h +41 -40
  153. package/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +550 -523
  154. package/eigen/Eigen/src/Core/arch/GPU/Tuple.h +268 -0
  155. package/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +27 -30
  156. package/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +8 -8
  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 +54 -82
  164. package/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +84 -92
  165. package/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +51 -47
  166. package/eigen/Eigen/src/Core/arch/NEON/Complex.h +454 -306
  167. package/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +175 -115
  168. package/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +23 -30
  169. package/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +4366 -2857
  170. package/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +616 -393
  171. package/eigen/Eigen/src/Core/arch/NEON/UnaryFunctors.h +57 -0
  172. package/eigen/Eigen/src/Core/arch/SSE/Complex.h +350 -198
  173. package/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +38 -149
  174. package/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +1791 -912
  175. package/eigen/Eigen/src/Core/arch/SSE/Reductions.h +324 -0
  176. package/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +128 -40
  177. package/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +10 -6
  178. package/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +156 -234
  179. package/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +6 -3
  180. package/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +27 -32
  181. package/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +119 -117
  182. package/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +325 -419
  183. package/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +15 -17
  184. package/eigen/Eigen/src/Core/arch/ZVector/Complex.h +325 -181
  185. package/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +94 -83
  186. package/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +811 -458
  187. package/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +121 -124
  188. package/eigen/Eigen/src/Core/functors/BinaryFunctors.h +576 -370
  189. package/eigen/Eigen/src/Core/functors/NullaryFunctors.h +194 -109
  190. package/eigen/Eigen/src/Core/functors/StlFunctors.h +95 -112
  191. package/eigen/Eigen/src/Core/functors/TernaryFunctors.h +34 -7
  192. package/eigen/Eigen/src/Core/functors/UnaryFunctors.h +1038 -749
  193. package/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +1883 -1375
  194. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +312 -370
  195. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +189 -176
  196. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +84 -81
  197. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +154 -73
  198. package/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +292 -337
  199. package/eigen/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +80 -77
  200. package/eigen/Eigen/src/Core/products/Parallelizer.h +207 -105
  201. package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +327 -388
  202. package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +206 -224
  203. package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +138 -147
  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 -47
  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 -277
  212. package/eigen/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +108 -109
  213. package/eigen/Eigen/src/Core/products/TriangularSolverVector.h +68 -94
  214. package/eigen/Eigen/src/Core/util/Assert.h +158 -0
  215. package/eigen/Eigen/src/Core/util/BlasUtil.h +342 -303
  216. package/eigen/Eigen/src/Core/util/ConfigureVectorization.h +348 -317
  217. package/eigen/Eigen/src/Core/util/Constants.h +297 -262
  218. package/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +130 -90
  219. package/eigen/Eigen/src/Core/util/EmulateArray.h +270 -0
  220. package/eigen/Eigen/src/Core/util/ForwardDeclarations.h +449 -247
  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 +417 -116
  224. package/eigen/Eigen/src/Core/util/IntegralConstant.h +211 -204
  225. package/eigen/Eigen/src/Core/util/MKL_support.h +39 -37
  226. package/eigen/Eigen/src/Core/util/Macros.h +655 -773
  227. package/eigen/Eigen/src/Core/util/MaxSizeVector.h +139 -0
  228. package/eigen/Eigen/src/Core/util/Memory.h +970 -748
  229. package/eigen/Eigen/src/Core/util/Meta.h +581 -633
  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 +17 -17
  233. package/eigen/Eigen/src/Core/util/Serializer.h +209 -0
  234. package/eigen/Eigen/src/Core/util/StaticAssert.h +50 -166
  235. package/eigen/Eigen/src/Core/util/SymbolicIndex.h +377 -225
  236. package/eigen/Eigen/src/Core/util/XprHelper.h +784 -547
  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 +89 -105
  246. package/eigen/Eigen/src/Eigenvalues/RealQZ.h +537 -607
  247. package/eigen/Eigen/src/Eigenvalues/RealSchur.h +342 -381
  248. package/eigen/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +41 -35
  249. package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +541 -595
  250. package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +47 -44
  251. package/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +430 -462
  252. package/eigen/Eigen/src/Geometry/AlignedBox.h +226 -227
  253. package/eigen/Eigen/src/Geometry/AngleAxis.h +131 -133
  254. package/eigen/Eigen/src/Geometry/EulerAngles.h +163 -74
  255. package/eigen/Eigen/src/Geometry/Homogeneous.h +285 -333
  256. package/eigen/Eigen/src/Geometry/Hyperplane.h +151 -160
  257. package/eigen/Eigen/src/Geometry/InternalHeaderCheck.h +3 -0
  258. package/eigen/Eigen/src/Geometry/OrthoMethods.h +168 -146
  259. package/eigen/Eigen/src/Geometry/ParametrizedLine.h +127 -127
  260. package/eigen/Eigen/src/Geometry/Quaternion.h +566 -506
  261. package/eigen/Eigen/src/Geometry/Rotation2D.h +107 -105
  262. package/eigen/Eigen/src/Geometry/RotationBase.h +148 -145
  263. package/eigen/Eigen/src/Geometry/Scaling.h +113 -106
  264. package/eigen/Eigen/src/Geometry/Transform.h +858 -936
  265. package/eigen/Eigen/src/Geometry/Translation.h +94 -92
  266. package/eigen/Eigen/src/Geometry/Umeyama.h +79 -84
  267. package/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +90 -104
  268. package/eigen/Eigen/src/Householder/BlockHouseholder.h +51 -46
  269. package/eigen/Eigen/src/Householder/Householder.h +102 -124
  270. package/eigen/Eigen/src/Householder/HouseholderSequence.h +412 -453
  271. package/eigen/Eigen/src/Householder/InternalHeaderCheck.h +3 -0
  272. package/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +149 -162
  273. package/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +124 -119
  274. package/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +92 -104
  275. package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +251 -243
  276. package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +224 -228
  277. package/eigen/Eigen/src/IterativeLinearSolvers/InternalHeaderCheck.h +3 -0
  278. package/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +178 -227
  279. package/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +79 -84
  280. package/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +54 -60
  281. package/eigen/Eigen/src/Jacobi/InternalHeaderCheck.h +3 -0
  282. package/eigen/Eigen/src/Jacobi/Jacobi.h +252 -308
  283. package/eigen/Eigen/src/KLUSupport/InternalHeaderCheck.h +3 -0
  284. package/eigen/Eigen/src/KLUSupport/KLUSupport.h +208 -227
  285. package/eigen/Eigen/src/LU/Determinant.h +50 -69
  286. package/eigen/Eigen/src/LU/FullPivLU.h +545 -596
  287. package/eigen/Eigen/src/LU/InternalHeaderCheck.h +3 -0
  288. package/eigen/Eigen/src/LU/InverseImpl.h +206 -285
  289. package/eigen/Eigen/src/LU/PartialPivLU.h +390 -428
  290. package/eigen/Eigen/src/LU/PartialPivLU_LAPACKE.h +54 -40
  291. package/eigen/Eigen/src/LU/arch/InverseSize4.h +72 -70
  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 +243 -265
  295. package/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +831 -1004
  296. package/eigen/Eigen/src/OrderingMethods/InternalHeaderCheck.h +3 -0
  297. package/eigen/Eigen/src/OrderingMethods/Ordering.h +112 -119
  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 -430
  302. package/eigen/Eigen/src/QR/ColPivHouseholderQR.h +479 -479
  303. package/eigen/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +120 -56
  304. package/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +166 -153
  305. package/eigen/Eigen/src/QR/FullPivHouseholderQR.h +495 -475
  306. package/eigen/Eigen/src/QR/HouseholderQR.h +394 -285
  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 +244 -264
  311. package/eigen/Eigen/src/SVD/BDCSVD.h +817 -713
  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 +577 -543
  315. package/eigen/Eigen/src/SVD/JacobiSVD_LAPACKE.h +85 -49
  316. package/eigen/Eigen/src/SVD/SVDBase.h +242 -182
  317. package/eigen/Eigen/src/SVD/UpperBidiagonalization.h +200 -235
  318. package/eigen/Eigen/src/SparseCholesky/InternalHeaderCheck.h +3 -0
  319. package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +765 -594
  320. package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +308 -94
  321. package/eigen/Eigen/src/SparseCore/AmbiVector.h +202 -251
  322. package/eigen/Eigen/src/SparseCore/CompressedStorage.h +184 -252
  323. package/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +134 -178
  324. package/eigen/Eigen/src/SparseCore/InternalHeaderCheck.h +3 -0
  325. package/eigen/Eigen/src/SparseCore/SparseAssign.h +149 -140
  326. package/eigen/Eigen/src/SparseCore/SparseBlock.h +403 -440
  327. package/eigen/Eigen/src/SparseCore/SparseColEtree.h +100 -112
  328. package/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +525 -303
  329. package/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +555 -339
  330. package/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +100 -108
  331. package/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +169 -197
  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 +1603 -1245
  337. package/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +403 -350
  338. package/eigen/Eigen/src/SparseCore/SparsePermutation.h +186 -115
  339. package/eigen/Eigen/src/SparseCore/SparseProduct.h +94 -97
  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 +370 -416
  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 +138 -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 +756 -710
  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 +245 -301
  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 +89 -100
  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 +124 -132
  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 +450 -502
  370. package/eigen/Eigen/src/StlSupport/StdDeque.h +28 -93
  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 -730
  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 +428 -464
  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 +9972 -16179
  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.h → BlockMethods.inc} +434 -506
  401. package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.inc +116 -0
  402. package/eigen/Eigen/src/plugins/{CommonCwiseUnaryOps.h → CommonCwiseUnaryOps.inc} +58 -68
  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/package.json +1 -1
  409. package/eigen/COPYING.APACHE +0 -203
  410. package/eigen/COPYING.BSD +0 -26
  411. package/eigen/COPYING.GPL +0 -674
  412. package/eigen/COPYING.LGPL +0 -502
  413. package/eigen/COPYING.MINPACK +0 -51
  414. package/eigen/COPYING.MPL2 +0 -373
  415. package/eigen/COPYING.README +0 -18
  416. package/eigen/Eigen/src/Core/BooleanRedux.h +0 -162
  417. package/eigen/Eigen/src/Core/arch/CUDA/Complex.h +0 -258
  418. package/eigen/Eigen/src/Core/arch/Default/TypeCasting.h +0 -120
  419. package/eigen/Eigen/src/Core/arch/SYCL/SyclMemoryModel.h +0 -694
  420. package/eigen/Eigen/src/Core/util/NonMPL2.h +0 -3
  421. package/eigen/Eigen/src/SparseCore/MappedSparseMatrix.h +0 -67
  422. package/eigen/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +0 -280
  423. package/eigen/Eigen/src/misc/lapack.h +0 -152
  424. package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h +0 -358
  425. package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +0 -696
  426. package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.h +0 -115
  427. package/eigen/Eigen/src/plugins/IndexedViewMethods.h +0 -262
  428. package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +0 -152
  429. package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +0 -95
  430. package/eigen/Eigen/src/plugins/ReshapedMethods.h +0 -149
  431. package/eigen/README.md +0 -5
@@ -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
- EIGEN_DEVICE_FUNC 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
58
  /** \returns, for vectors, the squared \em l2 norm of \c *this, and for matrices the squared 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_DEVICE_FUNC EIGEN_STRONG_INLINE typename NumTraits<typename internal::traits<Derived>::Scalar>::Real MatrixBase<Derived>::squaredNorm() const
97
- {
98
- return numext::real((*this).cwiseAbs2().sum());
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_DEVICE_FUNC 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_DEVICE_FUNC 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_DEVICE_FUNC 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>
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>
166
132
  EIGEN_DEVICE_FUNC 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());
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_DEVICE_FUNC 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
- {
169
+ EIGEN_DEVICE_FUNC static inline RealScalar run(const MatrixBase<Derived>& m) {
210
170
  EIGEN_USING_STD(pow)
211
- return pow(m.cwiseAbs().array().pow(p).sum(), RealScalar(1)/p);
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
220
  EIGEN_DEVICE_FUNC inline typename NumTraits<typename internal::traits<Derived>::Scalar>::Real
264
221
  #else
265
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