I think part of the problem is that ufuncs actually have two parts: a generic interface, which turns all its arguments into ndarray (or calls `__array_ufunc__`) and an ndarray-specific implementation of the given function (partially, just the iterator, partially the inner loop). The latter could logically be moved to `ndarray.__array_ufunc__` (and thus to `multiarray`). In that case, `umath` would hardly depend on `multiarray` any more.
But perhaps this is a bit besides the point: building the two at the same time would go a long way to making it easier to do a move like the above. -- Marten _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@python.org https://mail.python.org/mailman/listinfo/numpy-discussion