The short answer is that I see what you expect when I run your code.

I haven't had time to check things out thoroughly but a longer answer is that something is still strange.  For example check the following.

```python
import numpy as np
from numpy.testing import assert_array_almost_equal
from scipy.linalg.blas import dtrmm

a = np.array([[1., 2., ],
    [-2., 1.]], order='F')
b = np.array([[3., 4., -1.],
    [5., 6., -2.]], order='F')

result = dtrmm(1., a, b)
expected = np.array([[13., 16., -5.], [5., 6., -2.]])
print np.may_share_memory(result, b)
```

In this case I get `True`.

I think that one possible reason that your code gives False but my code gives True is that copy() changes the order from F to C.

The reason I care about F order is that the matrices returned by some blas functions are in F order.