Gael Guennebaud
188a13f9fe
Fix compilation of coeff(Index) on sub-inner-panels
2014-09-08 09:50:03 +02:00
Gael Guennebaud
107bb308c3
Fix various small issues detected by gcc
2014-08-01 16:24:23 +02:00
Gael Guennebaud
bae2e3327b
Call product_generic_impl by default, and remove lot of boilerplate code
2014-07-31 13:35:49 +02:00
Gael Guennebaud
3eba5e1101
Implement evaluator for sparse outer products
2014-07-19 14:55:56 +02:00
Gael Guennebaud
b868bfb84a
Make operator=(EigenBase<>) uses the new assignment mechanism and introduce a generic EigenBase to EigenBase assignment kind based on the previous evalTo mechanism.
2014-06-25 17:23:52 +02:00
Gael Guennebaud
e3ba5329ff
Implement evaluators for sparse Block.
2014-06-25 09:58:26 +02:00
Gael Guennebaud
3849cc65ee
Implement binaryop and transpose evaluators for sparse matrices
2014-06-23 10:40:03 +02:00
Gael Guennebaud
7fa87a8b12
Backport changes from old to new expression engines
2014-06-20 16:17:57 +02:00
Gael Guennebaud
47585c8ab2
merge
2014-06-20 15:49:07 +02:00
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
Jitse Niesen
ffc995c9e4
Implement evaluator<ReturnByValue>.
...
All supported tests pass apart from Sparse and Geometry,
except test in adjoint_4 that a = a.transpose() raises an assert.
2014-04-16 18:16:36 +01: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