On Sat, May 30, 2015 at 6:23 PM, Charles R Harris <charlesr.harris@gmail.com> wrote:
The problem arises when multiplying a stack of matrices times a vector. PEP465 defines this as appending a '1' to the dimensions of the vector and doing the defined stacked matrix multiply, then removing the last dimension from the result. Note that in the middle step we have a stack of matrices and after removing the last dimension we will still have a stack of matrices. What we want is a stack of vectors, but we can't have those with our conventions. This makes the result somewhat unexpected. How should we resolve this?

I think that before tackling the @ operator, we should implement the pure dot of stacks of matrices and dot of stacks of vectors generalized ufuncs.   The first will have a 2d "core" and the second - 1d.  Let's tentatively call them matmul and vecmul.  Hopefully matrix vector product can be reduced to the vecmul,
but I have not fully figured this out.  If not - we may need the third ufunc. 

Once we have these ufuncs, we can decide what @ operator should do in terms of them and possibly some axes manipulation.