arguments: m:matrix n:int >> SmithNormalFormComputation
Create a computation to compute the Smith normal form for the matrix 'm'. The base ring of 'm' should be a computable PID, e.g. ZZ or k[x], where k is a field. If 'n' is non-zero, then enough information is collected to give the isomorphism matrix from the cokernel of the smith normal form matrix to the cokernel of 'm'. As usual with computations, 'ggcalc' is used to perform the computation. 'gggetchange' gets the matrix representing this isomorphism (the change of basis matrix), assuming that the parameter 'n' is non-zero. 'gggetgb' returns the matrix whose cokernel is isomorphic to coker m. If the computation is not complete, an intermediate value is returned. Finally, 'ggstatus' returns an integer representing the current status of the computation. (0 = computation is complete).