Would it be possible to extend the core gufunc system to handle some or all of these problems? I always worry when we start making workarounds like this that we're just digging ourselves deeper into a problem we'll have to face sooner or later. In particular wanting to pass extra arguments to gufuncs in general seems pretty reasonable... or can we support a signature like (m,n)->(k) where the gufunc gets handed m and n and gets to compute k, before ever calling the actual loop?