The Python 3 codes in this directory complement the associated paper,
"Randomized algorithms for distributed computation of principal component
analysis and singular value decomposition," by Huamin Li, Yuval Kluger, and
Mark Tygert.

Algorithm 1 of the associated paper corresponds to randtsvd1 in randtsvd.py.
Algorithm 2 corresponds to randtsvd2 in randtsvd.py.
Algorithm 3 corresponds to gram1 in gram.py.
Algorithm 4 corresponds to gram2 in gram.py.
Algorithm 5 corresponds to iterations in lowrank.py.
Algorithm 6 corresponds to ssvd in lowrank.py.
Algorithm 7 corresponds to ssvd in lowrank.py invoked with ifgram=False.
Algorithm 8 corresponds to ssvd in lowrank.py invoked with ifgram=True.

To use Algorithm 1, then Algorithm 2, in Algorithm 5, and feed the resulting
outputs to Algorithm 6, simply invoke ssvd in lowrank.py with ifgram=False.
To use Algorithm 3, then Algorithm 4, in Algorithm 5, and feed the resulting
outputs to Algorithm 6, simply invoke ssvd in lowrank.py with ifgram=True.

Note that randtsvd.py depends on fastrand.py (the latter implements fast random
orthogonal transformations).
