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
A
to 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
A
to 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
A
from 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
A
to 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
A
to 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
A
from \(U(B_r(x))\), where \(r\) is given byradius
and \(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
A
with 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
A
from 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
A
with 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
A
from the ball in the complex plane centered atcenter
with radiusradius
.