Random¶
Gaussian¶
An \(m \times n\) matrix is Gaussian if each entry is independently drawn from a normal distribution.
-
void
Gaussian(DistMatrix<T, U, V> &A, int m, int n, T mean = 0, Base<T> stddev = 1)¶ Sets the matrix
Ato an \(m \times n\) Gaussian matrix with the specified mean and standard deviation.
-
void
MakeGaussian(DistMatrix<T, U, V> &A, T mean = 0, Base<T> stddev = 1)¶ Changes each entry to an independent sample from the specified normal distribution.
Wigner¶
A Hermitian matrix whose entries in one triangle are all independent samples from a normal distribution. The spectra of these matrices are well-studied.
-
void
Wigner(DistMatrix<T, U, V> &A, int n, T mean = 0, Base<T> stddev = 1)¶ Sets the matrix
Ato an \(n \times n\) Wigner matrix with the specified mean and standard deviation.
Haar¶
The Haar distribution is the uniform distribution over the space of real or complex unitary matrices.
-
void
Haar(DistMatrix<F> &A, int n)¶ Draws
Afrom the Haar distribution. The current scheme performs a QR factorization of a Gaussian matrix, but Stewart introduced a well-known scheme which only requires quadratic work for the implicit representation as a product of random Householder reflectors.
-
void
ImplicitHaar(DistMatrix<F> &A, DistMatrix<F, MD, STAR> &t, int n)¶ Sets
Ato a set of Householder reflectors with the same structure as the result of a QR decomposition. The product of these reflectors is a sample from the Haar distribution.
Uniform¶
We call an \(m \times n\) matrix is uniformly random if each entry is drawn from a uniform distribution over some ball \(B_r(x)\), which is centered around some point \(x\) and of radius \(r\).
-
void
Uniform(DistMatrix<T, U, V> &A, int m, int n, T center = 0, Base<T> radius = 1)¶ Set the matrix
Ato an \(m \times n\) matrix with each entry sampled from the uniform distribution centered at center with radius radius.
-
void
MakeUniform(DistMatrix<T, U, V> &A, T center = 0, Base<T> radius = 1)¶ Sample each entry of
Afrom \(U(B_r(x))\), where \(r\) is given byradiusand \(x\) is given bycenter.
HermitianUniformSpectrum¶
These routines sample a diagonal matrix from the specified interval of the real line and then perform a similarity transformation using a random Householder transform.
-
void
HermitianUniformSpectrum(DistMatrix<F, U, V> &A, int n, Base<F> lower = 0, Base<F> upper = 1)¶ Build the \(n \times n\) matrix
Awith a spectrum sampled uniformly from the interval \((lower,upper]\).
-
void
MakeHermitianUniformSpectrum(DistMatrix<F, U, V> &A, Base<F> lower = 0, Base<F> upper = 1)¶ Sample the entries of the square matrix
Afrom the interval \((lower,upper]\).
NormalUniformSpectrum¶
These routines sample a diagonal matrix from the specified ball in the complex plane and then perform a similarity transformation using a random Householder transform.
-
void
NormalUniformSpectrum(Matrix<Complex<Real>> &A, int n, Complex<Real> center = 0, Real radius = 1)¶
-
void
NormalUniformSpectrum(DistMatrix<Complex<Real>, U, V> &A, int n, Complex<Real> center = 0, Real radius = 1)¶ Build the \(n \times n\) matrix
Awith a spectrum sampled uniformly from the ball \(B_{\mathrm{radius}}(\mathrm{center})\).
-
void
MakeNormalUniformSpectrum(Matrix<Complex<Real>> &A, Complex<Real> center = 0, Real radius = 1)¶
-
void
MakeNormalUniformSpectrum(DistMatrix<Complex<Real>, U, V> &A, Complex<Real> center = 0, Real radius = 1)¶ Sample the entries of the square matrix
Afrom the ball in the complex plane centered atcenterwith radiusradius.
