@smake/eigen 1.0.1 → 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 (283) hide show
  1. package/README.md +1 -1
  2. package/eigen/COPYING.APACHE +203 -0
  3. package/eigen/COPYING.BSD +1 -1
  4. package/eigen/COPYING.MINPACK +51 -52
  5. package/eigen/Eigen/Cholesky +0 -1
  6. package/eigen/Eigen/Core +108 -266
  7. package/eigen/Eigen/Eigenvalues +0 -1
  8. package/eigen/Eigen/Geometry +3 -6
  9. package/eigen/Eigen/Householder +0 -1
  10. package/eigen/Eigen/Jacobi +0 -1
  11. package/eigen/Eigen/KLUSupport +41 -0
  12. package/eigen/Eigen/LU +2 -5
  13. package/eigen/Eigen/OrderingMethods +0 -3
  14. package/eigen/Eigen/PaStiXSupport +1 -0
  15. package/eigen/Eigen/PardisoSupport +0 -0
  16. package/eigen/Eigen/QR +0 -1
  17. package/eigen/Eigen/QtAlignedMalloc +0 -1
  18. package/eigen/Eigen/SVD +0 -1
  19. package/eigen/Eigen/Sparse +0 -2
  20. package/eigen/Eigen/SparseCholesky +0 -8
  21. package/eigen/Eigen/SparseLU +4 -0
  22. package/eigen/Eigen/src/Cholesky/LDLT.h +42 -27
  23. package/eigen/Eigen/src/Cholesky/LLT.h +39 -23
  24. package/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +90 -47
  25. package/eigen/Eigen/src/Core/ArithmeticSequence.h +413 -0
  26. package/eigen/Eigen/src/Core/Array.h +99 -11
  27. package/eigen/Eigen/src/Core/ArrayBase.h +1 -1
  28. package/eigen/Eigen/src/Core/ArrayWrapper.h +21 -21
  29. package/eigen/Eigen/src/Core/Assign.h +1 -1
  30. package/eigen/Eigen/src/Core/AssignEvaluator.h +125 -50
  31. package/eigen/Eigen/src/Core/Assign_MKL.h +10 -10
  32. package/eigen/Eigen/src/Core/BandMatrix.h +16 -16
  33. package/eigen/Eigen/src/Core/Block.h +56 -60
  34. package/eigen/Eigen/src/Core/BooleanRedux.h +29 -31
  35. package/eigen/Eigen/src/Core/CommaInitializer.h +7 -3
  36. package/eigen/Eigen/src/Core/CoreEvaluators.h +325 -272
  37. package/eigen/Eigen/src/Core/CoreIterators.h +5 -0
  38. package/eigen/Eigen/src/Core/CwiseBinaryOp.h +21 -22
  39. package/eigen/Eigen/src/Core/CwiseNullaryOp.h +153 -18
  40. package/eigen/Eigen/src/Core/CwiseUnaryOp.h +6 -6
  41. package/eigen/Eigen/src/Core/CwiseUnaryView.h +12 -10
  42. package/eigen/Eigen/src/Core/DenseBase.h +128 -39
  43. package/eigen/Eigen/src/Core/DenseCoeffsBase.h +25 -21
  44. package/eigen/Eigen/src/Core/DenseStorage.h +150 -68
  45. package/eigen/Eigen/src/Core/Diagonal.h +21 -23
  46. package/eigen/Eigen/src/Core/DiagonalMatrix.h +50 -2
  47. package/eigen/Eigen/src/Core/DiagonalProduct.h +1 -1
  48. package/eigen/Eigen/src/Core/Dot.h +10 -10
  49. package/eigen/Eigen/src/Core/EigenBase.h +10 -9
  50. package/eigen/Eigen/src/Core/ForceAlignedAccess.h +8 -4
  51. package/eigen/Eigen/src/Core/Fuzzy.h +3 -3
  52. package/eigen/Eigen/src/Core/GeneralProduct.h +20 -10
  53. package/eigen/Eigen/src/Core/GenericPacketMath.h +597 -147
  54. package/eigen/Eigen/src/Core/GlobalFunctions.h +40 -33
  55. package/eigen/Eigen/src/Core/IO.h +40 -7
  56. package/eigen/Eigen/src/Core/IndexedView.h +237 -0
  57. package/eigen/Eigen/src/Core/Inverse.h +9 -10
  58. package/eigen/Eigen/src/Core/Map.h +7 -7
  59. package/eigen/Eigen/src/Core/MapBase.h +5 -3
  60. package/eigen/Eigen/src/Core/MathFunctions.h +756 -120
  61. package/eigen/Eigen/src/Core/MathFunctionsImpl.h +118 -19
  62. package/eigen/Eigen/src/Core/Matrix.h +131 -25
  63. package/eigen/Eigen/src/Core/MatrixBase.h +19 -2
  64. package/eigen/Eigen/src/Core/NestByValue.h +25 -50
  65. package/eigen/Eigen/src/Core/NoAlias.h +4 -3
  66. package/eigen/Eigen/src/Core/NumTraits.h +107 -20
  67. package/eigen/Eigen/src/Core/PartialReduxEvaluator.h +232 -0
  68. package/eigen/Eigen/src/Core/PermutationMatrix.h +3 -3
  69. package/eigen/Eigen/src/Core/PlainObjectBase.h +145 -54
  70. package/eigen/Eigen/src/Core/Product.h +30 -25
  71. package/eigen/Eigen/src/Core/ProductEvaluators.h +183 -142
  72. package/eigen/Eigen/src/Core/Random.h +37 -1
  73. package/eigen/Eigen/src/Core/Redux.h +180 -170
  74. package/eigen/Eigen/src/Core/Ref.h +118 -21
  75. package/eigen/Eigen/src/Core/Replicate.h +8 -8
  76. package/eigen/Eigen/src/Core/Reshaped.h +454 -0
  77. package/eigen/Eigen/src/Core/ReturnByValue.h +7 -5
  78. package/eigen/Eigen/src/Core/Reverse.h +18 -12
  79. package/eigen/Eigen/src/Core/Select.h +8 -6
  80. package/eigen/Eigen/src/Core/SelfAdjointView.h +33 -20
  81. package/eigen/Eigen/src/Core/Solve.h +14 -14
  82. package/eigen/Eigen/src/Core/SolveTriangular.h +13 -13
  83. package/eigen/Eigen/src/Core/SolverBase.h +41 -3
  84. package/eigen/Eigen/src/Core/StableNorm.h +100 -70
  85. package/eigen/Eigen/src/Core/StlIterators.h +463 -0
  86. package/eigen/Eigen/src/Core/Stride.h +9 -4
  87. package/eigen/Eigen/src/Core/Swap.h +5 -4
  88. package/eigen/Eigen/src/Core/Transpose.h +86 -27
  89. package/eigen/Eigen/src/Core/Transpositions.h +26 -8
  90. package/eigen/Eigen/src/Core/TriangularMatrix.h +88 -72
  91. package/eigen/Eigen/src/Core/VectorBlock.h +5 -5
  92. package/eigen/Eigen/src/Core/VectorwiseOp.h +159 -70
  93. package/eigen/Eigen/src/Core/Visitor.h +137 -29
  94. package/eigen/Eigen/src/Core/arch/AVX/Complex.h +50 -129
  95. package/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +126 -337
  96. package/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +1092 -155
  97. package/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +65 -1
  98. package/eigen/Eigen/src/Core/arch/AVX512/Complex.h +422 -0
  99. package/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +186 -213
  100. package/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +1250 -252
  101. package/eigen/Eigen/src/Core/arch/AVX512/TypeCasting.h +89 -0
  102. package/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +152 -165
  103. package/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +19 -251
  104. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +2937 -0
  105. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +221 -0
  106. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +629 -0
  107. package/eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h +2042 -392
  108. package/eigen/Eigen/src/Core/arch/CUDA/Complex.h +235 -80
  109. package/eigen/Eigen/src/Core/arch/Default/BFloat16.h +700 -0
  110. package/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +102 -14
  111. package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +1649 -0
  112. package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +110 -0
  113. package/eigen/Eigen/src/Core/arch/Default/Half.h +942 -0
  114. package/eigen/Eigen/src/Core/arch/Default/Settings.h +1 -1
  115. package/eigen/Eigen/src/Core/arch/Default/TypeCasting.h +120 -0
  116. package/eigen/Eigen/src/Core/arch/{CUDA → GPU}/MathFunctions.h +16 -4
  117. package/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +1685 -0
  118. package/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +80 -0
  119. package/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
  120. package/eigen/Eigen/src/Core/arch/MSA/Complex.h +648 -0
  121. package/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +387 -0
  122. package/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +1233 -0
  123. package/eigen/Eigen/src/Core/arch/NEON/Complex.h +313 -219
  124. package/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +183 -0
  125. package/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +54 -70
  126. package/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +4376 -549
  127. package/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +1419 -0
  128. package/eigen/Eigen/src/Core/arch/SSE/Complex.h +59 -179
  129. package/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +65 -428
  130. package/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +893 -283
  131. package/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +65 -0
  132. package/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +44 -0
  133. package/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +752 -0
  134. package/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +49 -0
  135. package/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +232 -0
  136. package/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +301 -0
  137. package/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +670 -0
  138. package/eigen/Eigen/src/Core/arch/SYCL/SyclMemoryModel.h +694 -0
  139. package/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +85 -0
  140. package/eigen/Eigen/src/Core/arch/ZVector/Complex.h +212 -183
  141. package/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +101 -5
  142. package/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +510 -395
  143. package/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +11 -2
  144. package/eigen/Eigen/src/Core/functors/BinaryFunctors.h +112 -46
  145. package/eigen/Eigen/src/Core/functors/NullaryFunctors.h +31 -30
  146. package/eigen/Eigen/src/Core/functors/StlFunctors.h +32 -2
  147. package/eigen/Eigen/src/Core/functors/UnaryFunctors.h +354 -15
  148. package/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +1073 -585
  149. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +29 -7
  150. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +4 -4
  151. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +1 -1
  152. package/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +382 -483
  153. package/eigen/Eigen/src/Core/products/Parallelizer.h +23 -9
  154. package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +23 -6
  155. package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +8 -6
  156. package/eigen/Eigen/src/Core/products/SelfadjointProduct.h +2 -2
  157. package/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h +5 -4
  158. package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h +3 -3
  159. package/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h +5 -3
  160. package/eigen/Eigen/src/Core/products/TriangularSolverVector.h +13 -10
  161. package/eigen/Eigen/src/Core/util/BlasUtil.h +208 -124
  162. package/eigen/Eigen/src/Core/util/ConfigureVectorization.h +512 -0
  163. package/eigen/Eigen/src/Core/util/Constants.h +25 -9
  164. package/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +14 -2
  165. package/eigen/Eigen/src/Core/util/ForwardDeclarations.h +28 -4
  166. package/eigen/Eigen/src/Core/util/IndexedViewHelper.h +186 -0
  167. package/eigen/Eigen/src/Core/util/IntegralConstant.h +272 -0
  168. package/eigen/Eigen/src/Core/util/MKL_support.h +8 -1
  169. package/eigen/Eigen/src/Core/util/Macros.h +661 -250
  170. package/eigen/Eigen/src/Core/util/Memory.h +222 -52
  171. package/eigen/Eigen/src/Core/util/Meta.h +349 -105
  172. package/eigen/Eigen/src/Core/util/ReshapedHelper.h +51 -0
  173. package/eigen/Eigen/src/Core/util/StaticAssert.h +8 -5
  174. package/eigen/Eigen/src/Core/util/SymbolicIndex.h +293 -0
  175. package/eigen/Eigen/src/Core/util/XprHelper.h +48 -30
  176. package/eigen/Eigen/src/Eigenvalues/ComplexEigenSolver.h +1 -1
  177. package/eigen/Eigen/src/Eigenvalues/ComplexSchur.h +1 -1
  178. package/eigen/Eigen/src/Eigenvalues/EigenSolver.h +2 -2
  179. package/eigen/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +1 -1
  180. package/eigen/Eigen/src/Eigenvalues/HessenbergDecomposition.h +2 -2
  181. package/eigen/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +2 -2
  182. package/eigen/Eigen/src/Eigenvalues/RealQZ.h +9 -6
  183. package/eigen/Eigen/src/Eigenvalues/RealSchur.h +10 -5
  184. package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +75 -42
  185. package/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +20 -15
  186. package/eigen/Eigen/src/Geometry/AlignedBox.h +99 -5
  187. package/eigen/Eigen/src/Geometry/AngleAxis.h +4 -4
  188. package/eigen/Eigen/src/Geometry/EulerAngles.h +3 -3
  189. package/eigen/Eigen/src/Geometry/Homogeneous.h +15 -11
  190. package/eigen/Eigen/src/Geometry/Hyperplane.h +1 -1
  191. package/eigen/Eigen/src/Geometry/OrthoMethods.h +3 -2
  192. package/eigen/Eigen/src/Geometry/ParametrizedLine.h +39 -2
  193. package/eigen/Eigen/src/Geometry/Quaternion.h +52 -14
  194. package/eigen/Eigen/src/Geometry/Rotation2D.h +3 -3
  195. package/eigen/Eigen/src/Geometry/Scaling.h +22 -4
  196. package/eigen/Eigen/src/Geometry/Transform.h +86 -65
  197. package/eigen/Eigen/src/Geometry/Translation.h +6 -6
  198. package/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +168 -0
  199. package/eigen/Eigen/src/Householder/BlockHouseholder.h +9 -2
  200. package/eigen/Eigen/src/Householder/Householder.h +8 -4
  201. package/eigen/Eigen/src/Householder/HouseholderSequence.h +123 -48
  202. package/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +15 -15
  203. package/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +7 -23
  204. package/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +5 -22
  205. package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +41 -47
  206. package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +51 -60
  207. package/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +70 -20
  208. package/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +2 -20
  209. package/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +11 -9
  210. package/eigen/Eigen/src/Jacobi/Jacobi.h +31 -10
  211. package/eigen/Eigen/src/KLUSupport/KLUSupport.h +358 -0
  212. package/eigen/Eigen/src/LU/Determinant.h +35 -19
  213. package/eigen/Eigen/src/LU/FullPivLU.h +29 -43
  214. package/eigen/Eigen/src/LU/InverseImpl.h +25 -8
  215. package/eigen/Eigen/src/LU/PartialPivLU.h +67 -57
  216. package/eigen/Eigen/src/LU/arch/InverseSize4.h +351 -0
  217. package/eigen/Eigen/src/OrderingMethods/Amd.h +7 -17
  218. package/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +297 -277
  219. package/eigen/Eigen/src/OrderingMethods/Ordering.h +6 -10
  220. package/eigen/Eigen/src/PaStiXSupport/PaStiXSupport.h +1 -1
  221. package/eigen/Eigen/src/PardisoSupport/PardisoSupport.h +10 -9
  222. package/eigen/Eigen/src/QR/ColPivHouseholderQR.h +41 -20
  223. package/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +100 -27
  224. package/eigen/Eigen/src/QR/FullPivHouseholderQR.h +59 -22
  225. package/eigen/Eigen/src/QR/HouseholderQR.h +48 -23
  226. package/eigen/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +25 -3
  227. package/eigen/Eigen/src/SVD/BDCSVD.h +137 -48
  228. package/eigen/Eigen/src/SVD/JacobiSVD.h +22 -14
  229. package/eigen/Eigen/src/SVD/SVDBase.h +82 -21
  230. package/eigen/Eigen/src/SVD/UpperBidiagonalization.h +3 -3
  231. package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +16 -8
  232. package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +11 -36
  233. package/eigen/Eigen/src/SparseCore/CompressedStorage.h +16 -0
  234. package/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +6 -6
  235. package/eigen/Eigen/src/SparseCore/SparseAssign.h +81 -27
  236. package/eigen/Eigen/src/SparseCore/SparseBlock.h +25 -57
  237. package/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +40 -11
  238. package/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +11 -15
  239. package/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +2 -2
  240. package/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +30 -8
  241. package/eigen/Eigen/src/SparseCore/SparseMatrix.h +124 -10
  242. package/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +5 -12
  243. package/eigen/Eigen/src/SparseCore/SparseProduct.h +13 -1
  244. package/eigen/Eigen/src/SparseCore/SparseRef.h +7 -7
  245. package/eigen/Eigen/src/SparseCore/SparseSelfAdjointView.h +3 -0
  246. package/eigen/Eigen/src/SparseCore/SparseUtil.h +8 -0
  247. package/eigen/Eigen/src/SparseCore/SparseVector.h +1 -1
  248. package/eigen/Eigen/src/SparseLU/SparseLU.h +160 -10
  249. package/eigen/Eigen/src/SparseLU/SparseLU_Memory.h +1 -1
  250. package/eigen/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +76 -2
  251. package/eigen/Eigen/src/SparseLU/SparseLU_column_dfs.h +2 -2
  252. package/eigen/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +1 -1
  253. package/eigen/Eigen/src/SparseLU/SparseLU_panel_bmod.h +1 -1
  254. package/eigen/Eigen/src/SparseQR/SparseQR.h +19 -6
  255. package/eigen/Eigen/src/StlSupport/StdDeque.h +2 -14
  256. package/eigen/Eigen/src/StlSupport/StdList.h +2 -2
  257. package/eigen/Eigen/src/StlSupport/StdVector.h +2 -2
  258. package/eigen/Eigen/src/SuperLUSupport/SuperLUSupport.h +6 -8
  259. package/eigen/Eigen/src/UmfPackSupport/UmfPackSupport.h +175 -39
  260. package/eigen/Eigen/src/misc/lapacke.h +5 -4
  261. package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h +27 -1
  262. package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +155 -11
  263. package/eigen/Eigen/src/plugins/BlockMethods.h +626 -242
  264. package/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.h +14 -0
  265. package/eigen/Eigen/src/plugins/IndexedViewMethods.h +262 -0
  266. package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +4 -4
  267. package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +10 -0
  268. package/eigen/Eigen/src/plugins/ReshapedMethods.h +149 -0
  269. package/eigen/README.md +2 -0
  270. package/lib/LibEigen.d.ts +4 -0
  271. package/lib/LibEigen.js +14 -0
  272. package/lib/index.d.ts +1 -1
  273. package/lib/index.js +7 -3
  274. package/package.json +2 -10
  275. package/eigen/Eigen/CMakeLists.txt +0 -19
  276. package/eigen/Eigen/src/Core/arch/CUDA/Half.h +0 -675
  277. package/eigen/Eigen/src/Core/arch/CUDA/PacketMath.h +0 -333
  278. package/eigen/Eigen/src/Core/arch/CUDA/PacketMathHalf.h +0 -1124
  279. package/eigen/Eigen/src/Core/arch/CUDA/TypeCasting.h +0 -212
  280. package/eigen/Eigen/src/Geometry/arch/Geometry_SSE.h +0 -161
  281. package/eigen/Eigen/src/LU/arch/Inverse_SSE.h +0 -338
  282. package/lib/eigen.d.ts +0 -2
  283. package/lib/eigen.js +0 -15
@@ -11,7 +11,7 @@
11
11
  #ifndef EIGEN_BLOCK_H
12
12
  #define EIGEN_BLOCK_H
13
13
 
14
- namespace Eigen {
14
+ namespace Eigen {
15
15
 
16
16
  namespace internal {
17
17
  template<typename XprType, int BlockRows, int BlockCols, bool InnerPanel>
@@ -52,7 +52,7 @@ struct traits<Block<XprType, BlockRows, BlockCols, InnerPanel> > : traits<XprTyp
52
52
  FlagsRowMajorBit = IsRowMajor ? RowMajorBit : 0,
53
53
  Flags = (traits<XprType>::Flags & (DirectAccessBit | (InnerPanel?CompressedAccessBit:0))) | FlagsLvalueBit | FlagsRowMajorBit,
54
54
  // FIXME DirectAccessBit should not be handled by expressions
55
- //
55
+ //
56
56
  // Alignment is needed by MapBase's assertions
57
57
  // We can sefely set it to false here. Internal alignment errors will be detected by an eigen_internal_assert in the respective evaluator
58
58
  Alignment = 0
@@ -61,7 +61,7 @@ struct traits<Block<XprType, BlockRows, BlockCols, InnerPanel> > : traits<XprTyp
61
61
 
62
62
  template<typename XprType, int BlockRows=Dynamic, int BlockCols=Dynamic, bool InnerPanel = false,
63
63
  bool HasDirectAccess = internal::has_direct_access<XprType>::ret> class BlockImpl_dense;
64
-
64
+
65
65
  } // end namespace internal
66
66
 
67
67
  template<typename XprType, int BlockRows, int BlockCols, bool InnerPanel, typename StorageKind> class BlockImpl;
@@ -109,13 +109,13 @@ template<typename XprType, int BlockRows, int BlockCols, bool InnerPanel> class
109
109
  typedef Impl Base;
110
110
  EIGEN_GENERIC_PUBLIC_INTERFACE(Block)
111
111
  EIGEN_INHERIT_ASSIGNMENT_OPERATORS(Block)
112
-
112
+
113
113
  typedef typename internal::remove_all<XprType>::type NestedExpression;
114
-
114
+
115
115
  /** Column or Row constructor
116
116
  */
117
- EIGEN_DEVICE_FUNC
118
- inline Block(XprType& xpr, Index i) : Impl(xpr,i)
117
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
118
+ Block(XprType& xpr, Index i) : Impl(xpr,i)
119
119
  {
120
120
  eigen_assert( (i>=0) && (
121
121
  ((BlockRows==1) && (BlockCols==XprType::ColsAtCompileTime) && i<xpr.rows())
@@ -124,8 +124,8 @@ template<typename XprType, int BlockRows, int BlockCols, bool InnerPanel> class
124
124
 
125
125
  /** Fixed-size constructor
126
126
  */
127
- EIGEN_DEVICE_FUNC
128
- inline Block(XprType& xpr, Index startRow, Index startCol)
127
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
128
+ Block(XprType& xpr, Index startRow, Index startCol)
129
129
  : Impl(xpr, startRow, startCol)
130
130
  {
131
131
  EIGEN_STATIC_ASSERT(RowsAtCompileTime!=Dynamic && ColsAtCompileTime!=Dynamic,THIS_METHOD_IS_ONLY_FOR_FIXED_SIZE)
@@ -135,8 +135,8 @@ template<typename XprType, int BlockRows, int BlockCols, bool InnerPanel> class
135
135
 
136
136
  /** Dynamic-size constructor
137
137
  */
138
- EIGEN_DEVICE_FUNC
139
- inline Block(XprType& xpr,
138
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
139
+ Block(XprType& xpr,
140
140
  Index startRow, Index startCol,
141
141
  Index blockRows, Index blockCols)
142
142
  : Impl(xpr, startRow, startCol, blockRows, blockCols)
@@ -147,7 +147,7 @@ template<typename XprType, int BlockRows, int BlockCols, bool InnerPanel> class
147
147
  && startCol >= 0 && blockCols >= 0 && startCol <= xpr.cols() - blockCols);
148
148
  }
149
149
  };
150
-
150
+
151
151
  // The generic default implementation for dense block simplu forward to the internal::BlockImpl_dense
152
152
  // that must be specialized for direct and non-direct access...
153
153
  template<typename XprType, int BlockRows, int BlockCols, bool InnerPanel>
@@ -159,10 +159,10 @@ class BlockImpl<XprType, BlockRows, BlockCols, InnerPanel, Dense>
159
159
  public:
160
160
  typedef Impl Base;
161
161
  EIGEN_INHERIT_ASSIGNMENT_OPERATORS(BlockImpl)
162
- EIGEN_DEVICE_FUNC inline BlockImpl(XprType& xpr, Index i) : Impl(xpr,i) {}
163
- EIGEN_DEVICE_FUNC inline BlockImpl(XprType& xpr, Index startRow, Index startCol) : Impl(xpr, startRow, startCol) {}
162
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE BlockImpl(XprType& xpr, Index i) : Impl(xpr,i) {}
163
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE BlockImpl(XprType& xpr, Index startRow, Index startCol) : Impl(xpr, startRow, startCol) {}
164
164
  EIGEN_DEVICE_FUNC
165
- inline BlockImpl(XprType& xpr, Index startRow, Index startCol, Index blockRows, Index blockCols)
165
+ EIGEN_STRONG_INLINE BlockImpl(XprType& xpr, Index startRow, Index startCol, Index blockRows, Index blockCols)
166
166
  : Impl(xpr, startRow, startCol, blockRows, blockCols) {}
167
167
  };
168
168
 
@@ -294,25 +294,25 @@ template<typename XprType, int BlockRows, int BlockCols, bool InnerPanel, bool H
294
294
  EIGEN_DEVICE_FUNC inline Index outerStride() const;
295
295
  #endif
296
296
 
297
- EIGEN_DEVICE_FUNC
297
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
298
298
  const typename internal::remove_all<XprTypeNested>::type& nestedExpression() const
299
- {
300
- return m_xpr;
299
+ {
300
+ return m_xpr;
301
301
  }
302
302
 
303
- EIGEN_DEVICE_FUNC
303
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
304
304
  XprType& nestedExpression() { return m_xpr; }
305
-
306
- EIGEN_DEVICE_FUNC
307
- StorageIndex startRow() const
308
- {
309
- return m_startRow.value();
305
+
306
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR
307
+ StorageIndex startRow() const EIGEN_NOEXCEPT
308
+ {
309
+ return m_startRow.value();
310
310
  }
311
-
312
- EIGEN_DEVICE_FUNC
313
- StorageIndex startCol() const
314
- {
315
- return m_startCol.value();
311
+
312
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR
313
+ StorageIndex startCol() const EIGEN_NOEXCEPT
314
+ {
315
+ return m_startCol.value();
316
316
  }
317
317
 
318
318
  protected:
@@ -342,9 +342,9 @@ class BlockImpl_dense<XprType,BlockRows,BlockCols, InnerPanel,true>
342
342
 
343
343
  /** Column or Row constructor
344
344
  */
345
- EIGEN_DEVICE_FUNC
346
- inline BlockImpl_dense(XprType& xpr, Index i)
347
- : Base(xpr.data() + i * ( ((BlockRows==1) && (BlockCols==XprType::ColsAtCompileTime) && (!XprTypeIsRowMajor))
345
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
346
+ BlockImpl_dense(XprType& xpr, Index i)
347
+ : Base(xpr.data() + i * ( ((BlockRows==1) && (BlockCols==XprType::ColsAtCompileTime) && (!XprTypeIsRowMajor))
348
348
  || ((BlockRows==XprType::RowsAtCompileTime) && (BlockCols==1) && ( XprTypeIsRowMajor)) ? xpr.innerStride() : xpr.outerStride()),
349
349
  BlockRows==1 ? 1 : xpr.rows(),
350
350
  BlockCols==1 ? 1 : xpr.cols()),
@@ -357,8 +357,8 @@ class BlockImpl_dense<XprType,BlockRows,BlockCols, InnerPanel,true>
357
357
 
358
358
  /** Fixed-size constructor
359
359
  */
360
- EIGEN_DEVICE_FUNC
361
- inline BlockImpl_dense(XprType& xpr, Index startRow, Index startCol)
360
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
361
+ BlockImpl_dense(XprType& xpr, Index startRow, Index startCol)
362
362
  : Base(xpr.data()+xpr.innerStride()*(XprTypeIsRowMajor?startCol:startRow) + xpr.outerStride()*(XprTypeIsRowMajor?startRow:startCol)),
363
363
  m_xpr(xpr), m_startRow(startRow), m_startCol(startCol)
364
364
  {
@@ -367,8 +367,8 @@ class BlockImpl_dense<XprType,BlockRows,BlockCols, InnerPanel,true>
367
367
 
368
368
  /** Dynamic-size constructor
369
369
  */
370
- EIGEN_DEVICE_FUNC
371
- inline BlockImpl_dense(XprType& xpr,
370
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
371
+ BlockImpl_dense(XprType& xpr,
372
372
  Index startRow, Index startCol,
373
373
  Index blockRows, Index blockCols)
374
374
  : Base(xpr.data()+xpr.innerStride()*(XprTypeIsRowMajor?startCol:startRow) + xpr.outerStride()*(XprTypeIsRowMajor?startRow:startCol), blockRows, blockCols),
@@ -377,18 +377,18 @@ class BlockImpl_dense<XprType,BlockRows,BlockCols, InnerPanel,true>
377
377
  init();
378
378
  }
379
379
 
380
- EIGEN_DEVICE_FUNC
381
- const typename internal::remove_all<XprTypeNested>::type& nestedExpression() const
382
- {
383
- return m_xpr;
380
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
381
+ const typename internal::remove_all<XprTypeNested>::type& nestedExpression() const EIGEN_NOEXCEPT
382
+ {
383
+ return m_xpr;
384
384
  }
385
385
 
386
- EIGEN_DEVICE_FUNC
386
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
387
387
  XprType& nestedExpression() { return m_xpr; }
388
-
388
+
389
389
  /** \sa MapBase::innerStride() */
390
- EIGEN_DEVICE_FUNC
391
- inline Index innerStride() const
390
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR
391
+ Index innerStride() const EIGEN_NOEXCEPT
392
392
  {
393
393
  return internal::traits<BlockType>::HasSameStorageOrderAsXprType
394
394
  ? m_xpr.innerStride()
@@ -396,23 +396,19 @@ class BlockImpl_dense<XprType,BlockRows,BlockCols, InnerPanel,true>
396
396
  }
397
397
 
398
398
  /** \sa MapBase::outerStride() */
399
- EIGEN_DEVICE_FUNC
400
- inline Index outerStride() const
399
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR
400
+ Index outerStride() const EIGEN_NOEXCEPT
401
401
  {
402
- return m_outerStride;
402
+ return internal::traits<BlockType>::HasSameStorageOrderAsXprType
403
+ ? m_xpr.outerStride()
404
+ : m_xpr.innerStride();
403
405
  }
404
406
 
405
- EIGEN_DEVICE_FUNC
406
- StorageIndex startRow() const
407
- {
408
- return m_startRow.value();
409
- }
407
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR
408
+ StorageIndex startRow() const EIGEN_NOEXCEPT { return m_startRow.value(); }
410
409
 
411
- EIGEN_DEVICE_FUNC
412
- StorageIndex startCol() const
413
- {
414
- return m_startCol.value();
415
- }
410
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR
411
+ StorageIndex startCol() const EIGEN_NOEXCEPT { return m_startCol.value(); }
416
412
 
417
413
  #ifndef __SUNPRO_CC
418
414
  // FIXME sunstudio is not friendly with the above friend...
@@ -422,8 +418,8 @@ class BlockImpl_dense<XprType,BlockRows,BlockCols, InnerPanel,true>
422
418
 
423
419
  #ifndef EIGEN_PARSED_BY_DOXYGEN
424
420
  /** \internal used by allowAligned() */
425
- EIGEN_DEVICE_FUNC
426
- inline BlockImpl_dense(XprType& xpr, const Scalar* data, Index blockRows, Index blockCols)
421
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
422
+ BlockImpl_dense(XprType& xpr, const Scalar* data, Index blockRows, Index blockCols)
427
423
  : Base(data, blockRows, blockCols), m_xpr(xpr)
428
424
  {
429
425
  init();
@@ -431,7 +427,7 @@ class BlockImpl_dense<XprType,BlockRows,BlockCols, InnerPanel,true>
431
427
  #endif
432
428
 
433
429
  protected:
434
- EIGEN_DEVICE_FUNC
430
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
435
431
  void init()
436
432
  {
437
433
  m_outerStride = internal::traits<BlockType>::HasSameStorageOrderAsXprType
@@ -14,58 +14,56 @@ namespace Eigen {
14
14
 
15
15
  namespace internal {
16
16
 
17
- template<typename Derived, int UnrollCount>
17
+ template<typename Derived, int UnrollCount, int Rows>
18
18
  struct all_unroller
19
19
  {
20
- typedef typename Derived::ExpressionTraits Traits;
21
20
  enum {
22
- col = (UnrollCount-1) / Traits::RowsAtCompileTime,
23
- row = (UnrollCount-1) % Traits::RowsAtCompileTime
21
+ col = (UnrollCount-1) / Rows,
22
+ row = (UnrollCount-1) % Rows
24
23
  };
25
24
 
26
- static inline bool run(const Derived &mat)
25
+ EIGEN_DEVICE_FUNC static inline bool run(const Derived &mat)
27
26
  {
28
- return all_unroller<Derived, UnrollCount-1>::run(mat) && mat.coeff(row, col);
27
+ return all_unroller<Derived, UnrollCount-1, Rows>::run(mat) && mat.coeff(row, col);
29
28
  }
30
29
  };
31
30
 
32
- template<typename Derived>
33
- struct all_unroller<Derived, 0>
31
+ template<typename Derived, int Rows>
32
+ struct all_unroller<Derived, 0, Rows>
34
33
  {
35
- static inline bool run(const Derived &/*mat*/) { return true; }
34
+ EIGEN_DEVICE_FUNC static inline bool run(const Derived &/*mat*/) { return true; }
36
35
  };
37
36
 
38
- template<typename Derived>
39
- struct all_unroller<Derived, Dynamic>
37
+ template<typename Derived, int Rows>
38
+ struct all_unroller<Derived, Dynamic, Rows>
40
39
  {
41
- static inline bool run(const Derived &) { return false; }
40
+ EIGEN_DEVICE_FUNC static inline bool run(const Derived &) { return false; }
42
41
  };
43
42
 
44
- template<typename Derived, int UnrollCount>
43
+ template<typename Derived, int UnrollCount, int Rows>
45
44
  struct any_unroller
46
45
  {
47
- typedef typename Derived::ExpressionTraits Traits;
48
46
  enum {
49
- col = (UnrollCount-1) / Traits::RowsAtCompileTime,
50
- row = (UnrollCount-1) % Traits::RowsAtCompileTime
47
+ col = (UnrollCount-1) / Rows,
48
+ row = (UnrollCount-1) % Rows
51
49
  };
52
50
 
53
- static inline bool run(const Derived &mat)
51
+ EIGEN_DEVICE_FUNC static inline bool run(const Derived &mat)
54
52
  {
55
- return any_unroller<Derived, UnrollCount-1>::run(mat) || mat.coeff(row, col);
53
+ return any_unroller<Derived, UnrollCount-1, Rows>::run(mat) || mat.coeff(row, col);
56
54
  }
57
55
  };
58
56
 
59
- template<typename Derived>
60
- struct any_unroller<Derived, 0>
57
+ template<typename Derived, int Rows>
58
+ struct any_unroller<Derived, 0, Rows>
61
59
  {
62
- static inline bool run(const Derived & /*mat*/) { return false; }
60
+ EIGEN_DEVICE_FUNC static inline bool run(const Derived & /*mat*/) { return false; }
63
61
  };
64
62
 
65
- template<typename Derived>
66
- struct any_unroller<Derived, Dynamic>
63
+ template<typename Derived, int Rows>
64
+ struct any_unroller<Derived, Dynamic, Rows>
67
65
  {
68
- static inline bool run(const Derived &) { return false; }
66
+ EIGEN_DEVICE_FUNC static inline bool run(const Derived &) { return false; }
69
67
  };
70
68
 
71
69
  } // end namespace internal
@@ -78,16 +76,16 @@ struct any_unroller<Derived, Dynamic>
78
76
  * \sa any(), Cwise::operator<()
79
77
  */
80
78
  template<typename Derived>
81
- inline bool DenseBase<Derived>::all() const
79
+ EIGEN_DEVICE_FUNC inline bool DenseBase<Derived>::all() const
82
80
  {
83
81
  typedef internal::evaluator<Derived> Evaluator;
84
82
  enum {
85
83
  unroll = SizeAtCompileTime != Dynamic
86
- && SizeAtCompileTime * (Evaluator::CoeffReadCost + NumTraits<Scalar>::AddCost) <= EIGEN_UNROLLING_LIMIT
84
+ && SizeAtCompileTime * (int(Evaluator::CoeffReadCost) + int(NumTraits<Scalar>::AddCost)) <= EIGEN_UNROLLING_LIMIT
87
85
  };
88
86
  Evaluator evaluator(derived());
89
87
  if(unroll)
90
- return internal::all_unroller<Evaluator, unroll ? int(SizeAtCompileTime) : Dynamic>::run(evaluator);
88
+ return internal::all_unroller<Evaluator, unroll ? int(SizeAtCompileTime) : Dynamic, internal::traits<Derived>::RowsAtCompileTime>::run(evaluator);
91
89
  else
92
90
  {
93
91
  for(Index j = 0; j < cols(); ++j)
@@ -102,16 +100,16 @@ inline bool DenseBase<Derived>::all() const
102
100
  * \sa all()
103
101
  */
104
102
  template<typename Derived>
105
- inline bool DenseBase<Derived>::any() const
103
+ EIGEN_DEVICE_FUNC inline bool DenseBase<Derived>::any() const
106
104
  {
107
105
  typedef internal::evaluator<Derived> Evaluator;
108
106
  enum {
109
107
  unroll = SizeAtCompileTime != Dynamic
110
- && SizeAtCompileTime * (Evaluator::CoeffReadCost + NumTraits<Scalar>::AddCost) <= EIGEN_UNROLLING_LIMIT
108
+ && SizeAtCompileTime * (int(Evaluator::CoeffReadCost) + int(NumTraits<Scalar>::AddCost)) <= EIGEN_UNROLLING_LIMIT
111
109
  };
112
110
  Evaluator evaluator(derived());
113
111
  if(unroll)
114
- return internal::any_unroller<Evaluator, unroll ? int(SizeAtCompileTime) : Dynamic>::run(evaluator);
112
+ return internal::any_unroller<Evaluator, unroll ? int(SizeAtCompileTime) : Dynamic, internal::traits<Derived>::RowsAtCompileTime>::run(evaluator);
115
113
  else
116
114
  {
117
115
  for(Index j = 0; j < cols(); ++j)
@@ -126,7 +124,7 @@ inline bool DenseBase<Derived>::any() const
126
124
  * \sa all(), any()
127
125
  */
128
126
  template<typename Derived>
129
- inline Eigen::Index DenseBase<Derived>::count() const
127
+ EIGEN_DEVICE_FUNC inline Eigen::Index DenseBase<Derived>::count() const
130
128
  {
131
129
  return derived().template cast<bool>().template cast<Index>().sum();
132
130
  }
@@ -33,6 +33,8 @@ struct CommaInitializer
33
33
  inline CommaInitializer(XprType& xpr, const Scalar& s)
34
34
  : m_xpr(xpr), m_row(0), m_col(1), m_currentBlockRows(1)
35
35
  {
36
+ eigen_assert(m_xpr.rows() > 0 && m_xpr.cols() > 0
37
+ && "Cannot comma-initialize a 0x0 matrix (operator<<)");
36
38
  m_xpr.coeffRef(0,0) = s;
37
39
  }
38
40
 
@@ -41,6 +43,8 @@ struct CommaInitializer
41
43
  inline CommaInitializer(XprType& xpr, const DenseBase<OtherDerived>& other)
42
44
  : m_xpr(xpr), m_row(0), m_col(other.cols()), m_currentBlockRows(other.rows())
43
45
  {
46
+ eigen_assert(m_xpr.rows() >= other.rows() && m_xpr.cols() >= other.cols()
47
+ && "Cannot comma-initialize a 0x0 matrix (operator<<)");
44
48
  m_xpr.block(0, 0, other.rows(), other.cols()) = other;
45
49
  }
46
50
 
@@ -103,7 +107,7 @@ struct CommaInitializer
103
107
  EIGEN_EXCEPTION_SPEC(Eigen::eigen_assert_exception)
104
108
  #endif
105
109
  {
106
- finished();
110
+ finished();
107
111
  }
108
112
 
109
113
  /** \returns the built matrix once all its coefficients have been set.
@@ -141,7 +145,7 @@ struct CommaInitializer
141
145
  * \sa CommaInitializer::finished(), class CommaInitializer
142
146
  */
143
147
  template<typename Derived>
144
- inline CommaInitializer<Derived> DenseBase<Derived>::operator<< (const Scalar& s)
148
+ EIGEN_DEVICE_FUNC inline CommaInitializer<Derived> DenseBase<Derived>::operator<< (const Scalar& s)
145
149
  {
146
150
  return CommaInitializer<Derived>(*static_cast<Derived*>(this), s);
147
151
  }
@@ -149,7 +153,7 @@ inline CommaInitializer<Derived> DenseBase<Derived>::operator<< (const Scalar& s
149
153
  /** \sa operator<<(const Scalar&) */
150
154
  template<typename Derived>
151
155
  template<typename OtherDerived>
152
- inline CommaInitializer<Derived>
156
+ EIGEN_DEVICE_FUNC inline CommaInitializer<Derived>
153
157
  DenseBase<Derived>::operator<<(const DenseBase<OtherDerived>& other)
154
158
  {
155
159
  return CommaInitializer<Derived>(*static_cast<Derived *>(this), other);