On Mon, Jun 21, 2010 at 12:43 PM, Benoit Jacob
<jacob.benoit.1@xxxxxxxxx> wrote:
Thanks. My main comment is that this needs a better structuring. For
example, the first example already shows the comma-initializer without
an explanation and already shows various products. I think the
comma-initializer deserves a short paragraph for itself (which is OK
to put in this page) and products totally deserve a paragraph for
themselves before you do any (except scalar-matrix product, that is OK
to do without a former explanation).
Ok, I thought that comma initializers would be explained in the previous sections. Regarding the product explanation, there is a short paragraph at the end but maybe it should be more explanatory.
It's good to explain right away that Matrix is only for linear algebra
and to forward-link to Array for coeff-wise ops. But rowwise and
colwise addition and substraction are actually available for matrices
as well (rowwise() is in DenseBase, not in ArrayBase) so that's not
the right example ;) since you just mentioned scalar+array, stick to
that example.
Ok, so maybe I can also link forward to row and col-wise operations there.
In the paragraph "Combining operators in a single statement" you give
an example of how that allows to avoid useless temporaries, but in
that example, actually, that temporary is not useless at all (write
down the computation yourself on pen&paper, for
tempMatrix = m + n/2;
v = tempMatrix * v;
you'll see that doing the temporary actually reduces complexity) and
Eigen is clever enough to understand that, so actually in the 2nd
version in one line, Eigen internally uses such a temporary.
If you want a good example of combining arithmetic operations into a
big _expression_ to avoid temporaries, the easiest way to get a good
example is to just use additions and scalar-matrix multiplications.
But I would not mention that at the top of this page, I'd rather put
at the end of it, since it's an advanced topic.
In short: we need this page to expose all the basic arithmetic in a
rational, systematic, and progressive way, treating one thing at a
time, and deferring the advanced topics to the end.
Ok, I got it. I will send you the next draft when its done.
Carlos