+def specnorm(mat):
+ """
+ Return the spectral norm of a matrix.
+
+ The spectral norm of a matrix is its largest singular value, and it
+ corresponds to the operator norm induced by the vector Euclidean norm.
+
+ Parameters
+ ----------
+
+ mat : matrix
+ The matrix whose spectral norm you want.
+
+ Examples:
+
+ >>> specnorm(identity(3))
+ 1.0
+
+ >>> specnorm(5*identity(4))
+ 5.0
+
+ """
+ num_eigs = min(mat.size)
+ eigs = matrix(0, (num_eigs, 1), tc='d')
+ typecode = 'd'
+ if any([isinstance(entry, complex) for entry in mat]):
+ typecode = 'z'
+ dummy = matrix(mat, mat.size, tc=typecode)
+ gesdd(dummy, eigs)
+
+ if len(eigs) > 0:
+ return eigs[0]
+ else:
+ return 0
+
+