@smake/eigen 1.0.2 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (287) hide show
  1. package/README.md +1 -1
  2. package/eigen/COPYING.APACHE +203 -0
  3. package/eigen/COPYING.BSD +26 -0
  4. package/eigen/COPYING.GPL +674 -0
  5. package/eigen/COPYING.LGPL +502 -0
  6. package/eigen/COPYING.MINPACK +51 -0
  7. package/eigen/COPYING.MPL2 +373 -0
  8. package/eigen/COPYING.README +18 -0
  9. package/eigen/Eigen/Cholesky +0 -1
  10. package/eigen/Eigen/Core +108 -266
  11. package/eigen/Eigen/Eigenvalues +0 -1
  12. package/eigen/Eigen/Geometry +3 -6
  13. package/eigen/Eigen/Householder +0 -1
  14. package/eigen/Eigen/Jacobi +0 -1
  15. package/eigen/Eigen/KLUSupport +41 -0
  16. package/eigen/Eigen/LU +2 -5
  17. package/eigen/Eigen/OrderingMethods +0 -3
  18. package/eigen/Eigen/PaStiXSupport +1 -0
  19. package/eigen/Eigen/PardisoSupport +0 -0
  20. package/eigen/Eigen/QR +0 -1
  21. package/eigen/Eigen/QtAlignedMalloc +0 -1
  22. package/eigen/Eigen/SVD +0 -1
  23. package/eigen/Eigen/Sparse +0 -2
  24. package/eigen/Eigen/SparseCholesky +0 -8
  25. package/eigen/Eigen/SparseLU +4 -0
  26. package/eigen/Eigen/src/Cholesky/LDLT.h +42 -27
  27. package/eigen/Eigen/src/Cholesky/LLT.h +39 -23
  28. package/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +90 -47
  29. package/eigen/Eigen/src/Core/ArithmeticSequence.h +413 -0
  30. package/eigen/Eigen/src/Core/Array.h +99 -11
  31. package/eigen/Eigen/src/Core/ArrayBase.h +1 -1
  32. package/eigen/Eigen/src/Core/ArrayWrapper.h +21 -21
  33. package/eigen/Eigen/src/Core/Assign.h +1 -1
  34. package/eigen/Eigen/src/Core/AssignEvaluator.h +125 -50
  35. package/eigen/Eigen/src/Core/Assign_MKL.h +10 -10
  36. package/eigen/Eigen/src/Core/BandMatrix.h +16 -16
  37. package/eigen/Eigen/src/Core/Block.h +56 -60
  38. package/eigen/Eigen/src/Core/BooleanRedux.h +29 -31
  39. package/eigen/Eigen/src/Core/CommaInitializer.h +7 -3
  40. package/eigen/Eigen/src/Core/CoreEvaluators.h +325 -272
  41. package/eigen/Eigen/src/Core/CoreIterators.h +5 -0
  42. package/eigen/Eigen/src/Core/CwiseBinaryOp.h +21 -22
  43. package/eigen/Eigen/src/Core/CwiseNullaryOp.h +153 -18
  44. package/eigen/Eigen/src/Core/CwiseUnaryOp.h +6 -6
  45. package/eigen/Eigen/src/Core/CwiseUnaryView.h +12 -10
  46. package/eigen/Eigen/src/Core/DenseBase.h +128 -39
  47. package/eigen/Eigen/src/Core/DenseCoeffsBase.h +25 -21
  48. package/eigen/Eigen/src/Core/DenseStorage.h +150 -68
  49. package/eigen/Eigen/src/Core/Diagonal.h +21 -23
  50. package/eigen/Eigen/src/Core/DiagonalMatrix.h +50 -2
  51. package/eigen/Eigen/src/Core/DiagonalProduct.h +1 -1
  52. package/eigen/Eigen/src/Core/Dot.h +10 -10
  53. package/eigen/Eigen/src/Core/EigenBase.h +10 -9
  54. package/eigen/Eigen/src/Core/ForceAlignedAccess.h +8 -4
  55. package/eigen/Eigen/src/Core/Fuzzy.h +3 -3
  56. package/eigen/Eigen/src/Core/GeneralProduct.h +20 -10
  57. package/eigen/Eigen/src/Core/GenericPacketMath.h +597 -147
  58. package/eigen/Eigen/src/Core/GlobalFunctions.h +40 -33
  59. package/eigen/Eigen/src/Core/IO.h +40 -7
  60. package/eigen/Eigen/src/Core/IndexedView.h +237 -0
  61. package/eigen/Eigen/src/Core/Inverse.h +9 -10
  62. package/eigen/Eigen/src/Core/Map.h +7 -7
  63. package/eigen/Eigen/src/Core/MapBase.h +5 -3
  64. package/eigen/Eigen/src/Core/MathFunctions.h +756 -120
  65. package/eigen/Eigen/src/Core/MathFunctionsImpl.h +118 -19
  66. package/eigen/Eigen/src/Core/Matrix.h +131 -25
  67. package/eigen/Eigen/src/Core/MatrixBase.h +19 -2
  68. package/eigen/Eigen/src/Core/NestByValue.h +25 -50
  69. package/eigen/Eigen/src/Core/NoAlias.h +4 -3
  70. package/eigen/Eigen/src/Core/NumTraits.h +107 -20
  71. package/eigen/Eigen/src/Core/PartialReduxEvaluator.h +232 -0
  72. package/eigen/Eigen/src/Core/PermutationMatrix.h +3 -3
  73. package/eigen/Eigen/src/Core/PlainObjectBase.h +145 -54
  74. package/eigen/Eigen/src/Core/Product.h +30 -25
  75. package/eigen/Eigen/src/Core/ProductEvaluators.h +183 -142
  76. package/eigen/Eigen/src/Core/Random.h +37 -1
  77. package/eigen/Eigen/src/Core/Redux.h +180 -170
  78. package/eigen/Eigen/src/Core/Ref.h +118 -21
  79. package/eigen/Eigen/src/Core/Replicate.h +8 -8
  80. package/eigen/Eigen/src/Core/Reshaped.h +454 -0
  81. package/eigen/Eigen/src/Core/ReturnByValue.h +7 -5
  82. package/eigen/Eigen/src/Core/Reverse.h +18 -12
  83. package/eigen/Eigen/src/Core/Select.h +8 -6
  84. package/eigen/Eigen/src/Core/SelfAdjointView.h +33 -20
  85. package/eigen/Eigen/src/Core/Solve.h +14 -14
  86. package/eigen/Eigen/src/Core/SolveTriangular.h +13 -13
  87. package/eigen/Eigen/src/Core/SolverBase.h +41 -3
  88. package/eigen/Eigen/src/Core/StableNorm.h +100 -70
  89. package/eigen/Eigen/src/Core/StlIterators.h +463 -0
  90. package/eigen/Eigen/src/Core/Stride.h +9 -4
  91. package/eigen/Eigen/src/Core/Swap.h +5 -4
  92. package/eigen/Eigen/src/Core/Transpose.h +86 -27
  93. package/eigen/Eigen/src/Core/Transpositions.h +26 -8
  94. package/eigen/Eigen/src/Core/TriangularMatrix.h +88 -72
  95. package/eigen/Eigen/src/Core/VectorBlock.h +5 -5
  96. package/eigen/Eigen/src/Core/VectorwiseOp.h +159 -70
  97. package/eigen/Eigen/src/Core/Visitor.h +137 -29
  98. package/eigen/Eigen/src/Core/arch/AVX/Complex.h +50 -129
  99. package/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +126 -337
  100. package/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +1092 -155
  101. package/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +65 -1
  102. package/eigen/Eigen/src/Core/arch/AVX512/Complex.h +422 -0
  103. package/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +186 -213
  104. package/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +1250 -252
  105. package/eigen/Eigen/src/Core/arch/AVX512/TypeCasting.h +89 -0
  106. package/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +152 -165
  107. package/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +19 -251
  108. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +2937 -0
  109. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +221 -0
  110. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +629 -0
  111. package/eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h +2042 -392
  112. package/eigen/Eigen/src/Core/arch/CUDA/Complex.h +235 -80
  113. package/eigen/Eigen/src/Core/arch/Default/BFloat16.h +700 -0
  114. package/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +102 -14
  115. package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +1649 -0
  116. package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +110 -0
  117. package/eigen/Eigen/src/Core/arch/Default/Half.h +942 -0
  118. package/eigen/Eigen/src/Core/arch/Default/Settings.h +1 -1
  119. package/eigen/Eigen/src/Core/arch/Default/TypeCasting.h +120 -0
  120. package/eigen/Eigen/src/Core/arch/{CUDA → GPU}/MathFunctions.h +16 -4
  121. package/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +1685 -0
  122. package/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +80 -0
  123. package/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
  124. package/eigen/Eigen/src/Core/arch/MSA/Complex.h +648 -0
  125. package/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +387 -0
  126. package/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +1233 -0
  127. package/eigen/Eigen/src/Core/arch/NEON/Complex.h +313 -219
  128. package/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +183 -0
  129. package/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +54 -70
  130. package/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +4376 -549
  131. package/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +1419 -0
  132. package/eigen/Eigen/src/Core/arch/SSE/Complex.h +59 -179
  133. package/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +65 -428
  134. package/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +893 -283
  135. package/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +65 -0
  136. package/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +44 -0
  137. package/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +752 -0
  138. package/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +49 -0
  139. package/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +232 -0
  140. package/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +301 -0
  141. package/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +670 -0
  142. package/eigen/Eigen/src/Core/arch/SYCL/SyclMemoryModel.h +694 -0
  143. package/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +85 -0
  144. package/eigen/Eigen/src/Core/arch/ZVector/Complex.h +212 -183
  145. package/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +101 -5
  146. package/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +510 -395
  147. package/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +11 -2
  148. package/eigen/Eigen/src/Core/functors/BinaryFunctors.h +112 -46
  149. package/eigen/Eigen/src/Core/functors/NullaryFunctors.h +31 -30
  150. package/eigen/Eigen/src/Core/functors/StlFunctors.h +32 -2
  151. package/eigen/Eigen/src/Core/functors/UnaryFunctors.h +354 -15
  152. package/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +1073 -585
  153. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +29 -7
  154. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +4 -4
  155. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +1 -1
  156. package/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +382 -483
  157. package/eigen/Eigen/src/Core/products/Parallelizer.h +23 -9
  158. package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +23 -6
  159. package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +8 -6
  160. package/eigen/Eigen/src/Core/products/SelfadjointProduct.h +2 -2
  161. package/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h +5 -4
  162. package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h +3 -3
  163. package/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h +5 -3
  164. package/eigen/Eigen/src/Core/products/TriangularSolverVector.h +13 -10
  165. package/eigen/Eigen/src/Core/util/BlasUtil.h +208 -124
  166. package/eigen/Eigen/src/Core/util/ConfigureVectorization.h +512 -0
  167. package/eigen/Eigen/src/Core/util/Constants.h +25 -9
  168. package/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +14 -2
  169. package/eigen/Eigen/src/Core/util/ForwardDeclarations.h +28 -4
  170. package/eigen/Eigen/src/Core/util/IndexedViewHelper.h +186 -0
  171. package/eigen/Eigen/src/Core/util/IntegralConstant.h +272 -0
  172. package/eigen/Eigen/src/Core/util/MKL_support.h +8 -1
  173. package/eigen/Eigen/src/Core/util/Macros.h +661 -250
  174. package/eigen/Eigen/src/Core/util/Memory.h +222 -52
  175. package/eigen/Eigen/src/Core/util/Meta.h +349 -105
  176. package/eigen/Eigen/src/Core/util/ReshapedHelper.h +51 -0
  177. package/eigen/Eigen/src/Core/util/StaticAssert.h +8 -5
  178. package/eigen/Eigen/src/Core/util/SymbolicIndex.h +293 -0
  179. package/eigen/Eigen/src/Core/util/XprHelper.h +48 -30
  180. package/eigen/Eigen/src/Eigenvalues/ComplexEigenSolver.h +1 -1
  181. package/eigen/Eigen/src/Eigenvalues/ComplexSchur.h +1 -1
  182. package/eigen/Eigen/src/Eigenvalues/EigenSolver.h +2 -2
  183. package/eigen/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +1 -1
  184. package/eigen/Eigen/src/Eigenvalues/HessenbergDecomposition.h +2 -2
  185. package/eigen/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +2 -2
  186. package/eigen/Eigen/src/Eigenvalues/RealQZ.h +9 -6
  187. package/eigen/Eigen/src/Eigenvalues/RealSchur.h +10 -5
  188. package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +75 -42
  189. package/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +20 -15
  190. package/eigen/Eigen/src/Geometry/AlignedBox.h +99 -5
  191. package/eigen/Eigen/src/Geometry/AngleAxis.h +4 -4
  192. package/eigen/Eigen/src/Geometry/EulerAngles.h +3 -3
  193. package/eigen/Eigen/src/Geometry/Homogeneous.h +15 -11
  194. package/eigen/Eigen/src/Geometry/Hyperplane.h +1 -1
  195. package/eigen/Eigen/src/Geometry/OrthoMethods.h +3 -2
  196. package/eigen/Eigen/src/Geometry/ParametrizedLine.h +39 -2
  197. package/eigen/Eigen/src/Geometry/Quaternion.h +52 -14
  198. package/eigen/Eigen/src/Geometry/Rotation2D.h +3 -3
  199. package/eigen/Eigen/src/Geometry/Scaling.h +22 -4
  200. package/eigen/Eigen/src/Geometry/Transform.h +86 -65
  201. package/eigen/Eigen/src/Geometry/Translation.h +6 -6
  202. package/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +168 -0
  203. package/eigen/Eigen/src/Householder/BlockHouseholder.h +9 -2
  204. package/eigen/Eigen/src/Householder/Householder.h +8 -4
  205. package/eigen/Eigen/src/Householder/HouseholderSequence.h +123 -48
  206. package/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +15 -15
  207. package/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +7 -23
  208. package/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +5 -22
  209. package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +41 -47
  210. package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +51 -60
  211. package/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +70 -20
  212. package/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +2 -20
  213. package/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +11 -9
  214. package/eigen/Eigen/src/Jacobi/Jacobi.h +31 -10
  215. package/eigen/Eigen/src/KLUSupport/KLUSupport.h +358 -0
  216. package/eigen/Eigen/src/LU/Determinant.h +35 -19
  217. package/eigen/Eigen/src/LU/FullPivLU.h +29 -43
  218. package/eigen/Eigen/src/LU/InverseImpl.h +25 -8
  219. package/eigen/Eigen/src/LU/PartialPivLU.h +67 -57
  220. package/eigen/Eigen/src/LU/arch/InverseSize4.h +351 -0
  221. package/eigen/Eigen/src/OrderingMethods/Amd.h +7 -17
  222. package/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +297 -277
  223. package/eigen/Eigen/src/OrderingMethods/Ordering.h +6 -10
  224. package/eigen/Eigen/src/PaStiXSupport/PaStiXSupport.h +1 -1
  225. package/eigen/Eigen/src/PardisoSupport/PardisoSupport.h +10 -9
  226. package/eigen/Eigen/src/QR/ColPivHouseholderQR.h +41 -20
  227. package/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +100 -27
  228. package/eigen/Eigen/src/QR/FullPivHouseholderQR.h +59 -22
  229. package/eigen/Eigen/src/QR/HouseholderQR.h +48 -23
  230. package/eigen/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +25 -3
  231. package/eigen/Eigen/src/SVD/BDCSVD.h +137 -48
  232. package/eigen/Eigen/src/SVD/JacobiSVD.h +22 -14
  233. package/eigen/Eigen/src/SVD/SVDBase.h +82 -21
  234. package/eigen/Eigen/src/SVD/UpperBidiagonalization.h +3 -3
  235. package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +16 -8
  236. package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +11 -36
  237. package/eigen/Eigen/src/SparseCore/CompressedStorage.h +16 -0
  238. package/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +6 -6
  239. package/eigen/Eigen/src/SparseCore/SparseAssign.h +81 -27
  240. package/eigen/Eigen/src/SparseCore/SparseBlock.h +25 -57
  241. package/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +40 -11
  242. package/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +11 -15
  243. package/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +2 -2
  244. package/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +30 -8
  245. package/eigen/Eigen/src/SparseCore/SparseMatrix.h +124 -10
  246. package/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +5 -12
  247. package/eigen/Eigen/src/SparseCore/SparseProduct.h +13 -1
  248. package/eigen/Eigen/src/SparseCore/SparseRef.h +7 -7
  249. package/eigen/Eigen/src/SparseCore/SparseSelfAdjointView.h +3 -0
  250. package/eigen/Eigen/src/SparseCore/SparseUtil.h +8 -0
  251. package/eigen/Eigen/src/SparseCore/SparseVector.h +1 -1
  252. package/eigen/Eigen/src/SparseLU/SparseLU.h +160 -10
  253. package/eigen/Eigen/src/SparseLU/SparseLU_Memory.h +1 -1
  254. package/eigen/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +76 -2
  255. package/eigen/Eigen/src/SparseLU/SparseLU_column_dfs.h +2 -2
  256. package/eigen/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +1 -1
  257. package/eigen/Eigen/src/SparseLU/SparseLU_panel_bmod.h +1 -1
  258. package/eigen/Eigen/src/SparseQR/SparseQR.h +19 -6
  259. package/eigen/Eigen/src/StlSupport/StdDeque.h +2 -14
  260. package/eigen/Eigen/src/StlSupport/StdList.h +2 -2
  261. package/eigen/Eigen/src/StlSupport/StdVector.h +2 -2
  262. package/eigen/Eigen/src/SuperLUSupport/SuperLUSupport.h +6 -8
  263. package/eigen/Eigen/src/UmfPackSupport/UmfPackSupport.h +175 -39
  264. package/eigen/Eigen/src/misc/lapacke.h +5 -4
  265. package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h +27 -1
  266. package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +155 -11
  267. package/eigen/Eigen/src/plugins/BlockMethods.h +626 -242
  268. package/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.h +14 -0
  269. package/eigen/Eigen/src/plugins/IndexedViewMethods.h +262 -0
  270. package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +4 -4
  271. package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +10 -0
  272. package/eigen/Eigen/src/plugins/ReshapedMethods.h +149 -0
  273. package/eigen/README.md +5 -0
  274. package/lib/LibEigen.d.ts +4 -0
  275. package/lib/LibEigen.js +14 -0
  276. package/lib/index.d.ts +1 -1
  277. package/lib/index.js +7 -3
  278. package/package.json +2 -10
  279. package/eigen/Eigen/CMakeLists.txt +0 -19
  280. package/eigen/Eigen/src/Core/arch/CUDA/Half.h +0 -675
  281. package/eigen/Eigen/src/Core/arch/CUDA/PacketMath.h +0 -333
  282. package/eigen/Eigen/src/Core/arch/CUDA/PacketMathHalf.h +0 -1124
  283. package/eigen/Eigen/src/Core/arch/CUDA/TypeCasting.h +0 -212
  284. package/eigen/Eigen/src/Geometry/arch/Geometry_SSE.h +0 -161
  285. package/eigen/Eigen/src/LU/arch/Inverse_SSE.h +0 -338
  286. package/lib/eigen.d.ts +0 -2
  287. package/lib/eigen.js +0 -15
@@ -17,24 +17,28 @@ namespace internal {
17
17
 
18
18
  /** \internal \returns the hyperbolic tan of \a a (coeff-wise)
19
19
  Doesn't do anything fancy, just a 13/6-degree rational interpolant which
20
- is accurate up to a couple of ulp in the range [-9, 9], outside of which
21
- the tanh(x) = +/-1.
20
+ is accurate up to a couple of ulps in the (approximate) range [-8, 8],
21
+ outside of which tanh(x) = +/-1 in single precision. The input is clamped
22
+ to the range [-c, c]. The value c is chosen as the smallest value where
23
+ the approximation evaluates to exactly 1. In the reange [-0.0004, 0.0004]
24
+ the approxmation tanh(x) ~= x is used for better accuracy as x tends to zero.
22
25
 
23
26
  This implementation works on both scalars and packets.
24
27
  */
25
28
  template<typename T>
26
29
  T generic_fast_tanh_float(const T& a_x)
27
30
  {
28
- // Clamp the inputs to the range [-9, 9] since anything outside
29
- // this range is +/-1.0f in single-precision.
30
- const T plus_9 = pset1<T>(9.f);
31
- const T minus_9 = pset1<T>(-9.f);
32
- // NOTE GCC prior to 6.3 might improperly optimize this max/min
33
- // step such that if a_x is nan, x will be either 9 or -9,
34
- // and tanh will return 1 or -1 instead of nan.
35
- // This is supposed to be fixed in gcc6.3,
36
- // see: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=72867
37
- const T x = pmax(minus_9,pmin(plus_9,a_x));
31
+ // Clamp the inputs to the range [-c, c]
32
+ #ifdef EIGEN_VECTORIZE_FMA
33
+ const T plus_clamp = pset1<T>(7.99881172180175781f);
34
+ const T minus_clamp = pset1<T>(-7.99881172180175781f);
35
+ #else
36
+ const T plus_clamp = pset1<T>(7.90531110763549805f);
37
+ const T minus_clamp = pset1<T>(-7.90531110763549805f);
38
+ #endif
39
+ const T tiny = pset1<T>(0.0004f);
40
+ const T x = pmax(pmin(a_x, plus_clamp), minus_clamp);
41
+ const T tiny_mask = pcmp_lt(pabs(a_x), tiny);
38
42
  // The monomial coefficients of the numerator polynomial (odd).
39
43
  const T alpha_1 = pset1<T>(4.89352455891786e-03f);
40
44
  const T alpha_3 = pset1<T>(6.37261928875436e-04f);
@@ -62,24 +66,30 @@ T generic_fast_tanh_float(const T& a_x)
62
66
  p = pmadd(x2, p, alpha_1);
63
67
  p = pmul(x, p);
64
68
 
65
- // Evaluate the denominator polynomial p.
69
+ // Evaluate the denominator polynomial q.
66
70
  T q = pmadd(x2, beta_6, beta_4);
67
71
  q = pmadd(x2, q, beta_2);
68
72
  q = pmadd(x2, q, beta_0);
69
73
 
70
74
  // Divide the numerator by the denominator.
71
- return pdiv(p, q);
75
+ return pselect(tiny_mask, x, pdiv(p, q));
72
76
  }
73
77
 
74
78
  template<typename RealScalar>
75
- EIGEN_STRONG_INLINE
79
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
76
80
  RealScalar positive_real_hypot(const RealScalar& x, const RealScalar& y)
77
81
  {
78
- EIGEN_USING_STD_MATH(sqrt);
82
+ // IEEE IEC 6059 special cases.
83
+ if ((numext::isinf)(x) || (numext::isinf)(y))
84
+ return NumTraits<RealScalar>::infinity();
85
+ if ((numext::isnan)(x) || (numext::isnan)(y))
86
+ return NumTraits<RealScalar>::quiet_NaN();
87
+
88
+ EIGEN_USING_STD(sqrt);
79
89
  RealScalar p, qp;
80
90
  p = numext::maxi(x,y);
81
91
  if(p==RealScalar(0)) return RealScalar(0);
82
- qp = numext::mini(y,x) / p;
92
+ qp = numext::mini(y,x) / p;
83
93
  return p * sqrt(RealScalar(1) + qp*qp);
84
94
  }
85
95
 
@@ -87,13 +97,102 @@ template<typename Scalar>
87
97
  struct hypot_impl
88
98
  {
89
99
  typedef typename NumTraits<Scalar>::Real RealScalar;
90
- static inline RealScalar run(const Scalar& x, const Scalar& y)
100
+ static EIGEN_DEVICE_FUNC
101
+ inline RealScalar run(const Scalar& x, const Scalar& y)
91
102
  {
92
- EIGEN_USING_STD_MATH(abs);
103
+ EIGEN_USING_STD(abs);
93
104
  return positive_real_hypot<RealScalar>(abs(x), abs(y));
94
105
  }
95
106
  };
96
107
 
108
+ // Generic complex sqrt implementation that correctly handles corner cases
109
+ // according to https://en.cppreference.com/w/cpp/numeric/complex/sqrt
110
+ template<typename T>
111
+ EIGEN_DEVICE_FUNC std::complex<T> complex_sqrt(const std::complex<T>& z) {
112
+ // Computes the principal sqrt of the input.
113
+ //
114
+ // For a complex square root of the number x + i*y. We want to find real
115
+ // numbers u and v such that
116
+ // (u + i*v)^2 = x + i*y <=>
117
+ // u^2 - v^2 + i*2*u*v = x + i*v.
118
+ // By equating the real and imaginary parts we get:
119
+ // u^2 - v^2 = x
120
+ // 2*u*v = y.
121
+ //
122
+ // For x >= 0, this has the numerically stable solution
123
+ // u = sqrt(0.5 * (x + sqrt(x^2 + y^2)))
124
+ // v = y / (2 * u)
125
+ // and for x < 0,
126
+ // v = sign(y) * sqrt(0.5 * (-x + sqrt(x^2 + y^2)))
127
+ // u = y / (2 * v)
128
+ //
129
+ // Letting w = sqrt(0.5 * (|x| + |z|)),
130
+ // if x == 0: u = w, v = sign(y) * w
131
+ // if x > 0: u = w, v = y / (2 * w)
132
+ // if x < 0: u = |y| / (2 * w), v = sign(y) * w
133
+
134
+ const T x = numext::real(z);
135
+ const T y = numext::imag(z);
136
+ const T zero = T(0);
137
+ const T w = numext::sqrt(T(0.5) * (numext::abs(x) + numext::hypot(x, y)));
138
+
139
+ return
140
+ (numext::isinf)(y) ? std::complex<T>(NumTraits<T>::infinity(), y)
141
+ : x == zero ? std::complex<T>(w, y < zero ? -w : w)
142
+ : x > zero ? std::complex<T>(w, y / (2 * w))
143
+ : std::complex<T>(numext::abs(y) / (2 * w), y < zero ? -w : w );
144
+ }
145
+
146
+ // Generic complex rsqrt implementation.
147
+ template<typename T>
148
+ EIGEN_DEVICE_FUNC std::complex<T> complex_rsqrt(const std::complex<T>& z) {
149
+ // Computes the principal reciprocal sqrt of the input.
150
+ //
151
+ // For a complex reciprocal square root of the number z = x + i*y. We want to
152
+ // find real numbers u and v such that
153
+ // (u + i*v)^2 = 1 / (x + i*y) <=>
154
+ // u^2 - v^2 + i*2*u*v = x/|z|^2 - i*v/|z|^2.
155
+ // By equating the real and imaginary parts we get:
156
+ // u^2 - v^2 = x/|z|^2
157
+ // 2*u*v = y/|z|^2.
158
+ //
159
+ // For x >= 0, this has the numerically stable solution
160
+ // u = sqrt(0.5 * (x + |z|)) / |z|
161
+ // v = -y / (2 * u * |z|)
162
+ // and for x < 0,
163
+ // v = -sign(y) * sqrt(0.5 * (-x + |z|)) / |z|
164
+ // u = -y / (2 * v * |z|)
165
+ //
166
+ // Letting w = sqrt(0.5 * (|x| + |z|)),
167
+ // if x == 0: u = w / |z|, v = -sign(y) * w / |z|
168
+ // if x > 0: u = w / |z|, v = -y / (2 * w * |z|)
169
+ // if x < 0: u = |y| / (2 * w * |z|), v = -sign(y) * w / |z|
170
+
171
+ const T x = numext::real(z);
172
+ const T y = numext::imag(z);
173
+ const T zero = T(0);
174
+
175
+ const T abs_z = numext::hypot(x, y);
176
+ const T w = numext::sqrt(T(0.5) * (numext::abs(x) + abs_z));
177
+ const T woz = w / abs_z;
178
+ // Corner cases consistent with 1/sqrt(z) on gcc/clang.
179
+ return
180
+ abs_z == zero ? std::complex<T>(NumTraits<T>::infinity(), NumTraits<T>::quiet_NaN())
181
+ : ((numext::isinf)(x) || (numext::isinf)(y)) ? std::complex<T>(zero, zero)
182
+ : x == zero ? std::complex<T>(woz, y < zero ? woz : -woz)
183
+ : x > zero ? std::complex<T>(woz, -y / (2 * w * abs_z))
184
+ : std::complex<T>(numext::abs(y) / (2 * w * abs_z), y < zero ? woz : -woz );
185
+ }
186
+
187
+ template<typename T>
188
+ EIGEN_DEVICE_FUNC std::complex<T> complex_log(const std::complex<T>& z) {
189
+ // Computes complex log.
190
+ T a = numext::abs(z);
191
+ EIGEN_USING_STD(atan2);
192
+ T b = atan2(z.imag(), z.real());
193
+ return std::complex<T>(numext::log(a), b);
194
+ }
195
+
97
196
  } // end namespace internal
98
197
 
99
198
  } // end namespace Eigen
@@ -29,7 +29,7 @@ private:
29
29
  required_alignment = unpacket_traits<PacketScalar>::alignment,
30
30
  packet_access_bit = (packet_traits<_Scalar>::Vectorizable && (EIGEN_UNALIGNED_VECTORIZE || (actual_alignment>=required_alignment))) ? PacketAccessBit : 0
31
31
  };
32
-
32
+
33
33
  public:
34
34
  typedef _Scalar Scalar;
35
35
  typedef Dense StorageKind;
@@ -44,7 +44,7 @@ public:
44
44
  Options = _Options,
45
45
  InnerStrideAtCompileTime = 1,
46
46
  OuterStrideAtCompileTime = (Options&RowMajor) ? ColsAtCompileTime : RowsAtCompileTime,
47
-
47
+
48
48
  // FIXME, the following flag in only used to define NeedsToAlign in PlainObjectBase
49
49
  EvaluatorFlags = LinearAccessBit | DirectAccessBit | packet_access_bit | row_major_bit,
50
50
  Alignment = actual_alignment
@@ -255,53 +255,93 @@ class Matrix
255
255
  *
256
256
  * \sa resize(Index,Index)
257
257
  */
258
- EIGEN_DEVICE_FUNC
259
- EIGEN_STRONG_INLINE Matrix() : Base()
258
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
259
+ Matrix() : Base()
260
260
  {
261
261
  Base::_check_template_params();
262
262
  EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED
263
263
  }
264
264
 
265
265
  // FIXME is it still needed
266
- EIGEN_DEVICE_FUNC
266
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
267
267
  explicit Matrix(internal::constructor_without_unaligned_array_assert)
268
268
  : Base(internal::constructor_without_unaligned_array_assert())
269
269
  { Base::_check_template_params(); EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED }
270
270
 
271
271
  #if EIGEN_HAS_RVALUE_REFERENCES
272
- EIGEN_DEVICE_FUNC
272
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
273
273
  Matrix(Matrix&& other) EIGEN_NOEXCEPT_IF(std::is_nothrow_move_constructible<Scalar>::value)
274
274
  : Base(std::move(other))
275
275
  {
276
276
  Base::_check_template_params();
277
277
  }
278
- EIGEN_DEVICE_FUNC
278
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
279
279
  Matrix& operator=(Matrix&& other) EIGEN_NOEXCEPT_IF(std::is_nothrow_move_assignable<Scalar>::value)
280
280
  {
281
- other.swap(*this);
281
+ Base::operator=(std::move(other));
282
282
  return *this;
283
283
  }
284
284
  #endif
285
285
 
286
- #ifndef EIGEN_PARSED_BY_DOXYGEN
286
+ #if EIGEN_HAS_CXX11
287
+ /** \copydoc PlainObjectBase(const Scalar&, const Scalar&, const Scalar&, const Scalar&, const ArgTypes&... args)
288
+ *
289
+ * Example: \include Matrix_variadic_ctor_cxx11.cpp
290
+ * Output: \verbinclude Matrix_variadic_ctor_cxx11.out
291
+ *
292
+ * \sa Matrix(const std::initializer_list<std::initializer_list<Scalar>>&)
293
+ */
294
+ template <typename... ArgTypes>
295
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
296
+ Matrix(const Scalar& a0, const Scalar& a1, const Scalar& a2, const Scalar& a3, const ArgTypes&... args)
297
+ : Base(a0, a1, a2, a3, args...) {}
298
+
299
+ /** \brief Constructs a Matrix and initializes it from the coefficients given as initializer-lists grouped by row. \cpp11
300
+ *
301
+ * In the general case, the constructor takes a list of rows, each row being represented as a list of coefficients:
302
+ *
303
+ * Example: \include Matrix_initializer_list_23_cxx11.cpp
304
+ * Output: \verbinclude Matrix_initializer_list_23_cxx11.out
305
+ *
306
+ * Each of the inner initializer lists must contain the exact same number of elements, otherwise an assertion is triggered.
307
+ *
308
+ * In the case of a compile-time column vector, implicit transposition from a single row is allowed.
309
+ * Therefore <code>VectorXd{{1,2,3,4,5}}</code> is legal and the more verbose syntax
310
+ * <code>RowVectorXd{{1},{2},{3},{4},{5}}</code> can be avoided:
311
+ *
312
+ * Example: \include Matrix_initializer_list_vector_cxx11.cpp
313
+ * Output: \verbinclude Matrix_initializer_list_vector_cxx11.out
314
+ *
315
+ * In the case of fixed-sized matrices, the initializer list sizes must exactly match the matrix sizes,
316
+ * and implicit transposition is allowed for compile-time vectors only.
317
+ *
318
+ * \sa Matrix(const Scalar& a0, const Scalar& a1, const Scalar& a2, const Scalar& a3, const ArgTypes&... args)
319
+ */
320
+ EIGEN_DEVICE_FUNC
321
+ explicit EIGEN_STRONG_INLINE Matrix(const std::initializer_list<std::initializer_list<Scalar>>& list) : Base(list) {}
322
+ #endif // end EIGEN_HAS_CXX11
323
+
324
+ #ifndef EIGEN_PARSED_BY_DOXYGEN
287
325
 
288
326
  // This constructor is for both 1x1 matrices and dynamic vectors
289
327
  template<typename T>
290
- EIGEN_DEVICE_FUNC
291
- EIGEN_STRONG_INLINE explicit Matrix(const T& x)
328
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
329
+ explicit Matrix(const T& x)
292
330
  {
293
331
  Base::_check_template_params();
294
332
  Base::template _init1<T>(x);
295
333
  }
296
334
 
297
335
  template<typename T0, typename T1>
298
- EIGEN_DEVICE_FUNC
299
- EIGEN_STRONG_INLINE Matrix(const T0& x, const T1& y)
336
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
337
+ Matrix(const T0& x, const T1& y)
300
338
  {
301
339
  Base::_check_template_params();
302
340
  Base::template _init2<T0,T1>(x, y);
303
341
  }
304
- #else
342
+
343
+
344
+ #else
305
345
  /** \brief Constructs a fixed-sized matrix initialized with coefficients starting at \a data */
306
346
  EIGEN_DEVICE_FUNC
307
347
  explicit Matrix(const Scalar *data);
@@ -311,7 +351,7 @@ class Matrix
311
351
  * This is useful for dynamic-size vectors. For fixed-size vectors,
312
352
  * it is redundant to pass these parameters, so one should use the default constructor
313
353
  * Matrix() instead.
314
- *
354
+ *
315
355
  * \warning This constructor is disabled for fixed-size \c 1x1 matrices. For instance,
316
356
  * calling Matrix<double,1,1>(1) will call the initialization constructor: Matrix(const Scalar&).
317
357
  * For fixed-size \c 1x1 matrices it is therefore recommended to use the default
@@ -319,14 +359,15 @@ class Matrix
319
359
  * \c EIGEN_INITIALIZE_MATRICES_BY_{ZERO,\c NAN} macros (see \ref TopicPreprocessorDirectives).
320
360
  */
321
361
  EIGEN_STRONG_INLINE explicit Matrix(Index dim);
322
- /** \brief Constructs an initialized 1x1 matrix with the given coefficient */
362
+ /** \brief Constructs an initialized 1x1 matrix with the given coefficient
363
+ * \sa Matrix(const Scalar&, const Scalar&, const Scalar&, const Scalar&, const ArgTypes&...) */
323
364
  Matrix(const Scalar& x);
324
365
  /** \brief Constructs an uninitialized matrix with \a rows rows and \a cols columns.
325
366
  *
326
367
  * This is useful for dynamic-size matrices. For fixed-size matrices,
327
368
  * it is redundant to pass these parameters, so one should use the default constructor
328
369
  * Matrix() instead.
329
- *
370
+ *
330
371
  * \warning This constructor is disabled for fixed-size \c 1x2 and \c 2x1 vectors. For instance,
331
372
  * calling Matrix2f(2,1) will call the initialization constructor: Matrix(const Scalar& x, const Scalar& y).
332
373
  * For fixed-size \c 1x2 or \c 2x1 vectors it is therefore recommended to use the default
@@ -335,12 +376,15 @@ class Matrix
335
376
  */
336
377
  EIGEN_DEVICE_FUNC
337
378
  Matrix(Index rows, Index cols);
338
-
339
- /** \brief Constructs an initialized 2D vector with given coefficients */
379
+
380
+ /** \brief Constructs an initialized 2D vector with given coefficients
381
+ * \sa Matrix(const Scalar&, const Scalar&, const Scalar&, const Scalar&, const ArgTypes&...) */
340
382
  Matrix(const Scalar& x, const Scalar& y);
341
- #endif
383
+ #endif // end EIGEN_PARSED_BY_DOXYGEN
342
384
 
343
- /** \brief Constructs an initialized 3D vector with given coefficients */
385
+ /** \brief Constructs an initialized 3D vector with given coefficients
386
+ * \sa Matrix(const Scalar&, const Scalar&, const Scalar&, const Scalar&, const ArgTypes&...)
387
+ */
344
388
  EIGEN_DEVICE_FUNC
345
389
  EIGEN_STRONG_INLINE Matrix(const Scalar& x, const Scalar& y, const Scalar& z)
346
390
  {
@@ -350,7 +394,9 @@ class Matrix
350
394
  m_storage.data()[1] = y;
351
395
  m_storage.data()[2] = z;
352
396
  }
353
- /** \brief Constructs an initialized 4D vector with given coefficients */
397
+ /** \brief Constructs an initialized 4D vector with given coefficients
398
+ * \sa Matrix(const Scalar&, const Scalar&, const Scalar&, const Scalar&, const ArgTypes&...)
399
+ */
354
400
  EIGEN_DEVICE_FUNC
355
401
  EIGEN_STRONG_INLINE Matrix(const Scalar& x, const Scalar& y, const Scalar& z, const Scalar& w)
356
402
  {
@@ -377,8 +423,10 @@ class Matrix
377
423
  : Base(other.derived())
378
424
  { }
379
425
 
380
- EIGEN_DEVICE_FUNC inline Index innerStride() const { return 1; }
381
- EIGEN_DEVICE_FUNC inline Index outerStride() const { return this->innerSize(); }
426
+ EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
427
+ inline Index innerStride() const EIGEN_NOEXCEPT { return 1; }
428
+ EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
429
+ inline Index outerStride() const EIGEN_NOEXCEPT { return this->innerSize(); }
382
430
 
383
431
  /////////// Geometry module ///////////
384
432
 
@@ -405,7 +453,7 @@ class Matrix
405
453
  *
406
454
  * \ingroup Core_Module
407
455
  *
408
- * Eigen defines several typedef shortcuts for most common matrix and vector types.
456
+ * %Eigen defines several typedef shortcuts for most common matrix and vector types.
409
457
  *
410
458
  * The general patterns are the following:
411
459
  *
@@ -418,6 +466,15 @@ class Matrix
418
466
  * There are also \c VectorSizeType and \c RowVectorSizeType which are self-explanatory. For example, \c Vector4cf is
419
467
  * a fixed-size vector of 4 complex floats.
420
468
  *
469
+ * With \cpp11, template alias are also defined for common sizes.
470
+ * They follow the same pattern as above except that the scalar type suffix is replaced by a
471
+ * template parameter, i.e.:
472
+ * - `MatrixSize<Type>` where `Size` can be \c 2,\c 3,\c 4 for fixed size square matrices or \c X for dynamic size.
473
+ * - `MatrixXSize<Type>` and `MatrixSizeX<Type>` where `Size` can be \c 2,\c 3,\c 4 for hybrid dynamic/fixed matrices.
474
+ * - `VectorSize<Type>` and `RowVectorSize<Type>` for column and row vectors.
475
+ *
476
+ * With \cpp11, you can also use fully generic column and row vector types: `Vector<Type,Size>` and `RowVector<Type,Size>`.
477
+ *
421
478
  * \sa class Matrix
422
479
  */
423
480
 
@@ -454,6 +511,55 @@ EIGEN_MAKE_TYPEDEFS_ALL_SIZES(std::complex<double>, cd)
454
511
  #undef EIGEN_MAKE_TYPEDEFS
455
512
  #undef EIGEN_MAKE_FIXED_TYPEDEFS
456
513
 
514
+ #if EIGEN_HAS_CXX11
515
+
516
+ #define EIGEN_MAKE_TYPEDEFS(Size, SizeSuffix) \
517
+ /** \ingroup matrixtypedefs */ \
518
+ /** \brief \cpp11 */ \
519
+ template <typename Type> \
520
+ using Matrix##SizeSuffix = Matrix<Type, Size, Size>; \
521
+ /** \ingroup matrixtypedefs */ \
522
+ /** \brief \cpp11 */ \
523
+ template <typename Type> \
524
+ using Vector##SizeSuffix = Matrix<Type, Size, 1>; \
525
+ /** \ingroup matrixtypedefs */ \
526
+ /** \brief \cpp11 */ \
527
+ template <typename Type> \
528
+ using RowVector##SizeSuffix = Matrix<Type, 1, Size>;
529
+
530
+ #define EIGEN_MAKE_FIXED_TYPEDEFS(Size) \
531
+ /** \ingroup matrixtypedefs */ \
532
+ /** \brief \cpp11 */ \
533
+ template <typename Type> \
534
+ using Matrix##Size##X = Matrix<Type, Size, Dynamic>; \
535
+ /** \ingroup matrixtypedefs */ \
536
+ /** \brief \cpp11 */ \
537
+ template <typename Type> \
538
+ using Matrix##X##Size = Matrix<Type, Dynamic, Size>;
539
+
540
+ EIGEN_MAKE_TYPEDEFS(2, 2)
541
+ EIGEN_MAKE_TYPEDEFS(3, 3)
542
+ EIGEN_MAKE_TYPEDEFS(4, 4)
543
+ EIGEN_MAKE_TYPEDEFS(Dynamic, X)
544
+ EIGEN_MAKE_FIXED_TYPEDEFS(2)
545
+ EIGEN_MAKE_FIXED_TYPEDEFS(3)
546
+ EIGEN_MAKE_FIXED_TYPEDEFS(4)
547
+
548
+ /** \ingroup matrixtypedefs
549
+ * \brief \cpp11 */
550
+ template <typename Type, int Size>
551
+ using Vector = Matrix<Type, Size, 1>;
552
+
553
+ /** \ingroup matrixtypedefs
554
+ * \brief \cpp11 */
555
+ template <typename Type, int Size>
556
+ using RowVector = Matrix<Type, 1, Size>;
557
+
558
+ #undef EIGEN_MAKE_TYPEDEFS
559
+ #undef EIGEN_MAKE_FIXED_TYPEDEFS
560
+
561
+ #endif // EIGEN_HAS_CXX11
562
+
457
563
  } // end namespace Eigen
458
564
 
459
565
  #endif // EIGEN_MATRIX_H
@@ -76,6 +76,7 @@ template<typename Derived> class MatrixBase
76
76
  using Base::coeffRef;
77
77
  using Base::lazyAssign;
78
78
  using Base::eval;
79
+ using Base::operator-;
79
80
  using Base::operator+=;
80
81
  using Base::operator-=;
81
82
  using Base::operator*=;
@@ -122,7 +123,6 @@ template<typename Derived> class MatrixBase
122
123
 
123
124
  #define EIGEN_CURRENT_STORAGE_BASE_CLASS Eigen::MatrixBase
124
125
  #define EIGEN_DOC_UNARY_ADDONS(X,Y)
125
- # include "../plugins/CommonCwiseUnaryOps.h"
126
126
  # include "../plugins/CommonCwiseBinaryOps.h"
127
127
  # include "../plugins/MatrixCwiseUnaryOps.h"
128
128
  # include "../plugins/MatrixCwiseBinaryOps.h"
@@ -268,6 +268,8 @@ template<typename Derived> class MatrixBase
268
268
  Derived& setIdentity();
269
269
  EIGEN_DEVICE_FUNC
270
270
  Derived& setIdentity(Index rows, Index cols);
271
+ EIGEN_DEVICE_FUNC Derived& setUnit(Index i);
272
+ EIGEN_DEVICE_FUNC Derived& setUnit(Index newSize, Index i);
271
273
 
272
274
  bool isIdentity(const RealScalar& prec = NumTraits<Scalar>::dummy_precision()) const;
273
275
  bool isDiagonal(const RealScalar& prec = NumTraits<Scalar>::dummy_precision()) const;
@@ -296,7 +298,7 @@ template<typename Derived> class MatrixBase
296
298
  EIGEN_DEVICE_FUNC inline bool operator!=(const MatrixBase<OtherDerived>& other) const
297
299
  { return cwiseNotEqual(other).any(); }
298
300
 
299
- NoAlias<Derived,Eigen::MatrixBase > noalias();
301
+ NoAlias<Derived,Eigen::MatrixBase > EIGEN_DEVICE_FUNC noalias();
300
302
 
301
303
  // TODO forceAlignedAccess is temporarily disabled
302
304
  // Need to find a nicer workaround.
@@ -326,6 +328,7 @@ template<typename Derived> class MatrixBase
326
328
 
327
329
  inline const PartialPivLU<PlainObject> lu() const;
328
330
 
331
+ EIGEN_DEVICE_FUNC
329
332
  inline const Inverse<Derived> inverse() const;
330
333
 
331
334
  template<typename ResultType>
@@ -335,12 +338,15 @@ template<typename Derived> class MatrixBase
335
338
  bool& invertible,
336
339
  const RealScalar& absDeterminantThreshold = NumTraits<Scalar>::dummy_precision()
337
340
  ) const;
341
+
338
342
  template<typename ResultType>
339
343
  inline void computeInverseWithCheck(
340
344
  ResultType& inverse,
341
345
  bool& invertible,
342
346
  const RealScalar& absDeterminantThreshold = NumTraits<Scalar>::dummy_precision()
343
347
  ) const;
348
+
349
+ EIGEN_DEVICE_FUNC
344
350
  Scalar determinant() const;
345
351
 
346
352
  /////////// Cholesky module ///////////
@@ -412,15 +418,19 @@ template<typename Derived> class MatrixBase
412
418
 
413
419
  ////////// Householder module ///////////
414
420
 
421
+ EIGEN_DEVICE_FUNC
415
422
  void makeHouseholderInPlace(Scalar& tau, RealScalar& beta);
416
423
  template<typename EssentialPart>
424
+ EIGEN_DEVICE_FUNC
417
425
  void makeHouseholder(EssentialPart& essential,
418
426
  Scalar& tau, RealScalar& beta) const;
419
427
  template<typename EssentialPart>
428
+ EIGEN_DEVICE_FUNC
420
429
  void applyHouseholderOnTheLeft(const EssentialPart& essential,
421
430
  const Scalar& tau,
422
431
  Scalar* workspace);
423
432
  template<typename EssentialPart>
433
+ EIGEN_DEVICE_FUNC
424
434
  void applyHouseholderOnTheRight(const EssentialPart& essential,
425
435
  const Scalar& tau,
426
436
  Scalar* workspace);
@@ -428,8 +438,10 @@ template<typename Derived> class MatrixBase
428
438
  ///////// Jacobi module /////////
429
439
 
430
440
  template<typename OtherScalar>
441
+ EIGEN_DEVICE_FUNC
431
442
  void applyOnTheLeft(Index p, Index q, const JacobiRotation<OtherScalar>& j);
432
443
  template<typename OtherScalar>
444
+ EIGEN_DEVICE_FUNC
433
445
  void applyOnTheRight(Index p, Index q, const JacobiRotation<OtherScalar>& j);
434
446
 
435
447
  ///////// SparseCore module /////////
@@ -456,6 +468,11 @@ template<typename Derived> class MatrixBase
456
468
  const MatrixFunctionReturnValue<Derived> matrixFunction(StemFunction f) const;
457
469
  EIGEN_MATRIX_FUNCTION(MatrixFunctionReturnValue, cosh, hyperbolic cosine)
458
470
  EIGEN_MATRIX_FUNCTION(MatrixFunctionReturnValue, sinh, hyperbolic sine)
471
+ #if EIGEN_HAS_CXX11_MATH
472
+ EIGEN_MATRIX_FUNCTION(MatrixFunctionReturnValue, atanh, inverse hyperbolic cosine)
473
+ EIGEN_MATRIX_FUNCTION(MatrixFunctionReturnValue, acosh, inverse hyperbolic cosine)
474
+ EIGEN_MATRIX_FUNCTION(MatrixFunctionReturnValue, asinh, inverse hyperbolic sine)
475
+ #endif
459
476
  EIGEN_MATRIX_FUNCTION(MatrixFunctionReturnValue, cos, cosine)
460
477
  EIGEN_MATRIX_FUNCTION(MatrixFunctionReturnValue, sin, sine)
461
478
  EIGEN_MATRIX_FUNCTION(MatrixSquareRootReturnValue, sqrt, square root)
@@ -16,7 +16,11 @@ namespace Eigen {
16
16
  namespace internal {
17
17
  template<typename ExpressionType>
18
18
  struct traits<NestByValue<ExpressionType> > : public traits<ExpressionType>
19
- {};
19
+ {
20
+ enum {
21
+ Flags = traits<ExpressionType>::Flags & ~NestByRefBit
22
+ };
23
+ };
20
24
  }
21
25
 
22
26
  /** \class NestByValue
@@ -41,57 +45,13 @@ template<typename ExpressionType> class NestByValue
41
45
 
42
46
  EIGEN_DEVICE_FUNC explicit inline NestByValue(const ExpressionType& matrix) : m_expression(matrix) {}
43
47
 
44
- EIGEN_DEVICE_FUNC inline Index rows() const { return m_expression.rows(); }
45
- EIGEN_DEVICE_FUNC inline Index cols() const { return m_expression.cols(); }
46
- EIGEN_DEVICE_FUNC inline Index outerStride() const { return m_expression.outerStride(); }
47
- EIGEN_DEVICE_FUNC inline Index innerStride() const { return m_expression.innerStride(); }
48
-
49
- EIGEN_DEVICE_FUNC inline const CoeffReturnType coeff(Index row, Index col) const
50
- {
51
- return m_expression.coeff(row, col);
52
- }
53
-
54
- EIGEN_DEVICE_FUNC inline Scalar& coeffRef(Index row, Index col)
55
- {
56
- return m_expression.const_cast_derived().coeffRef(row, col);
57
- }
58
-
59
- EIGEN_DEVICE_FUNC inline const CoeffReturnType coeff(Index index) const
60
- {
61
- return m_expression.coeff(index);
62
- }
63
-
64
- EIGEN_DEVICE_FUNC inline Scalar& coeffRef(Index index)
65
- {
66
- return m_expression.const_cast_derived().coeffRef(index);
67
- }
68
-
69
- template<int LoadMode>
70
- inline const PacketScalar packet(Index row, Index col) const
71
- {
72
- return m_expression.template packet<LoadMode>(row, col);
73
- }
74
-
75
- template<int LoadMode>
76
- inline void writePacket(Index row, Index col, const PacketScalar& x)
77
- {
78
- m_expression.const_cast_derived().template writePacket<LoadMode>(row, col, x);
79
- }
80
-
81
- template<int LoadMode>
82
- inline const PacketScalar packet(Index index) const
83
- {
84
- return m_expression.template packet<LoadMode>(index);
85
- }
86
-
87
- template<int LoadMode>
88
- inline void writePacket(Index index, const PacketScalar& x)
89
- {
90
- m_expression.const_cast_derived().template writePacket<LoadMode>(index, x);
91
- }
48
+ EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR inline Index rows() const EIGEN_NOEXCEPT { return m_expression.rows(); }
49
+ EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR inline Index cols() const EIGEN_NOEXCEPT { return m_expression.cols(); }
92
50
 
93
51
  EIGEN_DEVICE_FUNC operator const ExpressionType&() const { return m_expression; }
94
52
 
53
+ EIGEN_DEVICE_FUNC const ExpressionType& nestedExpression() const { return m_expression; }
54
+
95
55
  protected:
96
56
  const ExpressionType m_expression;
97
57
  };
@@ -99,12 +59,27 @@ template<typename ExpressionType> class NestByValue
99
59
  /** \returns an expression of the temporary version of *this.
100
60
  */
101
61
  template<typename Derived>
102
- inline const NestByValue<Derived>
62
+ EIGEN_DEVICE_FUNC inline const NestByValue<Derived>
103
63
  DenseBase<Derived>::nestByValue() const
104
64
  {
105
65
  return NestByValue<Derived>(derived());
106
66
  }
107
67
 
68
+ namespace internal {
69
+
70
+ // Evaluator of Solve -> eval into a temporary
71
+ template<typename ArgType>
72
+ struct evaluator<NestByValue<ArgType> >
73
+ : public evaluator<ArgType>
74
+ {
75
+ typedef evaluator<ArgType> Base;
76
+
77
+ EIGEN_DEVICE_FUNC explicit evaluator(const NestByValue<ArgType>& xpr)
78
+ : Base(xpr.nestedExpression())
79
+ {}
80
+ };
81
+ }
82
+
108
83
  } // end namespace Eigen
109
84
 
110
85
  #endif // EIGEN_NESTBYVALUE_H