aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src/Core/CoreEvaluators.h
Commit message (Collapse)AuthorAge
* Fix more enum arithmetic.Gravatar Rasmus Munk Larsen2021-06-15
|
* Fix c++20 warnings about using enums in arithmetic expressions.Gravatar Rasmus Munk Larsen2021-06-10
|
* Modify Unary/Binary/TernaryOp evaluators to work for non-class types.Gravatar Antonio Sanchez2021-05-23
| | | | | | | | | | | | | | | | | | | This used to work for non-class types (e.g. raw function pointers) in Eigen 3.3. This was changed in commit 11f55b29 to optimize the evaluator: > `sizeof((A-B).cwiseAbs2())` with A,B Vector4f is now 16 bytes, instead of 48 before this optimization. though I cannot reproduce the 16 byte result. Both before the change and after, with multiple compilers/versions, I always get a result of 40 bytes. https://godbolt.org/z/MsjTc1PGe This change modifies the code slightly to allow non-class types. The final generated code is identical, and the expression remains 40 bytes for the `abs2` sample case. Fixes #2251
* Revert "Revert "Adds EIGEN_CONSTEXPR and EIGEN_NOEXCEPT to rows(), cols(), ↵Gravatar Steve Bronder2021-03-24
| | | | | | innerStride(), outerStride(), and size()"" This reverts commit 5f0b4a4010af4cbf6161a0d1a03a747addc44a5d.
* Revert "Adds EIGEN_CONSTEXPR and EIGEN_NOEXCEPT to rows(), cols(), ↵Gravatar David Tellenbach2021-03-05
| | | | | | | innerStride(), outerStride(), and size()" This reverts commit 6cbb3038ac48cb5fe17eba4dfbf26e3e798041f1 because it breaks clang-10 builds on x86 and aarch64 when C++11 is enabled.
* Adds EIGEN_CONSTEXPR and EIGEN_NOEXCEPT to rows(), cols(), innerStride(), ↵Gravatar Steve Bronder2021-03-04
| | | | outerStride(), and size()
* bug #1736: fix compilation issue with A(all,{1,2}).col(j) by implementing ↵Gravatar Gael Guennebaud2019-09-11
| | | | true compile-time "if" for block_evaluator<>::coeff(i)/coeffRef(i)
* bug #1680: improve MSVC inlining by declaring many triavial constructors and ↵Gravatar Gael Guennebaud2019-02-15
| | | | accessors as STRONG_INLINE.
* bug #65: add vectorization of partial reductions along the outer-dimension, ↵Gravatar Gael Guennebaud2018-10-09
| | | | for instance: colmajor_mat.rowwise().mean()
* bug #1570: fix warningGravatar Gael Guennebaud2018-07-12
|
* Fix regression in 9357838f94d2907996adadc7e5200376f3561ed4Gravatar Gael Guennebaud2018-07-11
|
* bug #1543: improve linear indexing for general block expressionsGravatar Gael Guennebaud2018-07-10
|
* bug #1543: fix linear indexing in generic block evaluation (this completes ↵Gravatar Gael Guennebaud2018-04-23
| | | | | | the fix in commit 12efc7d41b80259b996be5781bf596c249c90d3f )
* Fix linear indexing in generic block evaluation.Gravatar Gael Guennebaud2018-02-09
|
* Fix gcc7 warningGravatar Gael Guennebaud2018-01-09
|
* Fix packet and alignment propagation logic of Block<Xpr> expressions. In ↵Gravatar Gael Guennebaud2017-12-14
| | | | particular, (A+B).col(j) lost vectorisation.
* Adjusted the EIGEN_DEVICE_FUNC qualifiers to make sure that:Gravatar Benoit Steiner2017-03-01
| | | | | * they're used consistently between the declaration and the definition of a function * we avoid calling host only methods from host device methods.
* Added missing EIGEN_DEVICE_FUNC qualifiersGravatar Benoit Steiner2017-03-01
|
* bug #1381: fix sparse.diagonal() used as a rvalue.Gravatar Gael Guennebaud2017-01-25
| | | | | | | | The problem was that is "sparse" is not const, then sparse.diagonal() must have the LValueBit flag meaning that sparse.diagonal().coeff(i) must returns a const reference, const Scalar&. However, sparse::coeff() cannot returns a reference for a non-existing zero coefficient. The trick is to return a reference to a local member of evaluator<SparseMatrix>.
* Optimize storage layout of Cwise* and PlainObjectBase evaluator to remove ↵Gravatar Gael Guennebaud2016-12-20
| | | | | | | the functor or outer-stride if they are empty. For instance, sizeof("(A-B).cwiseAbs2()") with A,B Vector4f is now 16 bytes, instead of 48 before this optimization. In theory, evaluators should be completely optimized away by the compiler, but this might help in some cases.
* Remove common "noncopyable" base class from evaluator_base to get a chance ↵Gravatar Gael Guennebaud2016-12-20
| | | | | | to get EBO (Empty Base Optimization) Note: we should probbaly get rid of this class and define a macro instead.
* Fix warning with ICCGravatar Gael Guennebaud2016-10-26
|
* bug #1317: fix performance regression with some Block expressions and clang ↵Gravatar Gael Guennebaud2016-10-01
| | | | | | by helping it to remove dead code. The trick is to get rid of the nested expression in the evaluator by copying only the required information (here, the strides).
* Disable previous workaround.Gravatar Gael Guennebaud2016-09-06
|
* Workaround MSVC instantiation faillure of has_*ary_operator at the level of ↵Gravatar Gael Guennebaud2016-09-06
| | | | triats<Ref>::match so that the has_*ary_operator are really properly instantiated throughout the compilation unit.
* Fix shadowing wrt Eigen::IndexGravatar Gael Guennebaud2016-09-05
|
* Workaround a weird msvc 2012 compilation error.Gravatar Gael Guennebaud2016-09-05
|
* Fix for msvc 2012 and olderGravatar Gael Guennebaud2016-09-05
|
* Turned the Index type used by the nullary wrapper into a template parameter.Gravatar Benoit Steiner2016-09-02
|
* Fix compilation with nvccGravatar Gael Guennebaud2016-09-01
|
* bug #1286: automatically detect the available prototypes of functors passed ↵Gravatar Gael Guennebaud2016-08-31
| | | | | | | | | to CwiseNullaryExpr such that functors have only to implement the operators that matters among: operator()() operator()(i) operator()(i,j) Linear access is also automatically detected based on the availability of operator()(i,j).
* Add TernaryFunctors and the betainc SpecialFunction.Gravatar Eugene Brevdo2016-06-02
| | | | | | | | | | | | | | | | | | | TernaryFunctors and their executors allow operations on 3-tuples of inputs. API fully implemented for Arrays and Tensors based on binary functors. Ported the cephes betainc function (regularized incomplete beta integral) to Eigen, with support for CPU and GPU, floats, doubles, and half types. Added unit tests in array.cpp and cxx11_tensor_cuda.cu Collapsed revision * Merged helper methods for betainc across floats and doubles. * Added TensorGlobalFunctions with betainc(). Removed betainc() from TensorBase. * Clean up CwiseTernaryOp checks, change igamma_helper to cephes_helper. * betainc: merge incbcf and incbd into incbeta_cfe. and more cleanup. * Update TernaryOp and SpecialFunctions (betainc) based on review comments.
* Introduce internal's UIntPtr and IntPtr types for pointer to integer ↵Gravatar Gael Guennebaud2016-05-26
| | | | | | | | conversions. This fixes "conversion from pointer to same-sized integral type" warnings by ICC. Ideally, we would use the std::[u]intptr_t types all the time, but since they are C99/C++11 only, let's be safe.
* Block<> should not disable vectorization based on inner-size, this is the ↵Gravatar Gael Guennebaud2016-05-24
| | | | responsibilty of the assignment logic.
* DiagonalWrapper is a vector, so it must expose the LinearAccessBit flag.Gravatar Gael Guennebaud2016-05-19
|
* Fix performance regression: with AVX, unaligned stores were emitted instead ↵Gravatar Gael Guennebaud2016-05-01
| | | | of aligned ones for fixed size assignement.
* Fix shortcoming in fixed-value deduction of startRow/startColGravatar Gael Guennebaud2016-02-29
|
* bug #667: declare several critical functions as FORECE_INLINE to make ICC ↵Gravatar Gael Guennebaud2016-01-31
| | | | | | | happier. <g.gael@free.fr> HG: branch 'default' HG: changed Eigen/src/Core/ArrayBase.h HG: changed Eigen/src/Core/AssignEvaluator.h HG: changed Eigen/src/Core/CoreEvaluators.h HG: changed Eigen/src/Core/CwiseUnaryOp.h HG: changed Eigen/src/Core/DenseBase.h HG: changed Eigen/src/Core/MatrixBase.h
* bug #1158: PartialReduxExpr is a vector expression, and it thus must expose ↵Gravatar Gael Guennebaud2016-01-28
| | | | the LinearAccessBit flag
* bug #1144: fix regression in x=y+A*x (aliasing), and move ↵Gravatar Gael Guennebaud2016-01-09
| | | | evaluator_traits::AssumeAliasing to evaluator_assume_aliasing.
* Fix storage order of PartialReduxGravatar Gael Guennebaud2015-12-10
|
* Add LU::transpose().solve() and LU::adjoint().solve() API.Gravatar Gael Guennebaud2015-12-01
|
* bug #1009, part 1/2: make sure vector expressions expose LinearAccessBit flag.Gravatar Gael Guennebaud2015-11-27
|
* Refactoring of the cost model:Gravatar Gael Guennebaud2015-10-28
| | | | | | | | | | | - Dynamic is now an invalid value - introduce a HugeCost constant to be used for runtime-cost values or arbitrarily huge cost - add sanity checks for cost values: must be >=0 and not too large This change provides several benefits: - it fixes shortcoming is some cost computation where the Dynamic case was not properly handled. - it simplifies cost computation logic, and should avoid future similar shortcomings. - it allows to distinguish between different level of dynamic/huge/infinite cost - it should enable further simplifications in the computation of costs (save compilation time)
* Simplify evaluator::Flags for Map<>Gravatar Gael Guennebaud2015-10-27
|
* Re-enable vectorization of LinSpaced, plus some cleaningGravatar Gael Guennebaud2015-10-08
|
* Clean evaluator<EvalToTemp>Gravatar Gael Guennebaud2015-10-08
|
* Properly implement PartialReduxExpr on top of evaluators, and fix multiple ↵Gravatar Gael Guennebaud2015-10-08
| | | | evaluation of nested expression
* Some cleaning in evaluatorsGravatar Gael Guennebaud2015-10-08
|
* Add a few missing EIGEN_DEVICE_FUNC declarationsGravatar Gael Guennebaud2015-09-03
|