`casting` here is the safeness of `dtype` casting. It does the same thing as the casting kwarg on ufuncs. More info on this is here: http://docs.scipy.org/doc/numpy/reference/ufuncs.html#casting-rules

This is useful because in testing I can set casting to `'unsafe'` and use a single data set to test most of these functions.