{"action":"created","issue":{"url":"https://api.github.com/repos/JuliaLang/julia/issues/12065","labels_url":"https://api.github.com/repos/JuliaLang/julia/issues/12065/labels{/name}","comments_url":"https://api.github.com/repos/JuliaLang/julia/issues/12065/comments","events_url":"https://api.github.com/repos/JuliaLang/julia/issues/12065/events","html_url":"https://github.com/JuliaLang/julia/issues/12065","id":93791380,"number":12065,"title":"*(a, b, c, xs...) should have methods for matrices and vectors","user":{"login":"andreasnoack","id":505001,"avatar_url":"https://avatars.githubusercontent.com/u/505001?v=3","gravatar_id":"","url":"https://api.github.com/users/andreasnoack","html_url":"https://github.com/andreasnoack","followers_url":"https://api.github.com/users/andreasnoack/followers","following_url":"https://api.github.com/users/andreasnoack/following{/other_user}","gists_url":"https://api.github.com/users/andreasnoack/gists{/gist_id}","starred_url":"https://api.github.com/users/andreasnoack/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/andreasnoack/subscriptions","organizations_url":"https://api.github.com/users/andreasnoack/orgs","repos_url":"https://api.github.com/users/andreasnoack/repos","events_url":"https://api.github.com/users/andreasnoack/events{/privacy}","received_events_url":"https://api.github.com/users/andreasnoack/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/JuliaLang/julia/labels/linear%20algebra","name":"linear algebra","color":"aa8800"},{"url":"https://api.github.com/repos/JuliaLang/julia/labels/performance","name":"performance","color":"d7e102"}],"state":"open","locked":false,"assignee":null,"milestone":{"url":"https://api.github.com/repos/JuliaLang/julia/milestones/14","html_url":"https://github.com/JuliaLang/julia/milestones/0.5.0","labels_url":"https://api.github.com/repos/JuliaLang/julia/milestones/14/labels","id":868319,"number":14,"title":"0.5.0","description":"Release-defining items for v0.5 - the `Arraymageddon` release.","creator":{"login":"vtjnash","id":330950,"avatar_url":"https://avatars.githubusercontent.com/u/330950?v=3","gravatar_id":"","url":"https://api.github.com/users/vtjnash","html_url":"https://github.com/vtjnash","followers_url":"https://api.github.com/users/vtjnash/followers","following_url":"https://api.github.com/users/vtjnash/following{/other_user}","gists_url":"https://api.github.com/users/vtjnash/gists{/gist_id}","starred_url":"https://api.github.com/users/vtjnash/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vtjnash/subscriptions","organizations_url":"https://api.github.com/users/vtjnash/orgs","repos_url":"https://api.github.com/users/vtjnash/repos","events_url":"https://api.github.com/users/vtjnash/events{/privacy}","received_events_url":"https://api.github.com/users/vtjnash/received_events","type":"User","site_admin":false},"open_issues":66,"closed_issues":17,"state":"open","created_at":"2014-11-16T16:16:12Z","updated_at":"2015-12-02T10:06:29Z","due_on":"2016-02-01T05:00:00Z","closed_at":null},"comments":17,"created_at":"2015-07-08T13:36:01Z","updated_at":"2015-12-03T21:48:29Z","closed_at":null,"body":"There are two problems right now. First of all, it would be great to have `A*B*x=A*(B*x)` instead of `(A*B)*x` because the former is `Θ(n^2)`-ish whereas the latter is `Θ(n^3)`-ish. The second problem is that the optimized transposed multiplication methods not called for e.g. `A'*B*C`. Right now, `A` is transposed before the multiplication so typically `(A'*B)*C` is much faster than `A'*B*C`."},"comment":{"url":"https://api.github.com/repos/JuliaLang/julia/issues/comments/161794776","html_url":"https://github.com/JuliaLang/julia/issues/12065#issuecomment-161794776","issue_url":"https://api.github.com/repos/JuliaLang/julia/issues/12065","id":161794776,"user":{"login":"stevengj","id":2913679,"avatar_url":"https://avatars.githubusercontent.com/u/2913679?v=3","gravatar_id":"","url":"https://api.github.com/users/stevengj","html_url":"https://github.com/stevengj","followers_url":"https://api.github.com/users/stevengj/followers","following_url":"https://api.github.com/users/stevengj/following{/other_user}","gists_url":"https://api.github.com/users/stevengj/gists{/gist_id}","starred_url":"https://api.github.com/users/stevengj/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stevengj/subscriptions","organizations_url":"https://api.github.com/users/stevengj/orgs","repos_url":"https://api.github.com/users/stevengj/repos","events_url":"https://api.github.com/users/stevengj/events{/privacy}","received_events_url":"https://api.github.com/users/stevengj/received_events","type":"User","site_admin":false},"created_at":"2015-12-03T21:48:29Z","updated_at":"2015-12-03T21:48:29Z","body":"+1 for something like @StefanKarpinski's option 2.   In practice, we really only care about being optimal for a limited number of factors.  For products of hundreds or thousands of factors, which can really only arise from metaprogramming, we should just do something reasonable — if someone is doing metaprogramming, they can probably figure out a good order anyway (and most likely all the matrices are the same size anyway if there are that many factors)."}}