diff options
author | Gael Guennebaud <g.gael@free.fr> | 2014-03-10 23:24:40 +0100 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2014-03-10 23:24:40 +0100 |
commit | da6ec812820259b7474bff49c8fc0443c88900e5 (patch) | |
tree | bbe0b06e88926f0700626b342adc3303ebc868b0 /Eigen/src/Core/util/XprHelper.h | |
parent | 354bd8a42837ac405a142281fca2c4ac59ff701f (diff) |
Move CoeffReadCost mechanism to evaluators
Diffstat (limited to 'Eigen/src/Core/util/XprHelper.h')
-rw-r--r-- | Eigen/src/Core/util/XprHelper.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/Eigen/src/Core/util/XprHelper.h b/Eigen/src/Core/util/XprHelper.h index a4baa921c..8931c5a2d 100644 --- a/Eigen/src/Core/util/XprHelper.h +++ b/Eigen/src/Core/util/XprHelper.h @@ -370,7 +370,9 @@ template<typename T, int n, typename PlainObject = typename eval<T>::type> struc DynamicAsInteger = 10000, ScalarReadCost = NumTraits<typename traits<T>::Scalar>::ReadCost, ScalarReadCostAsInteger = ScalarReadCost == Dynamic ? int(DynamicAsInteger) : int(ScalarReadCost), - CoeffReadCost = traits<T>::CoeffReadCost, + CoeffReadCost = evaluator<T>::CoeffReadCost, // TODO What if an evaluator evaluate itself into a tempory? + // Then CoeffReadCost will be small but we still have to evaluate if n>1... + // The solution might be to ask the evaluator if it creates a temp. Perhaps we could even ask the number of temps? CoeffReadCostAsInteger = CoeffReadCost == Dynamic ? int(DynamicAsInteger) : int(CoeffReadCost), NAsInteger = n == Dynamic ? int(DynamicAsInteger) : n, CostEvalAsInteger = (NAsInteger+1) * ScalarReadCostAsInteger + CoeffReadCostAsInteger, |