@GaelVaroquaux @pgervais 
We just had a discussion about the confusing call signature. Making a fast dot with the same call signature as np.dot will be a PITA, needles to mention the tests. I think what we should do is to rename `fast_dot`  `safe_gemm`, since it's supposed to handle dtype and order issues and at the same time expose the gemm API. Then, if blas is not available the arguments will be parsed in a way to allow for an equivalent dispatch to `np.dot`. We should add more information to the docs to really convey the point that everything has to be in F-order while the transposes are done inside blas. For `np.dot(A.T, A)` you need to `gemm(A.T, A.T, trans_b=True)` and if you don't comply with this it may consume lot's of memory ...