@smake/eigen 1.0.2 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (435) hide show
  1. package/README.md +1 -1
  2. package/eigen/Eigen/AccelerateSupport +52 -0
  3. package/eigen/Eigen/Cholesky +18 -21
  4. package/eigen/Eigen/CholmodSupport +28 -28
  5. package/eigen/Eigen/Core +235 -326
  6. package/eigen/Eigen/Eigenvalues +16 -14
  7. package/eigen/Eigen/Geometry +21 -24
  8. package/eigen/Eigen/Householder +9 -8
  9. package/eigen/Eigen/IterativeLinearSolvers +8 -4
  10. package/eigen/Eigen/Jacobi +14 -14
  11. package/eigen/Eigen/KLUSupport +43 -0
  12. package/eigen/Eigen/LU +16 -20
  13. package/eigen/Eigen/MetisSupport +12 -12
  14. package/eigen/Eigen/OrderingMethods +54 -54
  15. package/eigen/Eigen/PaStiXSupport +23 -20
  16. package/eigen/Eigen/PardisoSupport +17 -14
  17. package/eigen/Eigen/QR +18 -21
  18. package/eigen/Eigen/QtAlignedMalloc +5 -13
  19. package/eigen/Eigen/SPQRSupport +21 -14
  20. package/eigen/Eigen/SVD +23 -18
  21. package/eigen/Eigen/Sparse +1 -4
  22. package/eigen/Eigen/SparseCholesky +18 -23
  23. package/eigen/Eigen/SparseCore +18 -17
  24. package/eigen/Eigen/SparseLU +12 -8
  25. package/eigen/Eigen/SparseQR +16 -14
  26. package/eigen/Eigen/StdDeque +5 -2
  27. package/eigen/Eigen/StdList +5 -2
  28. package/eigen/Eigen/StdVector +5 -2
  29. package/eigen/Eigen/SuperLUSupport +30 -24
  30. package/eigen/Eigen/ThreadPool +80 -0
  31. package/eigen/Eigen/UmfPackSupport +19 -17
  32. package/eigen/Eigen/Version +14 -0
  33. package/eigen/Eigen/src/AccelerateSupport/AccelerateSupport.h +423 -0
  34. package/eigen/Eigen/src/AccelerateSupport/InternalHeaderCheck.h +3 -0
  35. package/eigen/Eigen/src/Cholesky/InternalHeaderCheck.h +3 -0
  36. package/eigen/Eigen/src/Cholesky/LDLT.h +377 -401
  37. package/eigen/Eigen/src/Cholesky/LLT.h +332 -360
  38. package/eigen/Eigen/src/Cholesky/LLT_LAPACKE.h +81 -56
  39. package/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +620 -521
  40. package/eigen/Eigen/src/CholmodSupport/InternalHeaderCheck.h +3 -0
  41. package/eigen/Eigen/src/Core/ArithmeticSequence.h +239 -0
  42. package/eigen/Eigen/src/Core/Array.h +341 -294
  43. package/eigen/Eigen/src/Core/ArrayBase.h +190 -203
  44. package/eigen/Eigen/src/Core/ArrayWrapper.h +127 -171
  45. package/eigen/Eigen/src/Core/Assign.h +30 -40
  46. package/eigen/Eigen/src/Core/AssignEvaluator.h +711 -589
  47. package/eigen/Eigen/src/Core/Assign_MKL.h +130 -125
  48. package/eigen/Eigen/src/Core/BandMatrix.h +268 -283
  49. package/eigen/Eigen/src/Core/Block.h +375 -398
  50. package/eigen/Eigen/src/Core/CommaInitializer.h +86 -97
  51. package/eigen/Eigen/src/Core/ConditionEstimator.h +51 -53
  52. package/eigen/Eigen/src/Core/CoreEvaluators.h +1356 -1026
  53. package/eigen/Eigen/src/Core/CoreIterators.h +73 -59
  54. package/eigen/Eigen/src/Core/CwiseBinaryOp.h +114 -132
  55. package/eigen/Eigen/src/Core/CwiseNullaryOp.h +726 -617
  56. package/eigen/Eigen/src/Core/CwiseTernaryOp.h +77 -103
  57. package/eigen/Eigen/src/Core/CwiseUnaryOp.h +56 -68
  58. package/eigen/Eigen/src/Core/CwiseUnaryView.h +132 -95
  59. package/eigen/Eigen/src/Core/DenseBase.h +632 -571
  60. package/eigen/Eigen/src/Core/DenseCoeffsBase.h +511 -624
  61. package/eigen/Eigen/src/Core/DenseStorage.h +512 -509
  62. package/eigen/Eigen/src/Core/DeviceWrapper.h +153 -0
  63. package/eigen/Eigen/src/Core/Diagonal.h +169 -210
  64. package/eigen/Eigen/src/Core/DiagonalMatrix.h +351 -274
  65. package/eigen/Eigen/src/Core/DiagonalProduct.h +12 -10
  66. package/eigen/Eigen/src/Core/Dot.h +172 -222
  67. package/eigen/Eigen/src/Core/EigenBase.h +75 -85
  68. package/eigen/Eigen/src/Core/Fill.h +138 -0
  69. package/eigen/Eigen/src/Core/FindCoeff.h +464 -0
  70. package/eigen/Eigen/src/Core/ForceAlignedAccess.h +90 -109
  71. package/eigen/Eigen/src/Core/Fuzzy.h +82 -105
  72. package/eigen/Eigen/src/Core/GeneralProduct.h +327 -263
  73. package/eigen/Eigen/src/Core/GenericPacketMath.h +1472 -360
  74. package/eigen/Eigen/src/Core/GlobalFunctions.h +194 -151
  75. package/eigen/Eigen/src/Core/IO.h +147 -139
  76. package/eigen/Eigen/src/Core/IndexedView.h +321 -0
  77. package/eigen/Eigen/src/Core/InnerProduct.h +260 -0
  78. package/eigen/Eigen/src/Core/InternalHeaderCheck.h +3 -0
  79. package/eigen/Eigen/src/Core/Inverse.h +56 -66
  80. package/eigen/Eigen/src/Core/Map.h +124 -142
  81. package/eigen/Eigen/src/Core/MapBase.h +256 -281
  82. package/eigen/Eigen/src/Core/MathFunctions.h +1620 -938
  83. package/eigen/Eigen/src/Core/MathFunctionsImpl.h +233 -71
  84. package/eigen/Eigen/src/Core/Matrix.h +491 -416
  85. package/eigen/Eigen/src/Core/MatrixBase.h +468 -453
  86. package/eigen/Eigen/src/Core/NestByValue.h +66 -85
  87. package/eigen/Eigen/src/Core/NoAlias.h +79 -85
  88. package/eigen/Eigen/src/Core/NumTraits.h +235 -148
  89. package/eigen/Eigen/src/Core/PartialReduxEvaluator.h +253 -0
  90. package/eigen/Eigen/src/Core/PermutationMatrix.h +461 -511
  91. package/eigen/Eigen/src/Core/PlainObjectBase.h +871 -894
  92. package/eigen/Eigen/src/Core/Product.h +260 -139
  93. package/eigen/Eigen/src/Core/ProductEvaluators.h +863 -714
  94. package/eigen/Eigen/src/Core/Random.h +161 -136
  95. package/eigen/Eigen/src/Core/RandomImpl.h +262 -0
  96. package/eigen/Eigen/src/Core/RealView.h +250 -0
  97. package/eigen/Eigen/src/Core/Redux.h +366 -336
  98. package/eigen/Eigen/src/Core/Ref.h +308 -209
  99. package/eigen/Eigen/src/Core/Replicate.h +94 -106
  100. package/eigen/Eigen/src/Core/Reshaped.h +398 -0
  101. package/eigen/Eigen/src/Core/ReturnByValue.h +49 -55
  102. package/eigen/Eigen/src/Core/Reverse.h +136 -145
  103. package/eigen/Eigen/src/Core/Select.h +70 -140
  104. package/eigen/Eigen/src/Core/SelfAdjointView.h +262 -285
  105. package/eigen/Eigen/src/Core/SelfCwiseBinaryOp.h +23 -20
  106. package/eigen/Eigen/src/Core/SkewSymmetricMatrix3.h +382 -0
  107. package/eigen/Eigen/src/Core/Solve.h +97 -111
  108. package/eigen/Eigen/src/Core/SolveTriangular.h +131 -129
  109. package/eigen/Eigen/src/Core/SolverBase.h +138 -101
  110. package/eigen/Eigen/src/Core/StableNorm.h +156 -160
  111. package/eigen/Eigen/src/Core/StlIterators.h +619 -0
  112. package/eigen/Eigen/src/Core/Stride.h +91 -88
  113. package/eigen/Eigen/src/Core/Swap.h +70 -38
  114. package/eigen/Eigen/src/Core/Transpose.h +295 -273
  115. package/eigen/Eigen/src/Core/Transpositions.h +272 -317
  116. package/eigen/Eigen/src/Core/TriangularMatrix.h +670 -755
  117. package/eigen/Eigen/src/Core/VectorBlock.h +59 -72
  118. package/eigen/Eigen/src/Core/VectorwiseOp.h +668 -630
  119. package/eigen/Eigen/src/Core/Visitor.h +480 -216
  120. package/eigen/Eigen/src/Core/arch/AVX/Complex.h +407 -293
  121. package/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +79 -388
  122. package/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +2935 -491
  123. package/eigen/Eigen/src/Core/arch/AVX/Reductions.h +353 -0
  124. package/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +279 -22
  125. package/eigen/Eigen/src/Core/arch/AVX512/Complex.h +472 -0
  126. package/eigen/Eigen/src/Core/arch/AVX512/GemmKernel.h +1245 -0
  127. package/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +85 -333
  128. package/eigen/Eigen/src/Core/arch/AVX512/MathFunctionsFP16.h +75 -0
  129. package/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +2490 -649
  130. package/eigen/Eigen/src/Core/arch/AVX512/PacketMathFP16.h +1413 -0
  131. package/eigen/Eigen/src/Core/arch/AVX512/Reductions.h +297 -0
  132. package/eigen/Eigen/src/Core/arch/AVX512/TrsmKernel.h +1167 -0
  133. package/eigen/Eigen/src/Core/arch/AVX512/TrsmUnrolls.inc +1219 -0
  134. package/eigen/Eigen/src/Core/arch/AVX512/TypeCasting.h +277 -0
  135. package/eigen/Eigen/src/Core/arch/AVX512/TypeCastingFP16.h +130 -0
  136. package/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +521 -298
  137. package/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +39 -280
  138. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +3686 -0
  139. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +205 -0
  140. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +901 -0
  141. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMAbfloat16.h +742 -0
  142. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixVectorProduct.inc +2818 -0
  143. package/eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h +3391 -723
  144. package/eigen/Eigen/src/Core/arch/AltiVec/TypeCasting.h +153 -0
  145. package/eigen/Eigen/src/Core/arch/Default/BFloat16.h +866 -0
  146. package/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +113 -14
  147. package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +2634 -0
  148. package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +227 -0
  149. package/eigen/Eigen/src/Core/arch/Default/Half.h +1091 -0
  150. package/eigen/Eigen/src/Core/arch/Default/Settings.h +11 -13
  151. package/eigen/Eigen/src/Core/arch/GPU/Complex.h +244 -0
  152. package/eigen/Eigen/src/Core/arch/GPU/MathFunctions.h +104 -0
  153. package/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +1712 -0
  154. package/eigen/Eigen/src/Core/arch/GPU/Tuple.h +268 -0
  155. package/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +77 -0
  156. package/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
  157. package/eigen/Eigen/src/Core/arch/HVX/PacketMath.h +1088 -0
  158. package/eigen/Eigen/src/Core/arch/LSX/Complex.h +520 -0
  159. package/eigen/Eigen/src/Core/arch/LSX/GeneralBlockPanelKernel.h +23 -0
  160. package/eigen/Eigen/src/Core/arch/LSX/MathFunctions.h +43 -0
  161. package/eigen/Eigen/src/Core/arch/LSX/PacketMath.h +2866 -0
  162. package/eigen/Eigen/src/Core/arch/LSX/TypeCasting.h +526 -0
  163. package/eigen/Eigen/src/Core/arch/MSA/Complex.h +620 -0
  164. package/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +379 -0
  165. package/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +1237 -0
  166. package/eigen/Eigen/src/Core/arch/NEON/Complex.h +531 -289
  167. package/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +243 -0
  168. package/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +50 -73
  169. package/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +5915 -579
  170. package/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +1642 -0
  171. package/eigen/Eigen/src/Core/arch/NEON/UnaryFunctors.h +57 -0
  172. package/eigen/Eigen/src/Core/arch/SSE/Complex.h +366 -334
  173. package/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +40 -514
  174. package/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +2164 -675
  175. package/eigen/Eigen/src/Core/arch/SSE/Reductions.h +324 -0
  176. package/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +188 -35
  177. package/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +48 -0
  178. package/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +674 -0
  179. package/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +52 -0
  180. package/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +227 -0
  181. package/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +303 -0
  182. package/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +576 -0
  183. package/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +83 -0
  184. package/eigen/Eigen/src/Core/arch/ZVector/Complex.h +434 -261
  185. package/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +160 -53
  186. package/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +1073 -605
  187. package/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +123 -117
  188. package/eigen/Eigen/src/Core/functors/BinaryFunctors.h +594 -322
  189. package/eigen/Eigen/src/Core/functors/NullaryFunctors.h +204 -118
  190. package/eigen/Eigen/src/Core/functors/StlFunctors.h +110 -97
  191. package/eigen/Eigen/src/Core/functors/TernaryFunctors.h +34 -7
  192. package/eigen/Eigen/src/Core/functors/UnaryFunctors.h +1158 -530
  193. package/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +2329 -1333
  194. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +328 -364
  195. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +191 -178
  196. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +85 -82
  197. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +154 -73
  198. package/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +396 -542
  199. package/eigen/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +80 -77
  200. package/eigen/Eigen/src/Core/products/Parallelizer.h +208 -92
  201. package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +331 -375
  202. package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +206 -224
  203. package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +139 -146
  204. package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +58 -61
  205. package/eigen/Eigen/src/Core/products/SelfadjointProduct.h +71 -71
  206. package/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h +48 -46
  207. package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h +294 -369
  208. package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +246 -238
  209. package/eigen/Eigen/src/Core/products/TriangularMatrixVector.h +244 -247
  210. package/eigen/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +212 -192
  211. package/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h +328 -275
  212. package/eigen/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +108 -109
  213. package/eigen/Eigen/src/Core/products/TriangularSolverVector.h +70 -93
  214. package/eigen/Eigen/src/Core/util/Assert.h +158 -0
  215. package/eigen/Eigen/src/Core/util/BlasUtil.h +413 -290
  216. package/eigen/Eigen/src/Core/util/ConfigureVectorization.h +543 -0
  217. package/eigen/Eigen/src/Core/util/Constants.h +314 -263
  218. package/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +130 -78
  219. package/eigen/Eigen/src/Core/util/EmulateArray.h +270 -0
  220. package/eigen/Eigen/src/Core/util/ForwardDeclarations.h +450 -224
  221. package/eigen/Eigen/src/Core/util/GpuHipCudaDefines.inc +101 -0
  222. package/eigen/Eigen/src/Core/util/GpuHipCudaUndefines.inc +45 -0
  223. package/eigen/Eigen/src/Core/util/IndexedViewHelper.h +487 -0
  224. package/eigen/Eigen/src/Core/util/IntegralConstant.h +279 -0
  225. package/eigen/Eigen/src/Core/util/MKL_support.h +39 -30
  226. package/eigen/Eigen/src/Core/util/Macros.h +939 -646
  227. package/eigen/Eigen/src/Core/util/MaxSizeVector.h +139 -0
  228. package/eigen/Eigen/src/Core/util/Memory.h +1042 -650
  229. package/eigen/Eigen/src/Core/util/Meta.h +618 -426
  230. package/eigen/Eigen/src/Core/util/MoreMeta.h +638 -0
  231. package/eigen/Eigen/src/Core/util/ReenableStupidWarnings.h +32 -19
  232. package/eigen/Eigen/src/Core/util/ReshapedHelper.h +51 -0
  233. package/eigen/Eigen/src/Core/util/Serializer.h +209 -0
  234. package/eigen/Eigen/src/Core/util/StaticAssert.h +51 -164
  235. package/eigen/Eigen/src/Core/util/SymbolicIndex.h +445 -0
  236. package/eigen/Eigen/src/Core/util/XprHelper.h +793 -538
  237. package/eigen/Eigen/src/Eigenvalues/ComplexEigenSolver.h +246 -277
  238. package/eigen/Eigen/src/Eigenvalues/ComplexSchur.h +299 -319
  239. package/eigen/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +52 -48
  240. package/eigen/Eigen/src/Eigenvalues/EigenSolver.h +413 -456
  241. package/eigen/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +309 -325
  242. package/eigen/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +157 -171
  243. package/eigen/Eigen/src/Eigenvalues/HessenbergDecomposition.h +292 -310
  244. package/eigen/Eigen/src/Eigenvalues/InternalHeaderCheck.h +3 -0
  245. package/eigen/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +91 -107
  246. package/eigen/Eigen/src/Eigenvalues/RealQZ.h +539 -606
  247. package/eigen/Eigen/src/Eigenvalues/RealSchur.h +348 -382
  248. package/eigen/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +41 -35
  249. package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +579 -600
  250. package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +47 -44
  251. package/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +434 -461
  252. package/eigen/Eigen/src/Geometry/AlignedBox.h +307 -214
  253. package/eigen/Eigen/src/Geometry/AngleAxis.h +135 -137
  254. package/eigen/Eigen/src/Geometry/EulerAngles.h +163 -74
  255. package/eigen/Eigen/src/Geometry/Homogeneous.h +289 -333
  256. package/eigen/Eigen/src/Geometry/Hyperplane.h +152 -161
  257. package/eigen/Eigen/src/Geometry/InternalHeaderCheck.h +3 -0
  258. package/eigen/Eigen/src/Geometry/OrthoMethods.h +168 -145
  259. package/eigen/Eigen/src/Geometry/ParametrizedLine.h +141 -104
  260. package/eigen/Eigen/src/Geometry/Quaternion.h +595 -497
  261. package/eigen/Eigen/src/Geometry/Rotation2D.h +110 -108
  262. package/eigen/Eigen/src/Geometry/RotationBase.h +148 -145
  263. package/eigen/Eigen/src/Geometry/Scaling.h +115 -90
  264. package/eigen/Eigen/src/Geometry/Transform.h +896 -953
  265. package/eigen/Eigen/src/Geometry/Translation.h +100 -98
  266. package/eigen/Eigen/src/Geometry/Umeyama.h +79 -84
  267. package/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +154 -0
  268. package/eigen/Eigen/src/Householder/BlockHouseholder.h +54 -42
  269. package/eigen/Eigen/src/Householder/Householder.h +104 -122
  270. package/eigen/Eigen/src/Householder/HouseholderSequence.h +416 -382
  271. package/eigen/Eigen/src/Householder/InternalHeaderCheck.h +3 -0
  272. package/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +153 -166
  273. package/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +127 -138
  274. package/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +95 -124
  275. package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +269 -267
  276. package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +246 -259
  277. package/eigen/Eigen/src/IterativeLinearSolvers/InternalHeaderCheck.h +3 -0
  278. package/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +218 -217
  279. package/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +80 -103
  280. package/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +59 -63
  281. package/eigen/Eigen/src/Jacobi/InternalHeaderCheck.h +3 -0
  282. package/eigen/Eigen/src/Jacobi/Jacobi.h +256 -291
  283. package/eigen/Eigen/src/KLUSupport/InternalHeaderCheck.h +3 -0
  284. package/eigen/Eigen/src/KLUSupport/KLUSupport.h +339 -0
  285. package/eigen/Eigen/src/LU/Determinant.h +60 -63
  286. package/eigen/Eigen/src/LU/FullPivLU.h +561 -626
  287. package/eigen/Eigen/src/LU/InternalHeaderCheck.h +3 -0
  288. package/eigen/Eigen/src/LU/InverseImpl.h +213 -275
  289. package/eigen/Eigen/src/LU/PartialPivLU.h +407 -435
  290. package/eigen/Eigen/src/LU/PartialPivLU_LAPACKE.h +54 -40
  291. package/eigen/Eigen/src/LU/arch/InverseSize4.h +353 -0
  292. package/eigen/Eigen/src/MetisSupport/InternalHeaderCheck.h +3 -0
  293. package/eigen/Eigen/src/MetisSupport/MetisSupport.h +81 -93
  294. package/eigen/Eigen/src/OrderingMethods/Amd.h +250 -282
  295. package/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +950 -1103
  296. package/eigen/Eigen/src/OrderingMethods/InternalHeaderCheck.h +3 -0
  297. package/eigen/Eigen/src/OrderingMethods/Ordering.h +111 -122
  298. package/eigen/Eigen/src/PaStiXSupport/InternalHeaderCheck.h +3 -0
  299. package/eigen/Eigen/src/PaStiXSupport/PaStiXSupport.h +524 -570
  300. package/eigen/Eigen/src/PardisoSupport/InternalHeaderCheck.h +3 -0
  301. package/eigen/Eigen/src/PardisoSupport/PardisoSupport.h +385 -429
  302. package/eigen/Eigen/src/QR/ColPivHouseholderQR.h +494 -473
  303. package/eigen/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +120 -56
  304. package/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +223 -137
  305. package/eigen/Eigen/src/QR/FullPivHouseholderQR.h +517 -460
  306. package/eigen/Eigen/src/QR/HouseholderQR.h +412 -278
  307. package/eigen/Eigen/src/QR/HouseholderQR_LAPACKE.h +32 -23
  308. package/eigen/Eigen/src/QR/InternalHeaderCheck.h +3 -0
  309. package/eigen/Eigen/src/SPQRSupport/InternalHeaderCheck.h +3 -0
  310. package/eigen/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +263 -261
  311. package/eigen/Eigen/src/SVD/BDCSVD.h +872 -679
  312. package/eigen/Eigen/src/SVD/BDCSVD_LAPACKE.h +174 -0
  313. package/eigen/Eigen/src/SVD/InternalHeaderCheck.h +3 -0
  314. package/eigen/Eigen/src/SVD/JacobiSVD.h +585 -543
  315. package/eigen/Eigen/src/SVD/JacobiSVD_LAPACKE.h +85 -49
  316. package/eigen/Eigen/src/SVD/SVDBase.h +281 -160
  317. package/eigen/Eigen/src/SVD/UpperBidiagonalization.h +202 -237
  318. package/eigen/Eigen/src/SparseCholesky/InternalHeaderCheck.h +3 -0
  319. package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +769 -590
  320. package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +318 -129
  321. package/eigen/Eigen/src/SparseCore/AmbiVector.h +202 -251
  322. package/eigen/Eigen/src/SparseCore/CompressedStorage.h +184 -236
  323. package/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +140 -184
  324. package/eigen/Eigen/src/SparseCore/InternalHeaderCheck.h +3 -0
  325. package/eigen/Eigen/src/SparseCore/SparseAssign.h +174 -111
  326. package/eigen/Eigen/src/SparseCore/SparseBlock.h +408 -477
  327. package/eigen/Eigen/src/SparseCore/SparseColEtree.h +100 -112
  328. package/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +531 -280
  329. package/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +559 -347
  330. package/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +100 -108
  331. package/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +185 -191
  332. package/eigen/Eigen/src/SparseCore/SparseDiagonalProduct.h +71 -71
  333. package/eigen/Eigen/src/SparseCore/SparseDot.h +49 -47
  334. package/eigen/Eigen/src/SparseCore/SparseFuzzy.h +13 -11
  335. package/eigen/Eigen/src/SparseCore/SparseMap.h +243 -253
  336. package/eigen/Eigen/src/SparseCore/SparseMatrix.h +1614 -1142
  337. package/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +403 -357
  338. package/eigen/Eigen/src/SparseCore/SparsePermutation.h +186 -115
  339. package/eigen/Eigen/src/SparseCore/SparseProduct.h +100 -91
  340. package/eigen/Eigen/src/SparseCore/SparseRedux.h +22 -24
  341. package/eigen/Eigen/src/SparseCore/SparseRef.h +268 -295
  342. package/eigen/Eigen/src/SparseCore/SparseSelfAdjointView.h +371 -414
  343. package/eigen/Eigen/src/SparseCore/SparseSolverBase.h +78 -87
  344. package/eigen/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +81 -95
  345. package/eigen/Eigen/src/SparseCore/SparseTranspose.h +62 -71
  346. package/eigen/Eigen/src/SparseCore/SparseTriangularView.h +132 -144
  347. package/eigen/Eigen/src/SparseCore/SparseUtil.h +146 -115
  348. package/eigen/Eigen/src/SparseCore/SparseVector.h +426 -372
  349. package/eigen/Eigen/src/SparseCore/SparseView.h +164 -193
  350. package/eigen/Eigen/src/SparseCore/TriangularSolver.h +129 -170
  351. package/eigen/Eigen/src/SparseLU/InternalHeaderCheck.h +3 -0
  352. package/eigen/Eigen/src/SparseLU/SparseLU.h +814 -618
  353. package/eigen/Eigen/src/SparseLU/SparseLUImpl.h +61 -48
  354. package/eigen/Eigen/src/SparseLU/SparseLU_Memory.h +102 -118
  355. package/eigen/Eigen/src/SparseLU/SparseLU_Structs.h +38 -35
  356. package/eigen/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +273 -255
  357. package/eigen/Eigen/src/SparseLU/SparseLU_Utils.h +44 -49
  358. package/eigen/Eigen/src/SparseLU/SparseLU_column_bmod.h +104 -108
  359. package/eigen/Eigen/src/SparseLU/SparseLU_column_dfs.h +90 -101
  360. package/eigen/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +57 -58
  361. package/eigen/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +43 -55
  362. package/eigen/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +74 -71
  363. package/eigen/Eigen/src/SparseLU/SparseLU_panel_bmod.h +125 -133
  364. package/eigen/Eigen/src/SparseLU/SparseLU_panel_dfs.h +136 -159
  365. package/eigen/Eigen/src/SparseLU/SparseLU_pivotL.h +51 -52
  366. package/eigen/Eigen/src/SparseLU/SparseLU_pruneL.h +67 -73
  367. package/eigen/Eigen/src/SparseLU/SparseLU_relax_snode.h +24 -26
  368. package/eigen/Eigen/src/SparseQR/InternalHeaderCheck.h +3 -0
  369. package/eigen/Eigen/src/SparseQR/SparseQR.h +451 -490
  370. package/eigen/Eigen/src/StlSupport/StdDeque.h +28 -105
  371. package/eigen/Eigen/src/StlSupport/StdList.h +28 -84
  372. package/eigen/Eigen/src/StlSupport/StdVector.h +28 -108
  373. package/eigen/Eigen/src/StlSupport/details.h +48 -50
  374. package/eigen/Eigen/src/SuperLUSupport/InternalHeaderCheck.h +3 -0
  375. package/eigen/Eigen/src/SuperLUSupport/SuperLUSupport.h +634 -732
  376. package/eigen/Eigen/src/ThreadPool/Barrier.h +70 -0
  377. package/eigen/Eigen/src/ThreadPool/CoreThreadPoolDevice.h +336 -0
  378. package/eigen/Eigen/src/ThreadPool/EventCount.h +241 -0
  379. package/eigen/Eigen/src/ThreadPool/ForkJoin.h +140 -0
  380. package/eigen/Eigen/src/ThreadPool/InternalHeaderCheck.h +4 -0
  381. package/eigen/Eigen/src/ThreadPool/NonBlockingThreadPool.h +587 -0
  382. package/eigen/Eigen/src/ThreadPool/RunQueue.h +230 -0
  383. package/eigen/Eigen/src/ThreadPool/ThreadCancel.h +21 -0
  384. package/eigen/Eigen/src/ThreadPool/ThreadEnvironment.h +43 -0
  385. package/eigen/Eigen/src/ThreadPool/ThreadLocal.h +289 -0
  386. package/eigen/Eigen/src/ThreadPool/ThreadPoolInterface.h +50 -0
  387. package/eigen/Eigen/src/ThreadPool/ThreadYield.h +16 -0
  388. package/eigen/Eigen/src/UmfPackSupport/InternalHeaderCheck.h +3 -0
  389. package/eigen/Eigen/src/UmfPackSupport/UmfPackSupport.h +480 -380
  390. package/eigen/Eigen/src/misc/Image.h +41 -43
  391. package/eigen/Eigen/src/misc/InternalHeaderCheck.h +3 -0
  392. package/eigen/Eigen/src/misc/Kernel.h +39 -41
  393. package/eigen/Eigen/src/misc/RealSvd2x2.h +19 -21
  394. package/eigen/Eigen/src/misc/blas.h +83 -426
  395. package/eigen/Eigen/src/misc/lapacke.h +9976 -16182
  396. package/eigen/Eigen/src/misc/lapacke_helpers.h +163 -0
  397. package/eigen/Eigen/src/misc/lapacke_mangling.h +4 -5
  398. package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.inc +344 -0
  399. package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.inc +544 -0
  400. package/eigen/Eigen/src/plugins/BlockMethods.inc +1370 -0
  401. package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.inc +116 -0
  402. package/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.inc +167 -0
  403. package/eigen/Eigen/src/plugins/IndexedViewMethods.inc +192 -0
  404. package/eigen/Eigen/src/plugins/InternalHeaderCheck.inc +3 -0
  405. package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.inc +331 -0
  406. package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.inc +118 -0
  407. package/eigen/Eigen/src/plugins/ReshapedMethods.inc +133 -0
  408. package/lib/LibEigen.d.ts +4 -0
  409. package/lib/LibEigen.js +14 -0
  410. package/lib/index.d.ts +1 -1
  411. package/lib/index.js +7 -3
  412. package/package.json +2 -10
  413. package/eigen/Eigen/CMakeLists.txt +0 -19
  414. package/eigen/Eigen/src/Core/BooleanRedux.h +0 -164
  415. package/eigen/Eigen/src/Core/arch/CUDA/Complex.h +0 -103
  416. package/eigen/Eigen/src/Core/arch/CUDA/Half.h +0 -675
  417. package/eigen/Eigen/src/Core/arch/CUDA/MathFunctions.h +0 -91
  418. package/eigen/Eigen/src/Core/arch/CUDA/PacketMath.h +0 -333
  419. package/eigen/Eigen/src/Core/arch/CUDA/PacketMathHalf.h +0 -1124
  420. package/eigen/Eigen/src/Core/arch/CUDA/TypeCasting.h +0 -212
  421. package/eigen/Eigen/src/Core/util/NonMPL2.h +0 -3
  422. package/eigen/Eigen/src/Geometry/arch/Geometry_SSE.h +0 -161
  423. package/eigen/Eigen/src/LU/arch/Inverse_SSE.h +0 -338
  424. package/eigen/Eigen/src/SparseCore/MappedSparseMatrix.h +0 -67
  425. package/eigen/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +0 -280
  426. package/eigen/Eigen/src/misc/lapack.h +0 -152
  427. package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h +0 -332
  428. package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +0 -552
  429. package/eigen/Eigen/src/plugins/BlockMethods.h +0 -1058
  430. package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.h +0 -115
  431. package/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.h +0 -163
  432. package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +0 -152
  433. package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +0 -85
  434. package/lib/eigen.d.ts +0 -2
  435. package/lib/eigen.js +0 -15
@@ -10,320 +10,367 @@
10
10
  #ifndef EIGEN_ARRAY_H
11
11
  #define EIGEN_ARRAY_H
12
12
 
13
+ // IWYU pragma: private
14
+ #include "./InternalHeaderCheck.h"
15
+
13
16
  namespace Eigen {
14
17
 
15
18
  namespace internal {
16
- template<typename _Scalar, int _Rows, int _Cols, int _Options, int _MaxRows, int _MaxCols>
17
- struct traits<Array<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols> > : traits<Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols> >
18
- {
19
+ template <typename Scalar_, int Rows_, int Cols_, int Options_, int MaxRows_, int MaxCols_>
20
+ struct traits<Array<Scalar_, Rows_, Cols_, Options_, MaxRows_, MaxCols_>>
21
+ : traits<Matrix<Scalar_, Rows_, Cols_, Options_, MaxRows_, MaxCols_>> {
19
22
  typedef ArrayXpr XprKind;
20
- typedef ArrayBase<Array<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols> > XprBase;
23
+ typedef ArrayBase<Array<Scalar_, Rows_, Cols_, Options_, MaxRows_, MaxCols_>> XprBase;
21
24
  };
22
- }
25
+ } // namespace internal
23
26
 
24
27
  /** \class Array
25
- * \ingroup Core_Module
26
- *
27
- * \brief General-purpose arrays with easy API for coefficient-wise operations
28
- *
29
- * The %Array class is very similar to the Matrix class. It provides
30
- * general-purpose one- and two-dimensional arrays. The difference between the
31
- * %Array and the %Matrix class is primarily in the API: the API for the
32
- * %Array class provides easy access to coefficient-wise operations, while the
33
- * API for the %Matrix class provides easy access to linear-algebra
34
- * operations.
35
- *
36
- * See documentation of class Matrix for detailed information on the template parameters
37
- * storage layout.
38
- *
39
- * This class can be extended with the help of the plugin mechanism described on the page
40
- * \ref TopicCustomizing_Plugins by defining the preprocessor symbol \c EIGEN_ARRAY_PLUGIN.
41
- *
42
- * \sa \blank \ref TutorialArrayClass, \ref TopicClassHierarchy
43
- */
44
- template<typename _Scalar, int _Rows, int _Cols, int _Options, int _MaxRows, int _MaxCols>
45
- class Array
46
- : public PlainObjectBase<Array<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols> >
47
- {
48
- public:
49
-
50
- typedef PlainObjectBase<Array> Base;
51
- EIGEN_DENSE_PUBLIC_INTERFACE(Array)
52
-
53
- enum { Options = _Options };
54
- typedef typename Base::PlainObject PlainObject;
55
-
56
- protected:
57
- template <typename Derived, typename OtherDerived, bool IsVector>
58
- friend struct internal::conservative_resize_like_impl;
59
-
60
- using Base::m_storage;
61
-
62
- public:
63
-
64
- using Base::base;
65
- using Base::coeff;
66
- using Base::coeffRef;
67
-
68
- /**
69
- * The usage of
70
- * using Base::operator=;
71
- * fails on MSVC. Since the code below is working with GCC and MSVC, we skipped
72
- * the usage of 'using'. This should be done only for operator=.
73
- */
74
- template<typename OtherDerived>
75
- EIGEN_DEVICE_FUNC
76
- EIGEN_STRONG_INLINE Array& operator=(const EigenBase<OtherDerived> &other)
77
- {
78
- return Base::operator=(other);
79
- }
80
-
81
- /** Set all the entries to \a value.
82
- * \sa DenseBase::setConstant(), DenseBase::fill()
83
- */
84
- /* This overload is needed because the usage of
85
- * using Base::operator=;
86
- * fails on MSVC. Since the code below is working with GCC and MSVC, we skipped
87
- * the usage of 'using'. This should be done only for operator=.
88
- */
89
- EIGEN_DEVICE_FUNC
90
- EIGEN_STRONG_INLINE Array& operator=(const Scalar &value)
91
- {
92
- Base::setConstant(value);
93
- return *this;
94
- }
95
-
96
- /** Copies the value of the expression \a other into \c *this with automatic resizing.
97
- *
98
- * *this might be resized to match the dimensions of \a other. If *this was a null matrix (not already initialized),
99
- * it will be initialized.
100
- *
101
- * Note that copying a row-vector into a vector (and conversely) is allowed.
102
- * The resizing, if any, is then done in the appropriate way so that row-vectors
103
- * remain row-vectors and vectors remain vectors.
104
- */
105
- template<typename OtherDerived>
106
- EIGEN_DEVICE_FUNC
107
- EIGEN_STRONG_INLINE Array& operator=(const DenseBase<OtherDerived>& other)
108
- {
109
- return Base::_set(other);
110
- }
111
-
112
- /** This is a special case of the templated operator=. Its purpose is to
113
- * prevent a default operator= from hiding the templated operator=.
114
- */
115
- EIGEN_DEVICE_FUNC
116
- EIGEN_STRONG_INLINE Array& operator=(const Array& other)
117
- {
118
- return Base::_set(other);
119
- }
120
-
121
- /** Default constructor.
122
- *
123
- * For fixed-size matrices, does nothing.
124
- *
125
- * For dynamic-size matrices, creates an empty matrix of size 0. Does not allocate any array. Such a matrix
126
- * is called a null matrix. This constructor is the unique way to create null matrices: resizing
127
- * a matrix to 0 is not supported.
128
- *
129
- * \sa resize(Index,Index)
130
- */
131
- EIGEN_DEVICE_FUNC
132
- EIGEN_STRONG_INLINE Array() : Base()
133
- {
134
- Base::_check_template_params();
135
- EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED
136
- }
137
-
138
- #ifndef EIGEN_PARSED_BY_DOXYGEN
139
- // FIXME is it still needed ??
140
- /** \internal */
141
- EIGEN_DEVICE_FUNC
142
- Array(internal::constructor_without_unaligned_array_assert)
143
- : Base(internal::constructor_without_unaligned_array_assert())
144
- {
145
- Base::_check_template_params();
146
- EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED
147
- }
28
+ * \ingroup Core_Module
29
+ *
30
+ * \brief General-purpose arrays with easy API for coefficient-wise operations
31
+ *
32
+ * The %Array class is very similar to the Matrix class. It provides
33
+ * general-purpose one- and two-dimensional arrays. The difference between the
34
+ * %Array and the %Matrix class is primarily in the API: the API for the
35
+ * %Array class provides easy access to coefficient-wise operations, while the
36
+ * API for the %Matrix class provides easy access to linear-algebra
37
+ * operations.
38
+ *
39
+ * See documentation of class Matrix for detailed information on the template parameters
40
+ * storage layout.
41
+ *
42
+ * This class can be extended with the help of the plugin mechanism described on the page
43
+ * \ref TopicCustomizing_Plugins by defining the preprocessor symbol \c EIGEN_ARRAY_PLUGIN.
44
+ *
45
+ * \sa \blank \ref TutorialArrayClass, \ref TopicClassHierarchy
46
+ */
47
+ template <typename Scalar_, int Rows_, int Cols_, int Options_, int MaxRows_, int MaxCols_>
48
+ class Array : public PlainObjectBase<Array<Scalar_, Rows_, Cols_, Options_, MaxRows_, MaxCols_>> {
49
+ public:
50
+ typedef PlainObjectBase<Array> Base;
51
+ EIGEN_DENSE_PUBLIC_INTERFACE(Array)
52
+
53
+ enum { Options = Options_ };
54
+ typedef typename Base::PlainObject PlainObject;
55
+
56
+ protected:
57
+ template <typename Derived, typename OtherDerived, bool IsVector>
58
+ friend struct internal::conservative_resize_like_impl;
59
+
60
+ using Base::m_storage;
61
+
62
+ public:
63
+ using Base::base;
64
+ using Base::coeff;
65
+ using Base::coeffRef;
66
+
67
+ /**
68
+ * The usage of
69
+ * using Base::operator=;
70
+ * fails on MSVC. Since the code below is working with GCC and MSVC, we skipped
71
+ * the usage of 'using'. This should be done only for operator=.
72
+ */
73
+ template <typename OtherDerived>
74
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Array& operator=(const EigenBase<OtherDerived>& other) {
75
+ return Base::operator=(other);
76
+ }
77
+
78
+ /** Set all the entries to \a value.
79
+ * \sa DenseBase::setConstant(), DenseBase::fill()
80
+ */
81
+ /* This overload is needed because the usage of
82
+ * using Base::operator=;
83
+ * fails on MSVC. Since the code below is working with GCC and MSVC, we skipped
84
+ * the usage of 'using'. This should be done only for operator=.
85
+ */
86
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Array& operator=(const Scalar& value) {
87
+ Base::setConstant(value);
88
+ return *this;
89
+ }
90
+
91
+ /** Copies the value of the expression \a other into \c *this with automatic resizing.
92
+ *
93
+ * *this might be resized to match the dimensions of \a other. If *this was a null matrix (not already initialized),
94
+ * it will be initialized.
95
+ *
96
+ * Note that copying a row-vector into a vector (and conversely) is allowed.
97
+ * The resizing, if any, is then done in the appropriate way so that row-vectors
98
+ * remain row-vectors and vectors remain vectors.
99
+ */
100
+ template <typename OtherDerived>
101
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Array& operator=(const DenseBase<OtherDerived>& other) {
102
+ return Base::_set(other);
103
+ }
104
+
105
+ /**
106
+ * \brief Assigns arrays to each other.
107
+ *
108
+ * \note This is a special case of the templated operator=. Its purpose is
109
+ * to prevent a default operator= from hiding the templated operator=.
110
+ *
111
+ * \callgraph
112
+ */
113
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Array& operator=(const Array& other) { return Base::_set(other); }
114
+
115
+ /** Default constructor.
116
+ *
117
+ * For fixed-size matrices, does nothing.
118
+ *
119
+ * For dynamic-size matrices, creates an empty matrix of size 0. Does not allocate any array. Such a matrix
120
+ * is called a null matrix. This constructor is the unique way to create null matrices: resizing
121
+ * a matrix to 0 is not supported.
122
+ *
123
+ * \sa resize(Index,Index)
124
+ */
125
+ #ifdef EIGEN_INITIALIZE_COEFFS
126
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr Array() : Base() { EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED }
127
+ #else
128
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr Array() = default;
148
129
  #endif
130
+ /** \brief Move constructor */
131
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr Array(Array&&) = default;
132
+ EIGEN_DEVICE_FUNC Array& operator=(Array&& other) noexcept(std::is_nothrow_move_assignable<Scalar>::value) {
133
+ Base::operator=(std::move(other));
134
+ return *this;
135
+ }
136
+
137
+ /** \brief Construct a row of column vector with fixed size from an arbitrary number of coefficients.
138
+ *
139
+ * \only_for_vectors
140
+ *
141
+ * This constructor is for 1D array or vectors with more than 4 coefficients.
142
+ *
143
+ * \warning To construct a column (resp. row) vector of fixed length, the number of values passed to this
144
+ * constructor must match the the fixed number of rows (resp. columns) of \c *this.
145
+ *
146
+ *
147
+ * Example: \include Array_variadic_ctor_cxx11.cpp
148
+ * Output: \verbinclude Array_variadic_ctor_cxx11.out
149
+ *
150
+ * \sa Array(const std::initializer_list<std::initializer_list<Scalar>>&)
151
+ * \sa Array(const Scalar&), Array(const Scalar&,const Scalar&)
152
+ */
153
+ template <typename... ArgTypes>
154
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Array(const Scalar& a0, const Scalar& a1, const Scalar& a2, const Scalar& a3,
155
+ const ArgTypes&... args)
156
+ : Base(a0, a1, a2, a3, args...) {}
157
+
158
+ /** \brief Constructs an array and initializes it from the coefficients given as initializer-lists grouped by row.
159
+ * \cpp11
160
+ *
161
+ * In the general case, the constructor takes a list of rows, each row being represented as a list of coefficients:
162
+ *
163
+ * Example: \include Array_initializer_list_23_cxx11.cpp
164
+ * Output: \verbinclude Array_initializer_list_23_cxx11.out
165
+ *
166
+ * Each of the inner initializer lists must contain the exact same number of elements, otherwise an assertion is
167
+ * triggered.
168
+ *
169
+ * In the case of a compile-time column 1D array, implicit transposition from a single row is allowed.
170
+ * Therefore <code> Array<int,Dynamic,1>{{1,2,3,4,5}}</code> is legal and the more verbose syntax
171
+ * <code>Array<int,Dynamic,1>{{1},{2},{3},{4},{5}}</code> can be avoided:
172
+ *
173
+ * Example: \include Array_initializer_list_vector_cxx11.cpp
174
+ * Output: \verbinclude Array_initializer_list_vector_cxx11.out
175
+ *
176
+ * In the case of fixed-sized arrays, the initializer list sizes must exactly match the array sizes,
177
+ * and implicit transposition is allowed for compile-time 1D arrays only.
178
+ *
179
+ * \sa Array(const Scalar& a0, const Scalar& a1, const Scalar& a2, const Scalar& a3, const ArgTypes&... args)
180
+ */
181
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr Array(
182
+ const std::initializer_list<std::initializer_list<Scalar>>& list)
183
+ : Base(list) {}
149
184
 
150
- #if EIGEN_HAS_RVALUE_REFERENCES
151
- EIGEN_DEVICE_FUNC
152
- Array(Array&& other) EIGEN_NOEXCEPT_IF(std::is_nothrow_move_constructible<Scalar>::value)
153
- : Base(std::move(other))
154
- {
155
- Base::_check_template_params();
156
- }
157
- EIGEN_DEVICE_FUNC
158
- Array& operator=(Array&& other) EIGEN_NOEXCEPT_IF(std::is_nothrow_move_assignable<Scalar>::value)
159
- {
160
- other.swap(*this);
161
- return *this;
162
- }
185
+ #ifndef EIGEN_PARSED_BY_DOXYGEN
186
+ template <typename T>
187
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE explicit Array(const T& x) {
188
+ Base::template _init1<T>(x);
189
+ }
190
+
191
+ template <typename T0, typename T1>
192
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Array(const T0& val0, const T1& val1) {
193
+ this->template _init2<T0, T1>(val0, val1);
194
+ }
195
+
196
+ #else
197
+ /** \brief Constructs a fixed-sized array initialized with coefficients starting at \a data */
198
+ EIGEN_DEVICE_FUNC explicit Array(const Scalar* data);
199
+ /** Constructs a vector or row-vector with given dimension. \only_for_vectors
200
+ *
201
+ * Note that this is only useful for dynamic-size vectors. For fixed-size vectors,
202
+ * it is redundant to pass the dimension here, so it makes more sense to use the default
203
+ * constructor Array() instead.
204
+ */
205
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE explicit Array(Index dim);
206
+ /** constructs an initialized 1x1 Array with the given coefficient
207
+ * \sa const Scalar& a0, const Scalar& a1, const Scalar& a2, const Scalar& a3, const ArgTypes&... args */
208
+ Array(const Scalar& value);
209
+ /** constructs an uninitialized array with \a rows rows and \a cols columns.
210
+ *
211
+ * This is useful for dynamic-size arrays. For fixed-size arrays,
212
+ * it is redundant to pass these parameters, so one should use the default constructor
213
+ * Array() instead. */
214
+ Array(Index rows, Index cols);
215
+ /** constructs an initialized 2D vector with given coefficients
216
+ * \sa Array(const Scalar& a0, const Scalar& a1, const Scalar& a2, const Scalar& a3, const ArgTypes&... args) */
217
+ Array(const Scalar& val0, const Scalar& val1);
218
+ #endif // end EIGEN_PARSED_BY_DOXYGEN
219
+
220
+ /** constructs an initialized 3D vector with given coefficients
221
+ * \sa Array(const Scalar& a0, const Scalar& a1, const Scalar& a2, const Scalar& a3, const ArgTypes&... args)
222
+ */
223
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Array(const Scalar& val0, const Scalar& val1, const Scalar& val2) {
224
+ EIGEN_STATIC_ASSERT_VECTOR_SPECIFIC_SIZE(Array, 3)
225
+ m_storage.data()[0] = val0;
226
+ m_storage.data()[1] = val1;
227
+ m_storage.data()[2] = val2;
228
+ }
229
+ /** constructs an initialized 4D vector with given coefficients
230
+ * \sa Array(const Scalar& a0, const Scalar& a1, const Scalar& a2, const Scalar& a3, const ArgTypes&... args)
231
+ */
232
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Array(const Scalar& val0, const Scalar& val1, const Scalar& val2,
233
+ const Scalar& val3) {
234
+ EIGEN_STATIC_ASSERT_VECTOR_SPECIFIC_SIZE(Array, 4)
235
+ m_storage.data()[0] = val0;
236
+ m_storage.data()[1] = val1;
237
+ m_storage.data()[2] = val2;
238
+ m_storage.data()[3] = val3;
239
+ }
240
+
241
+ /** Copy constructor */
242
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr Array(const Array&) = default;
243
+
244
+ private:
245
+ struct PrivateType {};
246
+
247
+ public:
248
+ /** \sa MatrixBase::operator=(const EigenBase<OtherDerived>&) */
249
+ template <typename OtherDerived>
250
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Array(
251
+ const EigenBase<OtherDerived>& other,
252
+ std::enable_if_t<internal::is_convertible<typename OtherDerived::Scalar, Scalar>::value, PrivateType> =
253
+ PrivateType())
254
+ : Base(other.derived()) {}
255
+
256
+ EIGEN_DEVICE_FUNC constexpr Index innerStride() const noexcept { return 1; }
257
+ EIGEN_DEVICE_FUNC constexpr Index outerStride() const noexcept { return this->innerSize(); }
258
+
259
+ #ifdef EIGEN_ARRAY_PLUGIN
260
+ #include EIGEN_ARRAY_PLUGIN
163
261
  #endif
164
262
 
165
- #ifndef EIGEN_PARSED_BY_DOXYGEN
166
- template<typename T>
167
- EIGEN_DEVICE_FUNC
168
- EIGEN_STRONG_INLINE explicit Array(const T& x)
169
- {
170
- Base::_check_template_params();
171
- Base::template _init1<T>(x);
172
- }
173
-
174
- template<typename T0, typename T1>
175
- EIGEN_DEVICE_FUNC
176
- EIGEN_STRONG_INLINE Array(const T0& val0, const T1& val1)
177
- {
178
- Base::_check_template_params();
179
- this->template _init2<T0,T1>(val0, val1);
180
- }
181
- #else
182
- /** \brief Constructs a fixed-sized array initialized with coefficients starting at \a data */
183
- EIGEN_DEVICE_FUNC explicit Array(const Scalar *data);
184
- /** Constructs a vector or row-vector with given dimension. \only_for_vectors
185
- *
186
- * Note that this is only useful for dynamic-size vectors. For fixed-size vectors,
187
- * it is redundant to pass the dimension here, so it makes more sense to use the default
188
- * constructor Array() instead.
189
- */
190
- EIGEN_DEVICE_FUNC
191
- EIGEN_STRONG_INLINE explicit Array(Index dim);
192
- /** constructs an initialized 1x1 Array with the given coefficient */
193
- Array(const Scalar& value);
194
- /** constructs an uninitialized array with \a rows rows and \a cols columns.
195
- *
196
- * This is useful for dynamic-size arrays. For fixed-size arrays,
197
- * it is redundant to pass these parameters, so one should use the default constructor
198
- * Array() instead. */
199
- Array(Index rows, Index cols);
200
- /** constructs an initialized 2D vector with given coefficients */
201
- Array(const Scalar& val0, const Scalar& val1);
202
- #endif
203
-
204
- /** constructs an initialized 3D vector with given coefficients */
205
- EIGEN_DEVICE_FUNC
206
- EIGEN_STRONG_INLINE Array(const Scalar& val0, const Scalar& val1, const Scalar& val2)
207
- {
208
- Base::_check_template_params();
209
- EIGEN_STATIC_ASSERT_VECTOR_SPECIFIC_SIZE(Array, 3)
210
- m_storage.data()[0] = val0;
211
- m_storage.data()[1] = val1;
212
- m_storage.data()[2] = val2;
213
- }
214
- /** constructs an initialized 4D vector with given coefficients */
215
- EIGEN_DEVICE_FUNC
216
- EIGEN_STRONG_INLINE Array(const Scalar& val0, const Scalar& val1, const Scalar& val2, const Scalar& val3)
217
- {
218
- Base::_check_template_params();
219
- EIGEN_STATIC_ASSERT_VECTOR_SPECIFIC_SIZE(Array, 4)
220
- m_storage.data()[0] = val0;
221
- m_storage.data()[1] = val1;
222
- m_storage.data()[2] = val2;
223
- m_storage.data()[3] = val3;
224
- }
225
-
226
- /** Copy constructor */
227
- EIGEN_DEVICE_FUNC
228
- EIGEN_STRONG_INLINE Array(const Array& other)
229
- : Base(other)
230
- { }
231
-
232
- private:
233
- struct PrivateType {};
234
- public:
235
-
236
- /** \sa MatrixBase::operator=(const EigenBase<OtherDerived>&) */
237
- template<typename OtherDerived>
238
- EIGEN_DEVICE_FUNC
239
- EIGEN_STRONG_INLINE Array(const EigenBase<OtherDerived> &other,
240
- typename internal::enable_if<internal::is_convertible<typename OtherDerived::Scalar,Scalar>::value,
241
- PrivateType>::type = PrivateType())
242
- : Base(other.derived())
243
- { }
244
-
245
- EIGEN_DEVICE_FUNC inline Index innerStride() const { return 1; }
246
- EIGEN_DEVICE_FUNC inline Index outerStride() const { return this->innerSize(); }
247
-
248
- #ifdef EIGEN_ARRAY_PLUGIN
249
- #include EIGEN_ARRAY_PLUGIN
250
- #endif
251
-
252
- private:
253
-
254
- template<typename MatrixType, typename OtherDerived, bool SwapPointers>
255
- friend struct internal::matrix_swap_impl;
263
+ private:
264
+ template <typename MatrixType, typename OtherDerived, bool SwapPointers>
265
+ friend struct internal::matrix_swap_impl;
256
266
  };
257
267
 
258
268
  /** \defgroup arraytypedefs Global array typedefs
259
- * \ingroup Core_Module
260
- *
261
- * Eigen defines several typedef shortcuts for most common 1D and 2D array types.
262
- *
263
- * The general patterns are the following:
264
- *
265
- * \c ArrayRowsColsType where \c Rows and \c Cols can be \c 2,\c 3,\c 4 for fixed size square matrices or \c X for dynamic size,
266
- * and where \c Type can be \c i for integer, \c f for float, \c d for double, \c cf for complex float, \c cd
267
- * for complex double.
268
- *
269
- * For example, \c Array33d is a fixed-size 3x3 array type of doubles, and \c ArrayXXf is a dynamic-size matrix of floats.
270
- *
271
- * There are also \c ArraySizeType which are self-explanatory. For example, \c Array4cf is
272
- * a fixed-size 1D array of 4 complex floats.
273
- *
274
- * \sa class Array
275
- */
276
-
277
- #define EIGEN_MAKE_ARRAY_TYPEDEFS(Type, TypeSuffix, Size, SizeSuffix) \
278
- /** \ingroup arraytypedefs */ \
279
- typedef Array<Type, Size, Size> Array##SizeSuffix##SizeSuffix##TypeSuffix; \
280
- /** \ingroup arraytypedefs */ \
281
- typedef Array<Type, Size, 1> Array##SizeSuffix##TypeSuffix;
282
-
283
- #define EIGEN_MAKE_ARRAY_FIXED_TYPEDEFS(Type, TypeSuffix, Size) \
284
- /** \ingroup arraytypedefs */ \
285
- typedef Array<Type, Size, Dynamic> Array##Size##X##TypeSuffix; \
286
- /** \ingroup arraytypedefs */ \
287
- typedef Array<Type, Dynamic, Size> Array##X##Size##TypeSuffix;
269
+ * \ingroup Core_Module
270
+ *
271
+ * %Eigen defines several typedef shortcuts for most common 1D and 2D array types.
272
+ *
273
+ * The general patterns are the following:
274
+ *
275
+ * \c ArrayRowsColsType where \c Rows and \c Cols can be \c 2,\c 3,\c 4 for fixed size square matrices or \c X for
276
+ * dynamic size, and where \c Type can be \c i for integer, \c f for float, \c d for double, \c cf for complex float, \c
277
+ * cd for complex double.
278
+ *
279
+ * For example, \c Array33d is a fixed-size 3x3 array type of doubles, and \c ArrayXXf is a dynamic-size matrix of
280
+ * floats.
281
+ *
282
+ * There are also \c ArraySizeType which are self-explanatory. For example, \c Array4cf is
283
+ * a fixed-size 1D array of 4 complex floats.
284
+ *
285
+ * With \cpp11, template alias are also defined for common sizes.
286
+ * They follow the same pattern as above except that the scalar type suffix is replaced by a
287
+ * template parameter, i.e.:
288
+ * - `ArrayRowsCols<Type>` where `Rows` and `Cols` can be \c 2,\c 3,\c 4, or \c X for fixed or dynamic size.
289
+ * - `ArraySize<Type>` where `Size` can be \c 2,\c 3,\c 4 or \c X for fixed or dynamic size 1D arrays.
290
+ *
291
+ * \sa class Array
292
+ */
293
+
294
+ #define EIGEN_MAKE_ARRAY_TYPEDEFS(Type, TypeSuffix, Size, SizeSuffix) \
295
+ /** \ingroup arraytypedefs */ \
296
+ typedef Array<Type, Size, Size> Array##SizeSuffix##SizeSuffix##TypeSuffix; \
297
+ /** \ingroup arraytypedefs */ \
298
+ typedef Array<Type, Size, 1> Array##SizeSuffix##TypeSuffix;
299
+
300
+ #define EIGEN_MAKE_ARRAY_FIXED_TYPEDEFS(Type, TypeSuffix, Size) \
301
+ /** \ingroup arraytypedefs */ \
302
+ typedef Array<Type, Size, Dynamic> Array##Size##X##TypeSuffix; \
303
+ /** \ingroup arraytypedefs */ \
304
+ typedef Array<Type, Dynamic, Size> Array##X##Size##TypeSuffix;
288
305
 
289
306
  #define EIGEN_MAKE_ARRAY_TYPEDEFS_ALL_SIZES(Type, TypeSuffix) \
290
- EIGEN_MAKE_ARRAY_TYPEDEFS(Type, TypeSuffix, 2, 2) \
291
- EIGEN_MAKE_ARRAY_TYPEDEFS(Type, TypeSuffix, 3, 3) \
292
- EIGEN_MAKE_ARRAY_TYPEDEFS(Type, TypeSuffix, 4, 4) \
293
- EIGEN_MAKE_ARRAY_TYPEDEFS(Type, TypeSuffix, Dynamic, X) \
294
- EIGEN_MAKE_ARRAY_FIXED_TYPEDEFS(Type, TypeSuffix, 2) \
295
- EIGEN_MAKE_ARRAY_FIXED_TYPEDEFS(Type, TypeSuffix, 3) \
296
- EIGEN_MAKE_ARRAY_FIXED_TYPEDEFS(Type, TypeSuffix, 4)
297
-
298
- EIGEN_MAKE_ARRAY_TYPEDEFS_ALL_SIZES(int, i)
299
- EIGEN_MAKE_ARRAY_TYPEDEFS_ALL_SIZES(float, f)
300
- EIGEN_MAKE_ARRAY_TYPEDEFS_ALL_SIZES(double, d)
301
- EIGEN_MAKE_ARRAY_TYPEDEFS_ALL_SIZES(std::complex<float>, cf)
307
+ EIGEN_MAKE_ARRAY_TYPEDEFS(Type, TypeSuffix, 2, 2) \
308
+ EIGEN_MAKE_ARRAY_TYPEDEFS(Type, TypeSuffix, 3, 3) \
309
+ EIGEN_MAKE_ARRAY_TYPEDEFS(Type, TypeSuffix, 4, 4) \
310
+ EIGEN_MAKE_ARRAY_TYPEDEFS(Type, TypeSuffix, Dynamic, X) \
311
+ EIGEN_MAKE_ARRAY_FIXED_TYPEDEFS(Type, TypeSuffix, 2) \
312
+ EIGEN_MAKE_ARRAY_FIXED_TYPEDEFS(Type, TypeSuffix, 3) \
313
+ EIGEN_MAKE_ARRAY_FIXED_TYPEDEFS(Type, TypeSuffix, 4)
314
+
315
+ EIGEN_MAKE_ARRAY_TYPEDEFS_ALL_SIZES(int, i)
316
+ EIGEN_MAKE_ARRAY_TYPEDEFS_ALL_SIZES(float, f)
317
+ EIGEN_MAKE_ARRAY_TYPEDEFS_ALL_SIZES(double, d)
318
+ EIGEN_MAKE_ARRAY_TYPEDEFS_ALL_SIZES(std::complex<float>, cf)
302
319
  EIGEN_MAKE_ARRAY_TYPEDEFS_ALL_SIZES(std::complex<double>, cd)
303
320
 
304
321
  #undef EIGEN_MAKE_ARRAY_TYPEDEFS_ALL_SIZES
305
322
  #undef EIGEN_MAKE_ARRAY_TYPEDEFS
323
+ #undef EIGEN_MAKE_ARRAY_FIXED_TYPEDEFS
324
+
325
+ #define EIGEN_MAKE_ARRAY_TYPEDEFS(Size, SizeSuffix) \
326
+ /** \ingroup arraytypedefs */ \
327
+ /** \brief \cpp11 */ \
328
+ template <typename Type> \
329
+ using Array##SizeSuffix##SizeSuffix = Array<Type, Size, Size>; \
330
+ /** \ingroup arraytypedefs */ \
331
+ /** \brief \cpp11 */ \
332
+ template <typename Type> \
333
+ using Array##SizeSuffix = Array<Type, Size, 1>;
334
+
335
+ #define EIGEN_MAKE_ARRAY_FIXED_TYPEDEFS(Size) \
336
+ /** \ingroup arraytypedefs */ \
337
+ /** \brief \cpp11 */ \
338
+ template <typename Type> \
339
+ using Array##Size##X = Array<Type, Size, Dynamic>; \
340
+ /** \ingroup arraytypedefs */ \
341
+ /** \brief \cpp11 */ \
342
+ template <typename Type> \
343
+ using Array##X##Size = Array<Type, Dynamic, Size>;
344
+
345
+ EIGEN_MAKE_ARRAY_TYPEDEFS(2, 2)
346
+ EIGEN_MAKE_ARRAY_TYPEDEFS(3, 3)
347
+ EIGEN_MAKE_ARRAY_TYPEDEFS(4, 4)
348
+ EIGEN_MAKE_ARRAY_TYPEDEFS(Dynamic, X)
349
+ EIGEN_MAKE_ARRAY_FIXED_TYPEDEFS(2)
350
+ EIGEN_MAKE_ARRAY_FIXED_TYPEDEFS(3)
351
+ EIGEN_MAKE_ARRAY_FIXED_TYPEDEFS(4)
306
352
 
307
- #undef EIGEN_MAKE_ARRAY_TYPEDEFS_LARGE
353
+ #undef EIGEN_MAKE_ARRAY_TYPEDEFS
354
+ #undef EIGEN_MAKE_ARRAY_FIXED_TYPEDEFS
308
355
 
309
356
  #define EIGEN_USING_ARRAY_TYPEDEFS_FOR_TYPE_AND_SIZE(TypeSuffix, SizeSuffix) \
310
- using Eigen::Matrix##SizeSuffix##TypeSuffix; \
311
- using Eigen::Vector##SizeSuffix##TypeSuffix; \
312
- using Eigen::RowVector##SizeSuffix##TypeSuffix;
313
-
314
- #define EIGEN_USING_ARRAY_TYPEDEFS_FOR_TYPE(TypeSuffix) \
315
- EIGEN_USING_ARRAY_TYPEDEFS_FOR_TYPE_AND_SIZE(TypeSuffix, 2) \
316
- EIGEN_USING_ARRAY_TYPEDEFS_FOR_TYPE_AND_SIZE(TypeSuffix, 3) \
317
- EIGEN_USING_ARRAY_TYPEDEFS_FOR_TYPE_AND_SIZE(TypeSuffix, 4) \
318
- EIGEN_USING_ARRAY_TYPEDEFS_FOR_TYPE_AND_SIZE(TypeSuffix, X) \
319
-
320
- #define EIGEN_USING_ARRAY_TYPEDEFS \
321
- EIGEN_USING_ARRAY_TYPEDEFS_FOR_TYPE(i) \
322
- EIGEN_USING_ARRAY_TYPEDEFS_FOR_TYPE(f) \
323
- EIGEN_USING_ARRAY_TYPEDEFS_FOR_TYPE(d) \
324
- EIGEN_USING_ARRAY_TYPEDEFS_FOR_TYPE(cf) \
325
- EIGEN_USING_ARRAY_TYPEDEFS_FOR_TYPE(cd)
326
-
327
- } // end namespace Eigen
328
-
329
- #endif // EIGEN_ARRAY_H
357
+ using Eigen::Matrix##SizeSuffix##TypeSuffix; \
358
+ using Eigen::Vector##SizeSuffix##TypeSuffix; \
359
+ using Eigen::RowVector##SizeSuffix##TypeSuffix;
360
+
361
+ #define EIGEN_USING_ARRAY_TYPEDEFS_FOR_TYPE(TypeSuffix) \
362
+ EIGEN_USING_ARRAY_TYPEDEFS_FOR_TYPE_AND_SIZE(TypeSuffix, 2) \
363
+ EIGEN_USING_ARRAY_TYPEDEFS_FOR_TYPE_AND_SIZE(TypeSuffix, 3) \
364
+ EIGEN_USING_ARRAY_TYPEDEFS_FOR_TYPE_AND_SIZE(TypeSuffix, 4) \
365
+ EIGEN_USING_ARRAY_TYPEDEFS_FOR_TYPE_AND_SIZE(TypeSuffix, X)
366
+
367
+ #define EIGEN_USING_ARRAY_TYPEDEFS \
368
+ EIGEN_USING_ARRAY_TYPEDEFS_FOR_TYPE(i) \
369
+ EIGEN_USING_ARRAY_TYPEDEFS_FOR_TYPE(f) \
370
+ EIGEN_USING_ARRAY_TYPEDEFS_FOR_TYPE(d) \
371
+ EIGEN_USING_ARRAY_TYPEDEFS_FOR_TYPE(cf) \
372
+ EIGEN_USING_ARRAY_TYPEDEFS_FOR_TYPE(cd)
373
+
374
+ } // end namespace Eigen
375
+
376
+ #endif // EIGEN_ARRAY_H