[ Thread Index |
| More lists.tuxfamily.org/eigen Archives
* Evaluator shape is DenseShape, DiagonalShape, BandShape,
TriangularShape, SelfAdjointShape, SparseShape (other possibilities to
be added, presumably).
* Evaluator kind (as returned by storage_kind_to_evaluator_kind)
is IndexBased or IteratorBased. Does this mean it's IteratorBased for
sprase matrices and IndexBased otherwise?
StorageKind is defined in Traits<XprType> and the only possibilities in
use as far as I can see is Dense, Sparse, PermutationStorage.
XprKind is Matrix or Array.
Storage order is column-major or row-major.
So, what is the question?
> What to do with the intermediate *Impl classes like TransposeImpl?
> It seems they should not be needed anymore.
> What to do with expr.coeff(i,j)?
> Shall we provide a generic implementation based on evaluators:
Yes if expr is a light-weight expression object.
But what if expr is an object with storage (can we think of a better name
than this? I mean something like Matrix or SparseMatrix)? Is .coeff() best
impremented in the expression object or the evaluator object? Symmetry
suggests the evaluator object, but since the expression object owns the
storage it may be more natural to put it there.
> What to do with the packet(i,j) and similar functions?
> Ideally we would simply drop them.
Dropping them would mean changing the API. It's quite an internal bit of
API and I doubt many use it; just something to keep in mind.
> What to do with NestByValue, Flagged and ForceAlignedAccess classes?
> NestByValue: never used in Eigen, designed to return expression with
> temporaries, but's that not the right solution for this because this
> introduces numerous copies. We should rather offer a wrapper with
> shallow copies and reference counting.
> Flagged: designed to control traits<Xpr>::Flags. Never used in Eigen.
> Should be deprecated.
> ForceAlignedAccess: use once to enforce aligned packet reads to
> sub-vectors. This should be part of the Block expression, just like the
> aligned option for Map or Ref. Btw, Ref could probably be used to
> replace ForceAlignedAccess.
I do not know what these are and how they are used so I'd love to get rid