math
- 
class Matrix
 - 
Public Functions
- 
explicit Matrix(int num_row = 0, int num_column = 0)
 - Parameters:
 num_row – [in] Number of rows.
num_column – [in] Number of columns.
- 
Matrix(int num_row, int num_column, const std::vector<double> &vector)
 - Parameters:
 num_row – [in] Number of rows.
num_column – [in] Number of columns.
vector – [in] Diagonal elements.
- 
inline int GetNumRow() const
 - Returns:
 Number of rows.
- 
inline int GetNumColumn() const
 - Returns:
 Number of columns.
- 
void Resize(int num_row, int num_column)
 Resize matrix.
- Parameters:
 num_row – [in] Number of rows.
num_column – [in] Number of columns.
- 
inline double *operator[](int row)
 - Parameters:
 row – [in] Row.
- 
inline const double *operator[](int row) const
 - Parameters:
 row – [in] Row.
- 
double &At(int row, int column)
 Get element.
- Parameters:
 row – [in] i.
column – [in] j.
- Returns:
 (i, j)-th element.
- 
const double &At(int row, int column) const
 Get element.
- Parameters:
 row – [in] i.
column – [in] j.
- Returns:
 (i, j)-th element.
- 
Matrix &operator-=(const Matrix &matrix)
 - Parameters:
 matrix – [in] Subtrahend.
- Returns:
 Difference.
- 
Matrix operator-(const Matrix &matrix) const
 - Parameters:
 matrix – [in] Subtrahend.
- Returns:
 Difference.
- 
Matrix operator*(const Matrix &matrix) const
 - Parameters:
 matrix – [in] Multiplicand.
- Returns:
 Product.
- 
void Fill(double value)
 Overwrite all elements with a value.
- Parameters:
 value – [in] Value.
- 
void FillDiagonal(double value)
 Overwrite diagonal elements with a value.
- Parameters:
 value – [in] Diagonal value.
- 
void Negate()
 Negate all elements of matrix.
- 
bool Transpose(Matrix *transposed_matrix) const
 Transpose matrix.
- Parameters:
 transposed_matrix – [out] Transposed matrix.
- Returns:
 True on success, false on failure.
- 
bool GetSubmatrix(int row_offset, int num_row_of_submatrix, int column_offset, int num_column_of_submatrix, Matrix *submatrix) const
 Get submatrix.
- Parameters:
 row_offset – [in] Offset of row.
num_row_of_submatrix – [in] Number of rows of submatrix.
column_offset – [in] Offset of column.
num_column_of_submatrix – [in] Number of columns of submatrix.
submatrix – [out] Submatrix.
- Returns:
 True on success, false on failure.
- 
bool GetDeterminant(double *determinant) const
 Compute determinant.
- Parameters:
 determinant – [out] Determinant.
- Returns:
 True on success, false on failure.
 - 
explicit Matrix(int num_row = 0, int num_column = 0)
 
- 
class Matrix2D
 2D matrix.
Public Functions
- 
Matrix2D()
 Make 2D matrix.
- 
inline double *operator[](int row)
 - Parameters:
 row – [in] Row.
- 
inline const double *operator[](int row) const
 - Parameters:
 row – [in] Row.
- 
double &At(int row, int column)
 Get element.
- Parameters:
 row – [in] i.
column – [in] j.
- Returns:
 (i, j)-th element.
- 
const double &At(int row, int column) const
 Get element.
- Parameters:
 row – [in] i.
column – [in] j.
- Returns:
 (i, j)-th element.
- 
void Fill(double value)
 Overwrite all elements with a value.
- Parameters:
 value – [in] Value.
- 
void FillDiagonal(double value)
 Overwrite diagonal elements with a value.
- Parameters:
 value – [in] Diagonal value.
- 
void Negate()
 Negate all elements of matrix.
Public Static Functions
- 
static bool Add(const Matrix2D &matrix, Matrix2D *output)
 Compute sum.
- Parameters:
 matrix – [in] Addend.
output – [inout] Result.
- Returns:
 True on success, false on failure.
- 
static bool Add(const Matrix2D &first_matrix, const Matrix2D &second_matrix, Matrix2D *output)
 Compute sum.
- Parameters:
 first_matrix – [in] Augend.
second_matrix – [in] Addend.
output – [out] Result.
- Returns:
 True on success, false on failure.
- 
static bool Subtract(const Matrix2D &matrix, Matrix2D *output)
 Compute difference.
- Parameters:
 matrix – [in] Subtrahend.
output – [inout] Result.
- Returns:
 True on success, false on failure.
- 
static bool Subtract(const Matrix2D &first_matrix, const Matrix2D &second_matrix, Matrix2D *output)
 Compute difference.
- Parameters:
 first_matrix – [in] Minuend.
second_matrix – [in] Subtrahend.
output – [out] Result.
- Returns:
 True on success, false on failure.
- 
Matrix2D()
 
- 
class SymmetricMatrix
 Symmetric matrix.
Public Functions
- 
explicit SymmetricMatrix(int num_dimension = 0)
 - Parameters:
 num_dimension – [in] Size of matrix.
- 
SymmetricMatrix(const SymmetricMatrix &matrix)
 - Parameters:
 matrix – [in] Symmetric matrix.
- 
SymmetricMatrix &operator=(const SymmetricMatrix &matrix)
 - Parameters:
 matrix – [in] Symmetric matrix.
- 
inline int GetNumDimension() const
 - Returns:
 Number of dimensions.
- 
void Resize(int num_dimension)
 Resize matrix.
- Parameters:
 num_dimension – [in] Number of dimensions.
- 
double &At(int row, int column)
 Get element.
- Parameters:
 row – [in] i.
column – [in] j.
- Returns:
 (i, j)-th element.
- 
const double &At(int row, int column) const
 Get element.
- Parameters:
 row – [in] i.
column – [in] j.
- Returns:
 (i, j)-th element.
- 
inline bool Empty() const
 Check whether the matrix is empty.
- Returns:
 True if the matrix is empty.
- 
void Fill(double value)
 Overwrite all elements with a value.
- Parameters:
 value – [in] Value.
- 
bool GetDiagonal(std::vector<double> *diagonal_elements) const
 Get diagonal elements.
- Parameters:
 diagonal_elements – [out] Diagonal elements.
- Returns:
 True on success, false on failure.
- 
bool SetDiagonal(const std::vector<double> &diagonal_elements) const
 Set diagonal elements.
- Parameters:
 diagonal_elements – [in] Diagonal elements.
- Returns:
 True on success, false on failure.
- 
bool CholeskyDecomposition(SymmetricMatrix *lower_triangular_matrix, std::vector<double> *diagonal_elements) const
 Perform Cholesky decomposition.
- Parameters:
 lower_triangular_matrix – [out] Lower triangular matrix.
diagonal_elements – [out] Diagonal elements.
- Returns:
 True on success, false on failure.
- 
bool Invert(SymmetricMatrix *inverse_matrix) const
 Compute inverse matrix.
- Parameters:
 inverse_matrix – [out] Inverse matrix.
- Returns:
 True on success, false on failure.
- 
class Row
 A row of symmetric matrix.a
Public Functions
- 
inline Row(const SymmetricMatrix &matrix, int row)
 - Parameters:
 matrix – [in] Symmetric matrix.
row – [in] Row index.
- 
double &operator[](int column)
 - Parameters:
 column – [in] Column index.
- Returns:
 Element.
- 
const double &operator[](int column) const
 - Parameters:
 column – [in] Column index.
- Returns:
 Element.
- 
inline Row(const SymmetricMatrix &matrix, int row)
 
- 
explicit SymmetricMatrix(int num_dimension = 0)
 
- 
class SymmetricSystemSolver
 Solve the following symmetric system:
\[ \boldsymbol{A} \boldsymbol{x} = \boldsymbol{b}, \]where \(\boldsymbol{A}\) is a symmetric matrix.The inputs are \(\boldsymbol{A}\) and \(M\)-th order constant vector:
\[ \begin{array}{cccc} b(0), & b(1), & \ldots, & b(M). \end{array} \]The outputs are the unknown coefficients\[ \begin{array}{cccc} x(0), & x(1), & \ldots, & x(M). \end{array} \]Public Functions
- 
explicit SymmetricSystemSolver(int num_order)
 - Parameters:
 num_order – [in] Order of vector, \(M\).
- 
inline int GetNumOrder() const
 - Returns:
 Order of vector.
- 
inline bool IsValid() const
 - Returns:
 True if this object is valid.
- 
bool Run(const SymmetricMatrix &coefficient_matrix, const std::vector<double> &constant_vector, std::vector<double> *solution_vector, SymmetricSystemSolver::Buffer *buffer) const
 - Parameters:
 coefficient_matrix – [in] \((M+1, M+1)\) matrix \(\boldsymbol{A}\).
constant_vector – [in] \(M\)-th order vector \(\boldsymbol{b}\).
solution_vector – [out] \(M\)-th order vector \(\boldsymbol{x}\).
buffer – [out] Buffer.
- Returns:
 True on success, false on failure.
- 
class Buffer
 Buffer for SymmetricSystemSolver class.
- 
explicit SymmetricSystemSolver(int num_order)
 
- 
class ToeplitzPlusHankelSystemSolver
 Solve the following Toeplitz-plus-Hankel system:
\[ (\boldsymbol{T} + \boldsymbol{H}) \boldsymbol{x} = \boldsymbol{b}, \]where\[\begin{split}\begin{eqnarray} \boldsymbol{T} &=& \left[ \begin{array}{ccccc} t(0) & t(-1) & t(-2) & \cdots & t(-M) \\ t(1) & t(0) & t(-1) & \cdots & t(-M+1) \\ t(2) & t(1) & t(0) & \ddots & \vdots \\ \vdots & \vdots & \ddots & \ddots & t(-1) \\ t(M) & t(M-1) & \cdots & t(1) & t(0) \end{array} \right], \\ \boldsymbol{H} &=& \left[ \begin{array}{ccccc} h(0) & h(1) & h(2) & \cdots & h(M) \\ h(1) & h(2) & h(3) & \cdots & h(M+1) \\ h(2) & t(3) & h(4) & \ddots & \vdots \\ \vdots & \vdots & \ddots & \ddots & h(2M-1) \\ h(M) & h(M+1) & \cdots & h(2M-1)& h(2M) \end{array} \right], \\ \boldsymbol{b} &=& \left[ \begin{array}{cccc} b(0) & b(1) & \cdots & b(M) \end{array} \right]^\mathsf{T}. \\ \end{eqnarray}\end{split}\]The inputs are \((2M+1)\) Toeplitz coefficient vector:
\[ \begin{array}{cccc} t(-M), & t(-M+1), & \ldots, & t(M), \end{array} \]\((2M+1)\) Hankel coefficient vector:\[ \begin{array}{cccc} h(0), & h(1), & \ldots, & h(2M), \end{array} \]and \((M+1)\) constant vector:\[ \begin{array}{cccc} b(0), & b(1), & \ldots, & b(M). \end{array} \]The outputs are the unknown coefficients\[ \begin{array}{cccc} x(0), & x(1), & \ldots, & x(M). \end{array} \][1] G. Merchant and T. Parks, “Efficient solution of a Toeplitz-plus-Hankel coefficient matrix system of equations,” IEEE Transactions on Acoustics, Speech, and Signal Processing, vol. 30, no. 1, pp. 40-44, 1982.
Public Functions
- 
explicit ToeplitzPlusHankelSystemSolver(int num_order, bool coefficients_modification = true)
 - Parameters:
 num_order – [in] Order of vector, \(M\).
coefficients_modification – [in] If true, perform coefficients modification.
- 
inline int GetNumOrder() const
 - Returns:
 Order of vector.
- 
inline bool GetCoefficientsModificationFlag()
 - Returns:
 Ture if coefficients modification is enabled.
- 
inline bool IsValid() const
 - Returns:
 True if this object is valid.
- 
bool Run(const std::vector<double> &toeplitz_coefficient_vector, const std::vector<double> &hankel_coefficient_vector, const std::vector<double> &constant_vector, std::vector<double> *solution_vector, ToeplitzPlusHankelSystemSolver::Buffer *buffer) const
 - Parameters:
 toeplitz_coefficient_vector – [in] \(2M\)-th order coefficient vector of Toeplitz matrix \(\boldsymbol{T}\).
hankel_coefficient_vector – [in] \(2M\)-th order coefficient vector of Hankel matrix \(\boldsymbol{H}\).
constant_vector – [in] \(M\)-th order constant vector \(\boldsymbol{b}\).
solution_vector – [out] \(M\)-th order solution vector \(\boldsymbol{x}\).
buffer – [out] Buffer.
- Returns:
 True on success, false on failure.
- 
class Buffer
 Buffer for ToeplitzPlusHankelSystemSolver class.
- 
explicit ToeplitzPlusHankelSystemSolver(int num_order, bool coefficients_modification = true)
 
- 
class VandermondeSystemSolver
 Solve the following Vandermonde system:
\[\begin{split} \left[ \begin{array}{cccc} 1 & 1 & \cdots & 1 \\ x(0) & x(1) & \cdots & x(M) \\ x^2(0) & x^2(1) & \cdots & x^2(M) \\ \vdots & \vdots & \ddots & \vdots \\ x^M(0) & x^M(1) & \cdots & x^M(M) \end{array} \right] \left[ \begin{array}{c} w(0) \\ w(1) \\ w(2) \\ \vdots \\ w(M) \end{array} \right] = \left[ \begin{array}{c} q(0) \\ q(1) \\ q(2) \\ \vdots \\ q(M) \end{array} \right]. \end{split}\]The inputs are
\[ \begin{array}{cccc} x(0), & x(1), & \ldots, & x(M), \end{array} \]and\[ \begin{array}{cccc} q(0), & q(1), & \ldots, & q(M). \end{array} \]The outputs are the unknown coefficients\[ \begin{array}{cccc} w(0), & w(1), & \ldots, & w(M). \end{array} \][1] W. H. Press, et al., “Numerical recipes in C: The art of scientific computing,” Cambridge University Press, pp. 90-92, 1992.
Public Functions
- 
explicit VandermondeSystemSolver(int num_order)
 - Parameters:
 num_order – [in] Order of vector, \(M\).
- 
inline int GetNumOrder() const
 - Returns:
 Order of vector.
- 
inline bool IsValid() const
 - Returns:
 True if this object is valid.
- 
bool Run(const std::vector<double> &coefficient_vector, const std::vector<double> &constant_vector, std::vector<double> *solution_vector, VandermondeSystemSolver::Buffer *buffer) const
 - Parameters:
 coefficient_vector – [in] \(M\)-th order vector \(\boldsymbol{x}\).
constant_vector – [in] \(M\)-th order vector \(\boldsymbol{q}\).
solution_vector – [out] \(M\)-th order vector \(\boldsymbol{w}\).
buffer – [out] Buffer.
- Returns:
 True on success, false on failure.
- 
class Buffer
 Buffer for VandermondeSystemSolver class.
- 
explicit VandermondeSystemSolver(int num_order)