Agreed: np.dot and fast_dot should do exactly the same thing.

It seems to me that trans_a and trans_b could be determined inside fast_dot, by adding a return argument to _check_forder on whether it transposed or not.