aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src/Core/CoreEvaluators.h
Commit message (Collapse)AuthorAge
* 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
|
* Since there is no reason for evaluators to be nested by reference, let's ↵Gravatar Gael Guennebaud2015-09-02
| | | | remove the evaluator<>::nestedType indirection.
* Make evaluators non-copyable. This guarantee that evaluators storing ↵Gravatar Gael Guennebaud2015-09-02
| | | | temporaries do not introduce unwanted copy overhead.
* Cleaning pass on evaluators: remove the useless and error prone ↵Gravatar Gael Guennebaud2015-09-02
| | | | evaluator<>::type indirection.
* Allow to use arbitrary packet-types during evaluation.Gravatar Gael Guennebaud2015-08-07
| | | | This is implemented by adding a PacketType template parameter to packet and writePacket members of evaluator<>.
* Let unpacket_traits<> exposes the required alignment and make use of it ↵Gravatar Gael Guennebaud2015-08-07
| | | | everywhere
* First part of a big refactoring of alignment control to enable the handling ↵Gravatar Gael Guennebaud2015-08-06
| | | | | | | | | of arbitrarily aligned buffers. It includes: - AlignedBit flag is deprecated. Alignment is now specified by the evaluator through the 'Alignment' enum, e.g., evaluator<Xpr>::Alignment. Its value is in Bytes. - Add several enums to specify alignment: Aligned8, Aligned16, Aligned32, Aligned64, Aligned128. AlignedMax corresponds to EIGEN_MAX_ALIGN_BYTES. Such enums are used to define the above Alignment value, and as the 'Options' template parameter of Map<> and Ref<>. - The Aligned enum is now deprecated. It is now an alias for Aligned16. - Currently, traits<Matrix<>>, traits<Array<>>, traits<Ref<>>, traits<Map<>>, and traits<Block<>> also expose the Alignment enum.