Subject: dgeev and dgesvd arguments and return values
From: Robert Dodier
Date: Sun, 21 Oct 2007 13:57:00 -0600
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