Honestly, not sure how to pass keyword arguments in C, you probably have to pass a dictionary. I was just wondering about the best way to calcluate these things, there may be a copy more then necessary, but it may also be OK to just do it.

If I remember right, you currently have something like:
```
tmp = np.empty_like(arr, dtype=arr.dtype if not np.issubdtype(arr.dtype, np.integer) else np.float64)
ufunc1(arr, something, out=tmp)
ufunc2(tmp, something, out=tmp)
ret[...] = tmp # casts
```
When you don't have an integer array, the last assignment is maybe unnecessary. Considering that we got divisions going on, I guess likely the only thing to safe here would be a bit of RAM though. I just noticed the old code probably did skip that then. Maybe have a look at it, but it is likely not worth it.

With the unsafe thing I meant that:
```
ufunc2(tmp, something, out=ret, casting='unsafe')
```
would basically combine the last two previous lines into one operation, which could be used maybe.