I’m using a Scala library which (I believe) wraps a java library which does some linear algebra computations.

There is a function which is documented to return THE singular value decomposition. First of all I was

under the impression that the SVD was not unique. But ignoring that question for the moment.

The svd function in this library accepts a rectangular matrix, but I am always using a square matrix.

It returns (U,s,V) where U and V are nxn square matrices and s is a vector (1xn).

However, in some cases UV does not equal the identity.

Does this seem suspicious?

Sometimes the U and V given back are negative inverses of each other.

I.e., UV = -I.

Does that sound like a bug in the svd function? Or does UV=I only if the matrix is positive definite?

For example, if I test it with a 1×1 matrix M=(-4.034101137641814), a number I obtained with a random number generator

then svd returns ((-1.0), (4.034101137641814),(1.0)) rather than ((1.0), (-4.034101137641814),(1.0)) as I would expect.

Does it sound to you like a bug, or is my understanding wrong?