mlpack::math Namespace Reference

Miscellaneous math routines. More...

## Classes

class  ColumnsToBlocks
Transform the columns of the given matrix into a block format. More...

class  RangeType
Simple real-valued range. More...

## Typedefs

typedef RangeType< double > Range
3.0.0 TODO: break reverse-compatibility by changing RangeType to Range. More...

## Functions

template
<
typename
T
>
T::elem_type AccuLog (const T &x)
Sum a vector of log values. More...

void Center (const arma::mat &x, arma::mat &xCentered)
Creates a centered matrix, where centering is done by subtracting the sum over the columns (a column vector) from each column of the matrix. More...

double ClampNonNegative (const double d)
Forces a number to be non-negative, turning negative numbers into zero. More...

double ClampNonPositive (const double d)
Forces a number to be non-positive, turning positive numbers into zero. More...

double ClampRange (double value, const double rangeMin, const double rangeMax)
Clamp a number between a particular range. More...

template
<
typename
ElemType
>
void ClearAlias (arma::Mat< ElemType > &mat)
Clear an alias so that no data is overwritten. More...

template
<
typename
ElemType
>
void ClearAlias (arma::SpMat< ElemType > &)
Clear an alias for a sparse matrix. More...

template
<
typename
eT
>
arma::Mat< eT > ColumnCovariance (const arma::Mat< eT > &A, const size_t norm_type=0)

template
<
typename
T
>
arma::Mat< std::complex< T > > ColumnCovariance (const arma::Mat< std::complex< T > > &A, const size_t norm_type=0)

void CustomRandomSeed (const size_t seed)

void FixedRandomSeed ()
Set the random seed to a fixed number. More...

template
<
typename
T
>

template
<
typename
ElemType
>
arma::Cube< ElemType > MakeAlias (arma::Cube< ElemType > &input, const bool strict=true)
Make an alias of a dense cube. More...

template
<
typename
ElemType
>
arma::Mat< ElemType > MakeAlias (arma::Mat< ElemType > &input, const bool strict=true)
Make an alias of a dense matrix. More...

template
<
typename
ElemType
>
arma::Row< ElemType > MakeAlias (arma::Row< ElemType > &input, const bool strict=true)
Make an alias of a dense row. More...

template
<
typename
ElemType
>
arma::Col< ElemType > MakeAlias (arma::Col< ElemType > &input, const bool strict=true)
Make an alias of a dense column. More...

template
<
typename
ElemType
>
arma::SpMat< ElemType > MakeAlias (const arma::SpMat< ElemType > &input, const bool=true)
Make a copy of a sparse matrix (an alias is not possible). More...

template
<
typename
ElemType
>
arma::SpRow< ElemType > MakeAlias (const arma::SpRow< ElemType > &input, const bool=true)
Make a copy of a sparse row (an alias is not possible). More...

template
<
typename
ElemType
>
arma::SpCol< ElemType > MakeAlias (const arma::SpCol< ElemType > &input, const bool=true)
Make a copy of a sparse column (an alias is not possible). More...

template
<
typename
CubeType
>
CubeType MultiplyCube2Cube (const CubeType &cubeA, const CubeType &cubeB, const bool aTranspose=false, const bool bTranspose=false)
Matrix multiplication of slices of two cubes. More...

template
<
typename
CubeType
,
typename
MatType
>
CubeType MultiplyCube2Mat (const CubeType &cubeA, const MatType &matB, const bool aTranspose=false, const bool bTranspose=false)
Matrix multiplication of all slices of a cube with a matrix. More...

template
<
typename
MatType
,
typename
CubeType
>
CubeType MultiplyMat2Cube (const MatType &matA, const CubeType &cubeB, const bool aTranspose=false, const bool bTranspose=false)
Matrix multiplication of a matrix and all the slices of a cube. More...

void ObtainDistinctSamples (const size_t loInclusive, const size_t hiExclusive, const size_t maxNumSamples, arma::uvec &distinctSamples)
Obtains no more than maxNumSamples distinct samples. More...

void Orthogonalize (const arma::mat &x, arma::mat &W)
Orthogonalize x and return the result in W, using eigendecomposition. More...

void Orthogonalize (arma::mat &x)
Orthogonalize x in-place. More...

double RandBernoulli (const double input)
Generates a 0/1 specified by the input. More...

int RandInt (const int hiExclusive)
Generates a uniform random integer. More...

int RandInt (const int lo, const int hiExclusive)
Generates a uniform random integer. More...

double RandNormal ()
Generates a normally distributed random number with mean 0 and variance 1. More...

double RandNormal (const double mean, const double variance)
Generates a normally distributed random number with specified mean and variance. More...

double Random ()
Generates a uniform random number between 0 and 1. More...

double Random (const double lo, const double hi)
Generates a uniform random number in the specified range. More...

void RandomBasis (arma::mat &basis, const size_t d)
Create a random d-dimensional orthogonal basis, storing it in the given matrix. More...

void RandomSeed (const size_t seed)
Set the random seed used by the random functions (Random() and RandInt()). More...

void RandVector (arma::vec &v)
Overwrites a dimension-N vector to a random vector on the unit sphere in R^N. More...

void RemoveRows (const arma::mat &input, const std::vector< size_t > &rowsToRemove, arma::mat &output)
Remove a certain set of rows in a matrix while copying to a second matrix. More...

template
<
typename
MatType
,
typename
LabelsType
>
void ShuffleData (const MatType &inputPoints, const LabelsType &inputLabels, MatType &outputPoints, LabelsType &outputLabels, const std::enable_if_t<!arma::is_SpMat< MatType >::value > *=0, const std::enable_if_t<!arma::is_Cube< MatType >::value > *=0)
Shuffle a dataset and associated labels (or responses). More...

template
<
typename
MatType
,
typename
LabelsType
>
void ShuffleData (const MatType &inputPoints, const LabelsType &inputLabels, MatType &outputPoints, LabelsType &outputLabels, const std::enable_if_t< arma::is_SpMat< MatType >::value > *=0, const std::enable_if_t<!arma::is_Cube< MatType >::value > *=0)
Shuffle a sparse dataset and associated labels (or responses). More...

template
<
typename
MatType
,
typename
LabelsType
>
void ShuffleData (const MatType &inputPoints, const LabelsType &inputLabels, MatType &outputPoints, LabelsType &outputLabels, const std::enable_if_t<!arma::is_SpMat< MatType >::value > *=0, const std::enable_if_t< arma::is_Cube< MatType >::value > *=0, const std::enable_if_t< arma::is_Cube< LabelsType >::value > *=0)
Shuffle a cube-shaped dataset and associated labels (or responses) which are also cube-shaped. More...

template
<
typename
MatType
,
typename
LabelsType
,
typename
WeightsType
>
void ShuffleData (const MatType &inputPoints, const LabelsType &inputLabels, const WeightsType &inputWeights, MatType &outputPoints, LabelsType &outputLabels, WeightsType &outputWeights, const std::enable_if_t<!arma::is_SpMat< MatType >::value > *=0, const std::enable_if_t<!arma::is_Cube< MatType >::value > *=0)
Shuffle a dataset and associated labels (or responses) and weights. More...

template
<
typename
MatType
,
typename
LabelsType
,
typename
WeightsType
>
void ShuffleData (const MatType &inputPoints, const LabelsType &inputLabels, const WeightsType &inputWeights, MatType &outputPoints, LabelsType &outputLabels, WeightsType &outputWeights, const std::enable_if_t< arma::is_SpMat< MatType >::value > *=0, const std::enable_if_t<!arma::is_Cube< MatType >::value > *=0)
Shuffle a sparse dataset and associated labels (or responses) and weights. More...

template
<
typename
T
>
Sign (const T x)
Signum function. More...

void Smat (const arma::vec &input, arma::mat &output)
The inverse of Svec. More...

void Svec (const arma::mat &input, arma::vec &output)
Upper triangular representation of a symmetric matrix, scaled such that, dot(Svec(A), Svec(B)) == dot(A, B) for symmetric A, B. More...

void Svec (const arma::sp_mat &input, arma::sp_vec &output)

size_t SvecIndex (size_t i, size_t j, size_t n)
Return the index such that A[i,j] == factr(i, j) * svec(A)[pos(i, j)], where factr(i, j) = sqrt(2) if i != j and 1 otherwise. More...

void SymKronId (const arma::mat &A, arma::mat &op)
If A is a symmetric matrix, then SymKronId returns an operator Op such that. More...

void VectorPower (arma::vec &vec, const double power)
Auxiliary function to raise vector elements to a specific power. More...

void WhitenUsingSVD (const arma::mat &x, arma::mat &xWhitened, arma::mat &whiteningMatrix)
Whitens a matrix using the singular value decomposition of the covariance matrix. More...

## Variables

MLPACK_EXPORT std::mt19937 randGen
MLPACK_EXPORT is required for global variables; it exports the symbols correctly on Windows. More...

MLPACK_EXPORT std::normal_distribution randNormalDist

MLPACK_EXPORT std::uniform_real_distribution randUniformDist

## Detailed Description

Miscellaneous math routines.

## ◆ Range

 typedef RangeType Range

3.0.0 TODO: break reverse-compatibility by changing RangeType to Range.

Definition at line 19 of file range.hpp.

## ◆ AccuLog()

 T::elem_type mlpack::math::AccuLog ( const T & x )

Sum a vector of log values.

(T should be an Armadillo type.)

Parameters
 x vector of log values
Returns
log(e^x0 + e^x1 + ...)

## ◆ Center()

 void mlpack::math::Center ( const arma::mat & x, arma::mat & xCentered )

Creates a centered matrix, where centering is done by subtracting the sum over the columns (a column vector) from each column of the matrix.

Parameters
 x Input matrix xCentered Matrix to write centered output into

## ◆ ClampNonNegative()

 double mlpack::math::ClampNonNegative ( const double d )
inline

Forces a number to be non-negative, turning negative numbers into zero.

Avoids branching costs (this is a measurable improvement).

Parameters
 d Double to clamp.
Returns
0 if d < 0, d otherwise.

Definition at line 28 of file clamp.hpp.

Referenced by ClampRange().

## ◆ ClampNonPositive()

 double mlpack::math::ClampNonPositive ( const double d )
inline

Forces a number to be non-positive, turning positive numbers into zero.

Avoids branching costs (this is a measurable improvement).

Parameters
 d Double to clamp.
Returns
0 if d > 0, d otherwise.

Definition at line 40 of file clamp.hpp.

Referenced by ClampRange().

## ◆ ClampRange()

 double mlpack::math::ClampRange ( double value, const double rangeMin, const double rangeMax )
inline

Clamp a number between a particular range.

Parameters
 value The number to clamp. rangeMin The first of the range. rangeMax The last of the range.
Returns
max(rangeMin, min(rangeMax, d)).

Definition at line 53 of file clamp.hpp.

References ClampNonNegative(), and ClampNonPositive().

## ◆ ClearAlias() [1/2]

 void mlpack::math::ClearAlias ( arma::Mat< ElemType > & mat )

Clear an alias so that no data is overwritten.

This resets the matrix if it is an alias (and does nothing otherwise).

Definition at line 110 of file make_alias.hpp.

## ◆ ClearAlias() [2/2]

 void mlpack::math::ClearAlias ( arma::SpMat< ElemType > & )

Clear an alias for a sparse matrix.

This does nothing because no sparse matrices can have aliases.

Definition at line 121 of file make_alias.hpp.

## ◆ ColumnCovariance() [1/2]

 arma::Mat mlpack::math::ColumnCovariance ( const arma::Mat< eT > & A, const size_t norm_type = `0` )
inline

Referenced by PCAWhitening::Fit().

## ◆ ColumnCovariance() [2/2]

 arma::Mat< std::complex > mlpack::math::ColumnCovariance ( const arma::Mat< std::complex< T > > & A, const size_t norm_type = `0` )
inline

## ◆ CustomRandomSeed()

 void mlpack::math::CustomRandomSeed ( const size_t seed )
inline

Definition at line 72 of file random.hpp.

## ◆ FixedRandomSeed()

 void mlpack::math::FixedRandomSeed ( )
inline

Set the random seed to a fixed number.

This function is used in binding tests to set a fixed random seed before calling mlpack(). In this way we can test whether a certain parameter makes a difference to execution of CLI binding. Refer to pull request #1306 for discussion on this function.

Definition at line 64 of file random.hpp.

 T mlpack::math::LogAdd ( T x, T y )

Parameters
 x log value y log value
Returns
log(e^x + e^y)

## ◆ MakeAlias() [1/7]

 arma::Cube mlpack::math::MakeAlias ( arma::Cube< ElemType > & input, const bool strict = `true` )

Make an alias of a dense cube.

If strict is true, then the alias cannot be resized or pointed at new memory.

Definition at line 24 of file make_alias.hpp.

## ◆ MakeAlias() [2/7]

 arma::Mat mlpack::math::MakeAlias ( arma::Mat< ElemType > & input, const bool strict = `true` )

Make an alias of a dense matrix.

If strict is true, then the alias cannot be resized or pointed at new memory.

Definition at line 37 of file make_alias.hpp.

## ◆ MakeAlias() [3/7]

 arma::Row mlpack::math::MakeAlias ( arma::Row< ElemType > & input, const bool strict = `true` )

Make an alias of a dense row.

If strict is true, then the alias cannot be resized or pointed at new memory.

Definition at line 50 of file make_alias.hpp.

## ◆ MakeAlias() [4/7]

 arma::Col mlpack::math::MakeAlias ( arma::Col< ElemType > & input, const bool strict = `true` )

Make an alias of a dense column.

If strict is true, then the alias cannot be resized or pointed at new memory.

Definition at line 62 of file make_alias.hpp.

## ◆ MakeAlias() [5/7]

 arma::SpMat mlpack::math::MakeAlias ( const arma::SpMat< ElemType > & input, const bool = `true` )

Make a copy of a sparse matrix (an alias is not possible).

The strict parameter is ignored.

Definition at line 74 of file make_alias.hpp.

## ◆ MakeAlias() [6/7]

 arma::SpRow mlpack::math::MakeAlias ( const arma::SpRow< ElemType > & input, const bool = `true` )

Make a copy of a sparse row (an alias is not possible).

The strict parameter is ignored.

Definition at line 86 of file make_alias.hpp.

## ◆ MakeAlias() [7/7]

 arma::SpCol mlpack::math::MakeAlias ( const arma::SpCol< ElemType > & input, const bool = `true` )

Make a copy of a sparse column (an alias is not possible).

The strict parameter is ignored.

Definition at line 98 of file make_alias.hpp.

## ◆ MultiplyCube2Cube()

 CubeType mlpack::math::MultiplyCube2Cube ( const CubeType & cubeA, const CubeType & cubeB, const bool aTranspose = `false`, const bool bTranspose = `false` )

Matrix multiplication of slices of two cubes.

This function expects both cubes to have the same number of slices. For example, a valid operation would be: cube A of shape (m, p, s) multiplied by cube B of shape (p, n, s) resulting in a cube of shape (m, n, s).

Parameters
 cubeA First cube. cubeB Second cube. aTranspose Whether slices of first cube have to be transposed. bTranspose Whether slices of second cube have to be transposed.

## ◆ MultiplyCube2Mat()

 CubeType mlpack::math::MultiplyCube2Mat ( const CubeType & cubeA, const MatType & matB, const bool aTranspose = `false`, const bool bTranspose = `false` )

Matrix multiplication of all slices of a cube with a matrix.

This function is used when the first object is a cube and the second object is a matrix. For example, a valid operation would be: cube A of shape (m, p, s) multiplied by a matrix of shape (p, n) resulting in a cube of shape (m, n, s).

Parameters
 cubeA The cube as the first operand. matB The matrix as the second operand. aTranspose Whether slices of cube have to be transposed. bTranspose Whether matrix has to be transposed.

## ◆ MultiplyMat2Cube()

 CubeType mlpack::math::MultiplyMat2Cube ( const MatType & matA, const CubeType & cubeB, const bool aTranspose = `false`, const bool bTranspose = `false` )

Matrix multiplication of a matrix and all the slices of a cube.

This function is used when the first object is a matrix and the second object is a cube. For example, a valid operation would be: matrix A of shape (m, p) multiplied by cube B of shape (p, n, s) resulting in a cube of shape (m, n, s).

Parameters
 matA The matrix as the first operand. cubeB The cube as the second operand. aTranspose Whether matrix has to be transposed. bTranspose Whether slices of cube have to be transposed.

## ◆ ObtainDistinctSamples()

 void mlpack::math::ObtainDistinctSamples ( const size_t loInclusive, const size_t hiExclusive, const size_t maxNumSamples, arma::uvec & distinctSamples )
inline

Obtains no more than maxNumSamples distinct samples.

Each sample belongs to [loInclusive, hiExclusive).

Parameters
 loInclusive The lower bound (inclusive). hiExclusive The high bound (exclusive). maxNumSamples The maximum number of samples to obtain. distinctSamples The samples that will be obtained.

Definition at line 153 of file random.hpp.

References RandInt().

## ◆ Orthogonalize() [1/2]

 void mlpack::math::Orthogonalize ( const arma::mat & x, arma::mat & W )

Orthogonalize x and return the result in W, using eigendecomposition.

We will be using the formula .

## ◆ Orthogonalize() [2/2]

 void mlpack::math::Orthogonalize ( arma::mat & x )

Orthogonalize x in-place.

This could be sped up by a custom implementation.

## ◆ RandBernoulli()

 double mlpack::math::RandBernoulli ( const double input )
inline

Generates a 0/1 specified by the input.

Definition at line 99 of file random.hpp.

References Random().

## ◆ RandInt() [1/2]

 int mlpack::math::RandInt ( const int hiExclusive )
inline

Generates a uniform random integer.

Definition at line 110 of file random.hpp.

References randUniformDist.

## ◆ RandInt() [2/2]

 int mlpack::math::RandInt ( const int lo, const int hiExclusive )
inline

Generates a uniform random integer.

Definition at line 118 of file random.hpp.

References randUniformDist.

## ◆ RandNormal() [1/2]

 double mlpack::math::RandNormal ( )
inline

Generates a normally distributed random number with mean 0 and variance 1.

Definition at line 127 of file random.hpp.

References randNormalDist.

Referenced by GaussianInitialization::Initialize().

## ◆ RandNormal() [2/2]

 double mlpack::math::RandNormal ( const double mean, const double variance )
inline

Generates a normally distributed random number with specified mean and variance.

Parameters
 mean Mean of distribution. variance Variance of distribution.

Definition at line 139 of file random.hpp.

References randNormalDist.

## ◆ Random() [1/2]

 double mlpack::math::Random ( )
inline

Generates a uniform random number between 0 and 1.

Definition at line 83 of file random.hpp.

References randUniformDist.

## ◆ Random() [2/2]

 double mlpack::math::Random ( const double lo, const double hi )
inline

Generates a uniform random number in the specified range.

Definition at line 91 of file random.hpp.

References randUniformDist.

## ◆ RandomBasis()

 void mlpack::math::RandomBasis ( arma::mat & basis, const size_t d )

Create a random d-dimensional orthogonal basis, storing it in the given matrix.

Parameters
 basis Matrix to store basis in. d Desired number of dimensions in the basis.

## ◆ RandomSeed()

 void mlpack::math::RandomSeed ( const size_t seed )
inline

Set the random seed used by the random functions (Random() and RandInt()).

The seed is casted to a 32-bit integer before being given to the random number generator, but a size_t is taken as a parameter for API consistency.

Parameters
 seed Seed for the random number generator.

Definition at line 40 of file random.hpp.

## ◆ RandVector()

 void mlpack::math::RandVector ( arma::vec & v )

Overwrites a dimension-N vector to a random vector on the unit sphere in R^N.

## ◆ RemoveRows()

 void mlpack::math::RemoveRows ( const arma::mat & input, const std::vector< size_t > & rowsToRemove, arma::mat & output )

Remove a certain set of rows in a matrix while copying to a second matrix.

Parameters
 input Input matrix to copy. rowsToRemove Vector containing indices of rows to be removed. output Matrix to copy non-removed rows into.

## ◆ ShuffleData() [1/5]

 void mlpack::math::ShuffleData ( const MatType & inputPoints, const LabelsType & inputLabels, MatType & outputPoints, LabelsType & outputLabels, const std::enable_if_t::value > * = `0`, const std::enable_if_t::value > * = `0` )

Shuffle a dataset and associated labels (or responses).

It is expected that inputPoints and inputLabels have the same number of columns (so, be sure that inputLabels, if it is a vector, is a row vector).

Shuffled data will be output into outputPoints and outputLabels.

Definition at line 28 of file shuffle_data.hpp.

## ◆ ShuffleData() [2/5]

 void mlpack::math::ShuffleData ( const MatType & inputPoints, const LabelsType & inputLabels, MatType & outputPoints, LabelsType & outputLabels, const std::enable_if_t< arma::is_SpMat< MatType >::value > * = `0`, const std::enable_if_t::value > * = `0` )

Shuffle a sparse dataset and associated labels (or responses).

It is expected that inputPoints and inputLabels have the same number of columns (so, be sure that inputLabels, if it is a vector, is a row vector).

Shuffled data will be output into outputPoints and outputLabels.

Definition at line 51 of file shuffle_data.hpp.

## ◆ ShuffleData() [3/5]

 void mlpack::math::ShuffleData ( const MatType & inputPoints, const LabelsType & inputLabels, MatType & outputPoints, LabelsType & outputLabels, const std::enable_if_t::value > * = `0`, const std::enable_if_t< arma::is_Cube< MatType >::value > * = `0`, const std::enable_if_t< arma::is_Cube< LabelsType >::value > * = `0` )

Shuffle a cube-shaped dataset and associated labels (or responses) which are also cube-shaped.

It is expected that inputPoints and inputLabels have the same number of columns.

Shuffled data will be output into outputPoints and outputLabels.

Definition at line 103 of file shuffle_data.hpp.

## ◆ ShuffleData() [4/5]

 void mlpack::math::ShuffleData ( const MatType & inputPoints, const LabelsType & inputLabels, const WeightsType & inputWeights, MatType & outputPoints, LabelsType & outputLabels, WeightsType & outputWeights, const std::enable_if_t::value > * = `0`, const std::enable_if_t::value > * = `0` )

Shuffle a dataset and associated labels (or responses) and weights.

It is expected that inputPoints and inputLabels and inputWeights have the same number of columns (so, be sure that inputLabels, if it is a vector, is a row vector).

Shuffled data will be output into outputPoints and outputLabels and outputWeights.

Definition at line 160 of file shuffle_data.hpp.

## ◆ ShuffleData() [5/5]

 void mlpack::math::ShuffleData ( const MatType & inputPoints, const LabelsType & inputLabels, const WeightsType & inputWeights, MatType & outputPoints, LabelsType & outputLabels, WeightsType & outputWeights, const std::enable_if_t< arma::is_SpMat< MatType >::value > * = `0`, const std::enable_if_t::value > * = `0` )

Shuffle a sparse dataset and associated labels (or responses) and weights.

It is expected that inputPoints and inputLabels and inputWeights have the same number of columns (so, be sure that inputLabels, if it is a vector, is a row vector).

Shuffled data will be output into outputPoints and outputLabels and outputWeights.

Definition at line 188 of file shuffle_data.hpp.

## ◆ Sign()

 T mlpack::math::Sign ( const T x )

Signum function.

Return 1 if x>0; return 0 if x=0; return -1 if x<0. Return type are the same as input type.

Parameters
 x Number of any type.

Definition at line 128 of file lin_alg.hpp.

## ◆ Smat()

 void mlpack::math::Smat ( const arma::vec & input, arma::mat & output )

The inverse of Svec.

That is, Smat(Svec(A)) == A.

Parameters
 input output A symmetric matrix

## ◆ Svec() [1/2]

 void mlpack::math::Svec ( const arma::mat & input, arma::vec & output )

Upper triangular representation of a symmetric matrix, scaled such that, dot(Svec(A), Svec(B)) == dot(A, B) for symmetric A, B.

Specifically,

Svec(K) = [ K_11, sqrt(2) K_12, ..., sqrt(2) K_1n, K_22, ..., sqrt(2) K_2n, ..., K_nn ]^T

Parameters
 input A symmetric matrix output

## ◆ Svec() [2/2]

 void mlpack::math::Svec ( const arma::sp_mat & input, arma::sp_vec & output )

## ◆ SvecIndex()

 size_t mlpack::math::SvecIndex ( size_t i, size_t j, size_t n )
inline

Return the index such that A[i,j] == factr(i, j) * svec(A)[pos(i, j)], where factr(i, j) = sqrt(2) if i != j and 1 otherwise.

Parameters
 i j n

## ◆ SymKronId()

 void mlpack::math::SymKronId ( const arma::mat & A, arma::mat & op )

If A is a symmetric matrix, then SymKronId returns an operator Op such that.

Op * svec(X) == svec(0.5 * (AX + XA))

for every symmetric matrix X

Parameters
 A op

## ◆ VectorPower()

 void mlpack::math::VectorPower ( arma::vec & vec, const double power )

Auxiliary function to raise vector elements to a specific power.

The sign is ignored in the power operation and then re-added. Useful for eigenvalues.

## ◆ WhitenUsingSVD()

 void mlpack::math::WhitenUsingSVD ( const arma::mat & x, arma::mat & xWhitened, arma::mat & whiteningMatrix )

Whitens a matrix using the singular value decomposition of the covariance matrix.

Whitening means the covariance matrix of the result is the identity matrix.

## ◆ randGen

 MLPACK_EXPORT std::mt19937 randGen

MLPACK_EXPORT is required for global variables; it exports the symbols correctly on Windows.

## ◆ randNormalDist

 MLPACK_EXPORT std::normal_distribution randNormalDist

Referenced by RandNormal().

## ◆ randUniformDist

 MLPACK_EXPORT std::uniform_real_distribution randUniformDist

Referenced by RandInt(), and Random().