Gael Guennebaud
78bb808337
1- Introduce sub-evaluator types for unary, binary, product, and map expressions to ease specializing them.
...
2- Remove a lot of code which should not be there with evaluators, in particular coeff/packet methods implemented in the expressions.
2014-06-20 15:39:38 +02:00
Gael Guennebaud
f74ed34539
Fix regressions in redux_evaluator flags and evaluator<Block> flags
2014-03-12 18:14:08 +01:00
Gael Guennebaud
a6be1952f4
Fix a few regression when moving the flags
2014-03-12 16:18:34 +01:00
Gael Guennebaud
8dd3b716e3
Move evaluation related flags from traits to evaluator and fix evaluators of MapBase and Replicate
2014-03-12 13:34:11 +01:00
Gael Guennebaud
da6ec81282
Move CoeffReadCost mechanism to evaluators
2014-03-10 23:24:40 +01:00
Gael Guennebaud
95b0a6707b
evaluator<Replicate> must evaluate its argument to avoid redundant evaluations
2014-02-19 14:51:46 +01:00
Gael Guennebaud
ccc41128fb
Add a Solve expression for uniform treatment of solve() methods.
2014-02-19 11:33:29 +01:00
Gael Guennebaud
1b5de5a37b
Add evaluator for Ref
2014-02-18 13:30:16 +01:00
Gael Guennebaud
34694d8828
Fix evaluator<Replicate> for fixed size objects
2014-01-26 15:34:26 +01:00
Gael Guennebaud
6c5e915e9a
Enable use of evaluators for noalias and lazyProduct, add conversion to scalar for inner products
2013-12-03 17:17:53 +01:00
Gael Guennebaud
27ca9437a1
Fix usage of Dense versus DenseShape
2013-12-02 14:05:34 +01:00
Gael Guennebaud
c15c65990f
First step toward the generalization of evaluators to triangular, sparse and other fancyness.
...
Remove product_tag template parameter to Product.
2013-11-29 17:50:59 +01:00
Gael Guennebaud
fb6e32a62f
Get rid of evalautor_impl
2013-11-29 16:45:47 +01:00
Gael Guennebaud
5584275325
Remove HasEvalTo and all at once eval mode
2013-11-29 13:38:59 +01:00
Gael Guennebaud
fc6ecebc69
Simplify evaluator of EvalToTemp
2013-11-27 11:32:07 +01:00
Gael Guennebaud
57327cc2d5
Drop evaluators for SwapWrapper and SelfCwiseBinaryOp
2013-11-07 14:07:27 +01:00
Gael Guennebaud
5887e82729
Clean evaluator_impl_base. It will probably be removed in the future
2013-11-07 14:02:47 +01:00
Gael Guennebaud
8edc964734
bug #99 : refactor assignment and compound assignment mechanism through "assignment functors" and "assignement kernels".
...
The former is very low level and generic. The later abstarct the former for dense expressions. This refactoring permits
to get rid of the very ugly SwapWrapper and SelfCwiseBinaryOp classes.
In the future, this will also permit to simplify all these evaluation loops and perhaps to reuse them for reduxions.
That will also permit to specialize for operations like expr1 += expr2 outside Eigen, and so for any kind
of expressions (dense, sparse, tensor, etc.)
2013-11-06 18:17:59 +01:00
Hauke Heibel
2437215221
Fixed constness in Array- and MatrixWrapper.
...
This also fixes the compilation on VC11.
2013-07-28 22:46:38 +02:00
Gael Guennebaud
01c6308d6e
Add missing template keyword in evaluators
2013-03-01 00:26:52 +01:00
Gael Guennebaud
3dc8f8536a
Generalize Block<> to support various implementation wrt StorageKind (just like other expression)
2012-11-16 09:00:27 +01:00
Jitse Niesen
4ae3e0a9b8
Evaluators: Fixed bug caused by Diagonal dynamic index change.
...
This caused the evaluators unit test to fail.
2012-07-14 14:55:04 +01:00
Benoit Jacob
69124cfca2
Automatic relicensing to MPL2 using Keirs script. Manual fixup follows.
2012-07-13 14:42:47 -04:00
Jitse Niesen
b1b6864c88
Evaluators: Remove member variables if known at compile-time.
...
Also, use composition instead of inheritance in EvalToTemp evaluator.
2012-07-06 14:50:03 +01:00
Jitse Niesen
cb9f3685d3
Move implementation of coeff() &c to Matrix/Array evaluator.
2012-07-05 11:09:42 +01:00
Jitse Niesen
746378868a
Implement A.noalias() = B * C without temporaries
...
* Wrap expression inside EvalToTemp in copy_using_evaluators() if we
assume aliasing for that expression (that is, for products)
* Remove temporary kludge of evaluating expression to temporary in
AllAtOnce traversal
* Implement EvalToTemp expression object
2012-06-29 13:54:09 +01:00
Jitse Niesen
d0b873822f
Make product eval-at-once.
...
* Make product EvalAtOnce in cases OuterProduct, GemmProduct and
GemvProduct
* Ensure that product evaluators are nested inside EvalToTemp
evaluator
* As temporary kludge, evaluate expression to temporary in AllAtOnce
traversal and pass expression operator to evalTo()
2012-06-29 13:49:25 +01:00
Jitse Niesen
2393ceb380
Implement eval-at-once in evaluator.
...
- Add evaluator_traits with HasEvalTo flag, which is true if evaluator
has evalTo() function.
- Add AllAtOnce traversal, which calls evalTo() in evaluator.
- If source evaluator in copy_using_evaluator has HasEvalTo set, then
use AllAtOnce traversal.
2012-06-29 13:32:12 +01:00
Jitse Niesen
069fd0e4be
Move (part of) evaluation of products to evaluator objects.
...
* Copy implementation from CoeffBasedProduct.
* Copy implementation from GeneralProduct in InnerProduct case.
* For GeneralProduct in other cases, call the evalTo() member function with
expression objects in constructor of evaluator.
2012-06-29 13:07:21 +01:00
Jitse Niesen
8994f9962a
Fix bug in {Matrix,Array}Wrapper evaluator
2012-06-24 17:35:27 +01:00
Gael Guennebaud
cc6dd55028
put the resurected files into the Eigen namespace
2012-06-22 16:35:20 +02:00
Gael Guennebaud
5fae6c7848
resurrect expression evaluators
2012-06-22 09:39:35 +02:00
Jitse Niesen
3db6455896
Remove evaluators for 2.1 release.
...
We plan to re-instate them when we branch 2.2 (see bug #388 ).
2011-12-14 21:23:43 +00:00
Jitse Niesen
9a06055870
Store light-weight objects in evaluators by value.
...
This resolves failure in unit test caused by dying temporaries.
2011-05-13 14:05:59 +01:00
Jitse Niesen
06fb7cf470
Implement compound assignments using evaluator of SelfCwiseBinaryOp.
2011-04-28 16:57:35 +01:00
Jitse Niesen
3b60d2dbc4
Implement swap using evaluators.
2011-04-28 15:52:15 +01:00
Jitse Niesen
2d11041e24
Use copyCoeff/copyPacket in copy_using_evaluator.
2011-04-22 22:36:45 +01:00
Jitse Niesen
3457965bf5
Implement evaluator for Diagonal.
2011-04-22 22:36:45 +01:00
Jitse Niesen
f924722f3b
Implement evaluators for Reverse.
2011-04-22 22:36:45 +01:00
Jitse Niesen
bb2d70d211
Implement evaluators for ArrayWrapper and MatrixWrapper.
2011-04-22 22:36:45 +01:00
Jitse Niesen
e654405900
Implement unrolling in copy_using_evaluator() .
2011-04-13 11:49:48 +01:00
Jitse Niesen
7e86324898
Implement evaluator for PartialReduxExpr as a dumb wrapper.
2011-04-13 09:49:10 +01:00
Jitse Niesen
11164830f5
Implement evaluator for Replicate.
2011-04-12 22:54:31 +01:00
Jitse Niesen
12a30a982f
Implement evaluator for Select.
2011-04-12 22:34:16 +01:00
Jitse Niesen
eae5a6bb09
Decouple Cwise*Op evaluators from expression objects
2011-04-05 18:30:51 +01:00
Jitse Niesen
11ea81858a
Implement evaluator for CwiseUnaryView
2011-04-05 18:20:43 +01:00
Jitse Niesen
cca7b146a2
Implement evaluator for Map
2011-04-05 18:15:59 +01:00
Jitse Niesen
ae06b8af5c
Make evaluators for Matrix and Array inherit from common base class.
...
This gets rid of some code duplication.
2011-04-04 15:35:14 +01:00
Jitse Niesen
afdd26f229
Do some of the actual work in evaluator for Block.
...
Also, add simple accessor methods to Block expression class.
2011-04-04 13:44:50 +01:00
Jitse Niesen
d90a8ee8bd
Evaluators: add Block evaluator as dumb wrapper, add slice vectorization.
2011-03-31 13:50:52 +01:00