<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Sat, May 30, 2015 at 6:23 PM, Charles R Harris <span dir="ltr"><<a href="mailto:charlesr.harris@gmail.com" target="_blank">charlesr.harris@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">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?</blockquote></div><br>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,</div><div class="gmail_extra">but I have not fully figured this out.  If not - we may need the third ufunc. </div><div class="gmail_extra"><br></div><div class="gmail_extra">Once we have these ufuncs, we can decide what @ operator should do in terms of them and possibly some axes manipulation. </div></div>