dgeev and dgesvd arguments and return values



Ray,

I wonder if we can make the arguments and return values
of dgeev and dgesvd consistent. I'll recommend the following:

dgeev(A, leftp, rightp) => [eigenvalues, if leftp then (left
eigenvectors) else false, if rightp then (right eigenvectors) else
false]
dgeev(A, leftp) = dgeev(A, leftp, false)
dgeev(A) = dgeev(A, false, false)

dgesvd(A, leftp, rightp) => [singular values, if leftp then (left
singular vectors) else false, if rightp then (right singular vectors)
else false)]
dgesvd(A, leftp) = dgesvd(A, leftp, false)
dgesvd(A) = dgesvd(A, false, false)

At present dgeev returns a list of one, two, or three elements,
depending on whether the optional boolean flags for right and
left eigenvectors (in that order) are turned on.

dgesvd always returns a list of three elements. When the flags
for left and right singular vectors are turned on, the vectors are
returned, otherwise a matrix full of elements = false are returned.
The flags are not optional arguments.

As it happens the actual return values are not accurately
described by the documentation strings for $DGEEV and $DGESVD.

Yes, no, maybe?

best

Robert