Just following up on this. The Smith normal form with the transform
matrices is now available in SymPy's master branch (thanks to Isuru
Fernando):
https://github.com/sympy/sympy/pull/17451
To test it you can install sympy from master like:
pip install git+
https://github.com/sympy/sympy.git@master
It returns the inverses of the matrices V and W that you were expecting:
In [4]: from sympy.matrices.normalforms import smith_normal_decomp
In [5]: A = randMatrix(3, 4)
In [6]: D, v, w = smith_normal_decomp(A)
In [7]: D == v*A*w
Out[7]: True
In [9]: V, W = v.inv(), w.inv()
In [10]: A == V*D*W
Out[10]: True
--
Oscar