@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
@@ -48,6 +48,11 @@ public:
48
48
  * Explicit zeros are not skipped over. To skip explicit zeros, see class SparseView
49
49
  */
50
50
  EIGEN_STRONG_INLINE InnerIterator& operator++() { m_iter.operator++(); return *this; }
51
+ EIGEN_STRONG_INLINE InnerIterator& operator+=(Index i) { m_iter.operator+=(i); return *this; }
52
+ EIGEN_STRONG_INLINE InnerIterator operator+(Index i)
53
+ { InnerIterator result(*this); result+=i; return result; }
54
+
55
+
51
56
  /// \returns the column or row index of the current coefficient.
52
57
  EIGEN_STRONG_INLINE Index index() const { return m_iter.index(); }
53
58
  /// \returns the row index of the current coefficient.
@@ -74,7 +74,7 @@ class CwiseBinaryOpImpl;
74
74
  * \sa MatrixBase::binaryExpr(const MatrixBase<OtherDerived> &,const CustomBinaryOp &) const, class CwiseUnaryOp, class CwiseNullaryOp
75
75
  */
76
76
  template<typename BinaryOp, typename LhsType, typename RhsType>
77
- class CwiseBinaryOp :
77
+ class CwiseBinaryOp :
78
78
  public CwiseBinaryOpImpl<
79
79
  BinaryOp, LhsType, RhsType,
80
80
  typename internal::cwise_promote_storage_type<typename internal::traits<LhsType>::StorageKind,
@@ -83,7 +83,7 @@ class CwiseBinaryOp :
83
83
  internal::no_assignment_operator
84
84
  {
85
85
  public:
86
-
86
+
87
87
  typedef typename internal::remove_all<BinaryOp>::type Functor;
88
88
  typedef typename internal::remove_all<LhsType>::type Lhs;
89
89
  typedef typename internal::remove_all<RhsType>::type Rhs;
@@ -100,8 +100,14 @@ class CwiseBinaryOp :
100
100
  typedef typename internal::remove_reference<LhsNested>::type _LhsNested;
101
101
  typedef typename internal::remove_reference<RhsNested>::type _RhsNested;
102
102
 
103
- EIGEN_DEVICE_FUNC
104
- EIGEN_STRONG_INLINE CwiseBinaryOp(const Lhs& aLhs, const Rhs& aRhs, const BinaryOp& func = BinaryOp())
103
+ #if EIGEN_COMP_MSVC && EIGEN_HAS_CXX11
104
+ //Required for Visual Studio or the Copy constructor will probably not get inlined!
105
+ EIGEN_STRONG_INLINE
106
+ CwiseBinaryOp(const CwiseBinaryOp<BinaryOp,LhsType,RhsType>&) = default;
107
+ #endif
108
+
109
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
110
+ CwiseBinaryOp(const Lhs& aLhs, const Rhs& aRhs, const BinaryOp& func = BinaryOp())
105
111
  : m_lhs(aLhs), m_rhs(aRhs), m_functor(func)
106
112
  {
107
113
  EIGEN_CHECK_BINARY_COMPATIBILIY(BinaryOp,typename Lhs::Scalar,typename Rhs::Scalar);
@@ -110,31 +116,25 @@ class CwiseBinaryOp :
110
116
  eigen_assert(aLhs.rows() == aRhs.rows() && aLhs.cols() == aRhs.cols());
111
117
  }
112
118
 
113
- EIGEN_DEVICE_FUNC
114
- EIGEN_STRONG_INLINE Index rows() const {
119
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR
120
+ Index rows() const EIGEN_NOEXCEPT {
115
121
  // return the fixed size type if available to enable compile time optimizations
116
- if (internal::traits<typename internal::remove_all<LhsNested>::type>::RowsAtCompileTime==Dynamic)
117
- return m_rhs.rows();
118
- else
119
- return m_lhs.rows();
122
+ return internal::traits<typename internal::remove_all<LhsNested>::type>::RowsAtCompileTime==Dynamic ? m_rhs.rows() : m_lhs.rows();
120
123
  }
121
- EIGEN_DEVICE_FUNC
122
- EIGEN_STRONG_INLINE Index cols() const {
124
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR
125
+ Index cols() const EIGEN_NOEXCEPT {
123
126
  // return the fixed size type if available to enable compile time optimizations
124
- if (internal::traits<typename internal::remove_all<LhsNested>::type>::ColsAtCompileTime==Dynamic)
125
- return m_rhs.cols();
126
- else
127
- return m_lhs.cols();
127
+ return internal::traits<typename internal::remove_all<LhsNested>::type>::ColsAtCompileTime==Dynamic ? m_rhs.cols() : m_lhs.cols();
128
128
  }
129
129
 
130
130
  /** \returns the left hand side nested expression */
131
- EIGEN_DEVICE_FUNC
131
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
132
132
  const _LhsNested& lhs() const { return m_lhs; }
133
133
  /** \returns the right hand side nested expression */
134
- EIGEN_DEVICE_FUNC
134
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
135
135
  const _RhsNested& rhs() const { return m_rhs; }
136
136
  /** \returns the functor representing the binary operation */
137
- EIGEN_DEVICE_FUNC
137
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
138
138
  const BinaryOp& functor() const { return m_functor; }
139
139
 
140
140
  protected:
@@ -158,7 +158,7 @@ public:
158
158
  */
159
159
  template<typename Derived>
160
160
  template<typename OtherDerived>
161
- EIGEN_STRONG_INLINE Derived &
161
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived &
162
162
  MatrixBase<Derived>::operator-=(const MatrixBase<OtherDerived> &other)
163
163
  {
164
164
  call_assignment(derived(), other.derived(), internal::sub_assign_op<Scalar,typename OtherDerived::Scalar>());
@@ -171,7 +171,7 @@ MatrixBase<Derived>::operator-=(const MatrixBase<OtherDerived> &other)
171
171
  */
172
172
  template<typename Derived>
173
173
  template<typename OtherDerived>
174
- EIGEN_STRONG_INLINE Derived &
174
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived &
175
175
  MatrixBase<Derived>::operator+=(const MatrixBase<OtherDerived>& other)
176
176
  {
177
177
  call_assignment(derived(), other.derived(), internal::add_assign_op<Scalar,typename OtherDerived::Scalar>());
@@ -181,4 +181,3 @@ MatrixBase<Derived>::operator+=(const MatrixBase<OtherDerived>& other)
181
181
  } // end namespace Eigen
182
182
 
183
183
  #endif // EIGEN_CWISE_BINARY_OP_H
184
-
@@ -74,10 +74,10 @@ class CwiseNullaryOp : public internal::dense_xpr_base< CwiseNullaryOp<NullaryOp
74
74
  && (ColsAtCompileTime == Dynamic || ColsAtCompileTime == cols));
75
75
  }
76
76
 
77
- EIGEN_DEVICE_FUNC
78
- EIGEN_STRONG_INLINE Index rows() const { return m_rows.value(); }
79
- EIGEN_DEVICE_FUNC
80
- EIGEN_STRONG_INLINE Index cols() const { return m_cols.value(); }
77
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR
78
+ Index rows() const { return m_rows.value(); }
79
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR
80
+ Index cols() const { return m_cols.value(); }
81
81
 
82
82
  /** \returns the functor representing the nullary operation */
83
83
  EIGEN_DEVICE_FUNC
@@ -105,7 +105,12 @@ class CwiseNullaryOp : public internal::dense_xpr_base< CwiseNullaryOp<NullaryOp
105
105
  */
106
106
  template<typename Derived>
107
107
  template<typename CustomNullaryOp>
108
- EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const CwiseNullaryOp<CustomNullaryOp, typename DenseBase<Derived>::PlainObject>
108
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
109
+ #ifndef EIGEN_PARSED_BY_DOXYGEN
110
+ const CwiseNullaryOp<CustomNullaryOp,typename DenseBase<Derived>::PlainObject>
111
+ #else
112
+ const CwiseNullaryOp<CustomNullaryOp,PlainObject>
113
+ #endif
109
114
  DenseBase<Derived>::NullaryExpr(Index rows, Index cols, const CustomNullaryOp& func)
110
115
  {
111
116
  return CwiseNullaryOp<CustomNullaryOp, PlainObject>(rows, cols, func);
@@ -126,12 +131,17 @@ DenseBase<Derived>::NullaryExpr(Index rows, Index cols, const CustomNullaryOp& f
126
131
  *
127
132
  * Here is an example with C++11 random generators: \include random_cpp11.cpp
128
133
  * Output: \verbinclude random_cpp11.out
129
- *
134
+ *
130
135
  * \sa class CwiseNullaryOp
131
136
  */
132
137
  template<typename Derived>
133
138
  template<typename CustomNullaryOp>
134
- EIGEN_STRONG_INLINE const CwiseNullaryOp<CustomNullaryOp, typename DenseBase<Derived>::PlainObject>
139
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
140
+ #ifndef EIGEN_PARSED_BY_DOXYGEN
141
+ const CwiseNullaryOp<CustomNullaryOp, typename DenseBase<Derived>::PlainObject>
142
+ #else
143
+ const CwiseNullaryOp<CustomNullaryOp, PlainObject>
144
+ #endif
135
145
  DenseBase<Derived>::NullaryExpr(Index size, const CustomNullaryOp& func)
136
146
  {
137
147
  EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
@@ -150,7 +160,12 @@ DenseBase<Derived>::NullaryExpr(Index size, const CustomNullaryOp& func)
150
160
  */
151
161
  template<typename Derived>
152
162
  template<typename CustomNullaryOp>
153
- EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const CwiseNullaryOp<CustomNullaryOp, typename DenseBase<Derived>::PlainObject>
163
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
164
+ #ifndef EIGEN_PARSED_BY_DOXYGEN
165
+ const CwiseNullaryOp<CustomNullaryOp, typename DenseBase<Derived>::PlainObject>
166
+ #else
167
+ const CwiseNullaryOp<CustomNullaryOp, PlainObject>
168
+ #endif
154
169
  DenseBase<Derived>::NullaryExpr(const CustomNullaryOp& func)
155
170
  {
156
171
  return CwiseNullaryOp<CustomNullaryOp, PlainObject>(RowsAtCompileTime, ColsAtCompileTime, func);
@@ -170,7 +185,7 @@ DenseBase<Derived>::NullaryExpr(const CustomNullaryOp& func)
170
185
  * \sa class CwiseNullaryOp
171
186
  */
172
187
  template<typename Derived>
173
- EIGEN_STRONG_INLINE const typename DenseBase<Derived>::ConstantReturnType
188
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const typename DenseBase<Derived>::ConstantReturnType
174
189
  DenseBase<Derived>::Constant(Index rows, Index cols, const Scalar& value)
175
190
  {
176
191
  return DenseBase<Derived>::NullaryExpr(rows, cols, internal::scalar_constant_op<Scalar>(value));
@@ -217,27 +232,32 @@ DenseBase<Derived>::Constant(const Scalar& value)
217
232
 
218
233
  /** \deprecated because of accuracy loss. In Eigen 3.3, it is an alias for LinSpaced(Index,const Scalar&,const Scalar&)
219
234
  *
220
- * \sa LinSpaced(Index,Scalar,Scalar), setLinSpaced(Index,const Scalar&,const Scalar&)
235
+ * \only_for_vectors
236
+ *
237
+ * Example: \include DenseBase_LinSpaced_seq_deprecated.cpp
238
+ * Output: \verbinclude DenseBase_LinSpaced_seq_deprecated.out
239
+ *
240
+ * \sa LinSpaced(Index,const Scalar&, const Scalar&), setLinSpaced(Index,const Scalar&,const Scalar&)
221
241
  */
222
242
  template<typename Derived>
223
- EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const typename DenseBase<Derived>::RandomAccessLinSpacedReturnType
243
+ EIGEN_DEPRECATED EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const typename DenseBase<Derived>::RandomAccessLinSpacedReturnType
224
244
  DenseBase<Derived>::LinSpaced(Sequential_t, Index size, const Scalar& low, const Scalar& high)
225
245
  {
226
246
  EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
227
- return DenseBase<Derived>::NullaryExpr(size, internal::linspaced_op<Scalar,PacketScalar>(low,high,size));
247
+ return DenseBase<Derived>::NullaryExpr(size, internal::linspaced_op<Scalar>(low,high,size));
228
248
  }
229
249
 
230
250
  /** \deprecated because of accuracy loss. In Eigen 3.3, it is an alias for LinSpaced(const Scalar&,const Scalar&)
231
251
  *
232
- * \sa LinSpaced(Scalar,Scalar)
252
+ * \sa LinSpaced(const Scalar&, const Scalar&)
233
253
  */
234
254
  template<typename Derived>
235
- EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const typename DenseBase<Derived>::RandomAccessLinSpacedReturnType
255
+ EIGEN_DEPRECATED EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const typename DenseBase<Derived>::RandomAccessLinSpacedReturnType
236
256
  DenseBase<Derived>::LinSpaced(Sequential_t, const Scalar& low, const Scalar& high)
237
257
  {
238
258
  EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
239
259
  EIGEN_STATIC_ASSERT_FIXED_SIZE(Derived)
240
- return DenseBase<Derived>::NullaryExpr(Derived::SizeAtCompileTime, internal::linspaced_op<Scalar,PacketScalar>(low,high,Derived::SizeAtCompileTime));
260
+ return DenseBase<Derived>::NullaryExpr(Derived::SizeAtCompileTime, internal::linspaced_op<Scalar>(low,high,Derived::SizeAtCompileTime));
241
261
  }
242
262
 
243
263
  /**
@@ -268,7 +288,7 @@ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const typename DenseBase<Derived>::RandomA
268
288
  DenseBase<Derived>::LinSpaced(Index size, const Scalar& low, const Scalar& high)
269
289
  {
270
290
  EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
271
- return DenseBase<Derived>::NullaryExpr(size, internal::linspaced_op<Scalar,PacketScalar>(low,high,size));
291
+ return DenseBase<Derived>::NullaryExpr(size, internal::linspaced_op<Scalar>(low,high,size));
272
292
  }
273
293
 
274
294
  /**
@@ -281,7 +301,7 @@ DenseBase<Derived>::LinSpaced(const Scalar& low, const Scalar& high)
281
301
  {
282
302
  EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
283
303
  EIGEN_STATIC_ASSERT_FIXED_SIZE(Derived)
284
- return DenseBase<Derived>::NullaryExpr(Derived::SizeAtCompileTime, internal::linspaced_op<Scalar,PacketScalar>(low,high,Derived::SizeAtCompileTime));
304
+ return DenseBase<Derived>::NullaryExpr(Derived::SizeAtCompileTime, internal::linspaced_op<Scalar>(low,high,Derived::SizeAtCompileTime));
285
305
  }
286
306
 
287
307
  /** \returns true if all coefficients in this matrix are approximately equal to \a val, to within precision \a prec */
@@ -363,6 +383,33 @@ PlainObjectBase<Derived>::setConstant(Index rows, Index cols, const Scalar& val)
363
383
  return setConstant(val);
364
384
  }
365
385
 
386
+ /** Resizes to the given size, changing only the number of columns, and sets all
387
+ * coefficients in this expression to the given value \a val. For the parameter
388
+ * of type NoChange_t, just pass the special value \c NoChange.
389
+ *
390
+ * \sa MatrixBase::setConstant(const Scalar&), setConstant(Index,const Scalar&), class CwiseNullaryOp, MatrixBase::Constant(const Scalar&)
391
+ */
392
+ template<typename Derived>
393
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived&
394
+ PlainObjectBase<Derived>::setConstant(NoChange_t, Index cols, const Scalar& val)
395
+ {
396
+ return setConstant(rows(), cols, val);
397
+ }
398
+
399
+ /** Resizes to the given size, changing only the number of rows, and sets all
400
+ * coefficients in this expression to the given value \a val. For the parameter
401
+ * of type NoChange_t, just pass the special value \c NoChange.
402
+ *
403
+ * \sa MatrixBase::setConstant(const Scalar&), setConstant(Index,const Scalar&), class CwiseNullaryOp, MatrixBase::Constant(const Scalar&)
404
+ */
405
+ template<typename Derived>
406
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived&
407
+ PlainObjectBase<Derived>::setConstant(Index rows, NoChange_t, const Scalar& val)
408
+ {
409
+ return setConstant(rows, cols(), val);
410
+ }
411
+
412
+
366
413
  /**
367
414
  * \brief Sets a linearly spaced vector.
368
415
  *
@@ -383,7 +430,7 @@ template<typename Derived>
383
430
  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived& DenseBase<Derived>::setLinSpaced(Index newSize, const Scalar& low, const Scalar& high)
384
431
  {
385
432
  EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
386
- return derived() = Derived::NullaryExpr(newSize, internal::linspaced_op<Scalar,PacketScalar>(low,high,newSize));
433
+ return derived() = Derived::NullaryExpr(newSize, internal::linspaced_op<Scalar>(low,high,newSize));
387
434
  }
388
435
 
389
436
  /**
@@ -536,6 +583,32 @@ PlainObjectBase<Derived>::setZero(Index rows, Index cols)
536
583
  return setConstant(Scalar(0));
537
584
  }
538
585
 
586
+ /** Resizes to the given size, changing only the number of columns, and sets all
587
+ * coefficients in this expression to zero. For the parameter of type NoChange_t,
588
+ * just pass the special value \c NoChange.
589
+ *
590
+ * \sa DenseBase::setZero(), setZero(Index), setZero(Index, Index), setZero(Index, NoChange_t), class CwiseNullaryOp, DenseBase::Zero()
591
+ */
592
+ template<typename Derived>
593
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived&
594
+ PlainObjectBase<Derived>::setZero(NoChange_t, Index cols)
595
+ {
596
+ return setZero(rows(), cols);
597
+ }
598
+
599
+ /** Resizes to the given size, changing only the number of rows, and sets all
600
+ * coefficients in this expression to zero. For the parameter of type NoChange_t,
601
+ * just pass the special value \c NoChange.
602
+ *
603
+ * \sa DenseBase::setZero(), setZero(Index), setZero(Index, Index), setZero(NoChange_t, Index), class CwiseNullaryOp, DenseBase::Zero()
604
+ */
605
+ template<typename Derived>
606
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived&
607
+ PlainObjectBase<Derived>::setZero(Index rows, NoChange_t)
608
+ {
609
+ return setZero(rows, cols());
610
+ }
611
+
539
612
  // ones:
540
613
 
541
614
  /** \returns an expression of a matrix where all coefficients equal one.
@@ -662,6 +735,32 @@ PlainObjectBase<Derived>::setOnes(Index rows, Index cols)
662
735
  return setConstant(Scalar(1));
663
736
  }
664
737
 
738
+ /** Resizes to the given size, changing only the number of rows, and sets all
739
+ * coefficients in this expression to one. For the parameter of type NoChange_t,
740
+ * just pass the special value \c NoChange.
741
+ *
742
+ * \sa MatrixBase::setOnes(), setOnes(Index), setOnes(Index, Index), setOnes(NoChange_t, Index), class CwiseNullaryOp, MatrixBase::Ones()
743
+ */
744
+ template<typename Derived>
745
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived&
746
+ PlainObjectBase<Derived>::setOnes(Index rows, NoChange_t)
747
+ {
748
+ return setOnes(rows, cols());
749
+ }
750
+
751
+ /** Resizes to the given size, changing only the number of columns, and sets all
752
+ * coefficients in this expression to one. For the parameter of type NoChange_t,
753
+ * just pass the special value \c NoChange.
754
+ *
755
+ * \sa MatrixBase::setOnes(), setOnes(Index), setOnes(Index, Index), setOnes(Index, NoChange_t) class CwiseNullaryOp, MatrixBase::Ones()
756
+ */
757
+ template<typename Derived>
758
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived&
759
+ PlainObjectBase<Derived>::setOnes(NoChange_t, Index cols)
760
+ {
761
+ return setOnes(rows(), cols);
762
+ }
763
+
665
764
  // Identity:
666
765
 
667
766
  /** \returns an expression of the identity matrix (not necessarily square).
@@ -861,6 +960,42 @@ template<typename Derived>
861
960
  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const typename MatrixBase<Derived>::BasisReturnType MatrixBase<Derived>::UnitW()
862
961
  { return Derived::Unit(3); }
863
962
 
963
+ /** \brief Set the coefficients of \c *this to the i-th unit (basis) vector
964
+ *
965
+ * \param i index of the unique coefficient to be set to 1
966
+ *
967
+ * \only_for_vectors
968
+ *
969
+ * \sa MatrixBase::setIdentity(), class CwiseNullaryOp, MatrixBase::Unit(Index,Index)
970
+ */
971
+ template<typename Derived>
972
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived& MatrixBase<Derived>::setUnit(Index i)
973
+ {
974
+ EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived);
975
+ eigen_assert(i<size());
976
+ derived().setZero();
977
+ derived().coeffRef(i) = Scalar(1);
978
+ return derived();
979
+ }
980
+
981
+ /** \brief Resizes to the given \a newSize, and writes the i-th unit (basis) vector into *this.
982
+ *
983
+ * \param newSize the new size of the vector
984
+ * \param i index of the unique coefficient to be set to 1
985
+ *
986
+ * \only_for_vectors
987
+ *
988
+ * \sa MatrixBase::setIdentity(), class CwiseNullaryOp, MatrixBase::Unit(Index,Index)
989
+ */
990
+ template<typename Derived>
991
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived& MatrixBase<Derived>::setUnit(Index newSize, Index i)
992
+ {
993
+ EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived);
994
+ eigen_assert(i<newSize);
995
+ derived().resize(newSize);
996
+ return setUnit(i);
997
+ }
998
+
864
999
  } // end namespace Eigen
865
1000
 
866
1001
  #endif // EIGEN_CWISE_NULLARY_OP_H
@@ -11,7 +11,7 @@
11
11
  #ifndef EIGEN_CWISE_UNARY_OP_H
12
12
  #define EIGEN_CWISE_UNARY_OP_H
13
13
 
14
- namespace Eigen {
14
+ namespace Eigen {
15
15
 
16
16
  namespace internal {
17
17
  template<typename UnaryOp, typename XprType>
@@ -24,7 +24,7 @@ struct traits<CwiseUnaryOp<UnaryOp, XprType> >
24
24
  typedef typename XprType::Nested XprTypeNested;
25
25
  typedef typename remove_reference<XprTypeNested>::type _XprTypeNested;
26
26
  enum {
27
- Flags = _XprTypeNested::Flags & RowMajorBit
27
+ Flags = _XprTypeNested::Flags & RowMajorBit
28
28
  };
29
29
  };
30
30
  }
@@ -65,10 +65,10 @@ class CwiseUnaryOp : public CwiseUnaryOpImpl<UnaryOp, XprType, typename internal
65
65
  explicit CwiseUnaryOp(const XprType& xpr, const UnaryOp& func = UnaryOp())
66
66
  : m_xpr(xpr), m_functor(func) {}
67
67
 
68
- EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
69
- Index rows() const { return m_xpr.rows(); }
70
- EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
71
- Index cols() const { return m_xpr.cols(); }
68
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR
69
+ Index rows() const EIGEN_NOEXCEPT { return m_xpr.rows(); }
70
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR
71
+ Index cols() const EIGEN_NOEXCEPT { return m_xpr.cols(); }
72
72
 
73
73
  /** \returns the functor representing the unary operation */
74
74
  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
@@ -64,24 +64,26 @@ class CwiseUnaryView : public CwiseUnaryViewImpl<ViewOp, MatrixType, typename in
64
64
  typedef typename internal::ref_selector<MatrixType>::non_const_type MatrixTypeNested;
65
65
  typedef typename internal::remove_all<MatrixType>::type NestedExpression;
66
66
 
67
- explicit inline CwiseUnaryView(MatrixType& mat, const ViewOp& func = ViewOp())
67
+ explicit EIGEN_DEVICE_FUNC inline CwiseUnaryView(MatrixType& mat, const ViewOp& func = ViewOp())
68
68
  : m_matrix(mat), m_functor(func) {}
69
69
 
70
70
  EIGEN_INHERIT_ASSIGNMENT_OPERATORS(CwiseUnaryView)
71
71
 
72
- EIGEN_STRONG_INLINE Index rows() const { return m_matrix.rows(); }
73
- EIGEN_STRONG_INLINE Index cols() const { return m_matrix.cols(); }
72
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR
73
+ Index rows() const EIGEN_NOEXCEPT { return m_matrix.rows(); }
74
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR
75
+ Index cols() const EIGEN_NOEXCEPT { return m_matrix.cols(); }
74
76
 
75
77
  /** \returns the functor representing unary operation */
76
- const ViewOp& functor() const { return m_functor; }
78
+ EIGEN_DEVICE_FUNC const ViewOp& functor() const { return m_functor; }
77
79
 
78
80
  /** \returns the nested expression */
79
- const typename internal::remove_all<MatrixTypeNested>::type&
81
+ EIGEN_DEVICE_FUNC const typename internal::remove_all<MatrixTypeNested>::type&
80
82
  nestedExpression() const { return m_matrix; }
81
83
 
82
84
  /** \returns the nested expression */
83
- typename internal::remove_reference<MatrixTypeNested>::type&
84
- nestedExpression() { return m_matrix.const_cast_derived(); }
85
+ EIGEN_DEVICE_FUNC typename internal::remove_reference<MatrixTypeNested>::type&
86
+ nestedExpression() { return m_matrix; }
85
87
 
86
88
  protected:
87
89
  MatrixTypeNested m_matrix;
@@ -108,16 +110,16 @@ class CwiseUnaryViewImpl<ViewOp,MatrixType,Dense>
108
110
 
109
111
  EIGEN_DENSE_PUBLIC_INTERFACE(Derived)
110
112
  EIGEN_INHERIT_ASSIGNMENT_OPERATORS(CwiseUnaryViewImpl)
111
-
113
+
112
114
  EIGEN_DEVICE_FUNC inline Scalar* data() { return &(this->coeffRef(0)); }
113
115
  EIGEN_DEVICE_FUNC inline const Scalar* data() const { return &(this->coeff(0)); }
114
116
 
115
- EIGEN_DEVICE_FUNC inline Index innerStride() const
117
+ EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR inline Index innerStride() const
116
118
  {
117
119
  return derived().nestedExpression().innerStride() * sizeof(typename internal::traits<MatrixType>::Scalar) / sizeof(Scalar);
118
120
  }
119
121
 
120
- EIGEN_DEVICE_FUNC inline Index outerStride() const
122
+ EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR inline Index outerStride() const
121
123
  {
122
124
  return derived().nestedExpression().outerStride() * sizeof(typename internal::traits<MatrixType>::Scalar) / sizeof(Scalar);
123
125
  }