|
mptensor v0.4.0
Parallel Library for Tensor Network Methods
|
Function to decompose a tensor by randomized algorithms.
| int mptensor::rsvd | ( | const Tensor< Matrix, C > & | a, |
| const Axes & | axes_row, | ||
| const Axes & | axes_col, | ||
| Tensor< Matrix, C > & | u, | ||
| std::vector< double > & | s, | ||
| Tensor< Matrix, C > & | vt, | ||
| const size_t | target_rank | ||
| ) |
RSVD with oversamp = target_rank.
| int mptensor::rsvd | ( | const Tensor< Matrix, C > & | a, |
| const Axes & | axes_row, | ||
| const Axes & | axes_col, | ||
| Tensor< Matrix, C > & | u, | ||
| std::vector< double > & | s, | ||
| Tensor< Matrix, C > & | vt, | ||
| const size_t | target_rank, | ||
| const size_t | oversamp | ||
| ) |
Singular value decomposition by randomized algorithm.
For example,
calculates the following decomposition.
\[ A_{abcd} \simeq \sum_{i=0}^{k-1} U_{adi} S_i (V^\dagger)_{ibc}, \]
where \( k \) is the target rank.
| [in] | a | A tensor to be decomposed. |
| [in] | axes_row | Axes for left singular vectors. |
| [in] | axes_col | Axes for right singular vectors. |
| [out] | u | Tensor \( U \) corresponds to left signular vectors. |
| [out] | s | Singluar values. |
| [out] | vt | Tensor \( V^\dagger \) corresponds to right singular vectors. |
| [in] | target_rank | The number of singular values to be calculated |
| [in] | oversamp | Oversampling parameter for randomized algorithm |
| int mptensor::rsvd | ( | Func1 & | multiply_row, |
| Func2 & | multiply_col, | ||
| const Shape & | shape_row, | ||
| const Shape & | shape_col, | ||
| Tensor< Matrix, C > & | u, | ||
| std::vector< double > & | s, | ||
| Tensor< Matrix, C > & | vt, | ||
| const size_t | target_rank | ||
| ) |
RSVD with oversamp = target_rank.
| int mptensor::rsvd | ( | Func1 & | multiply_row, |
| Func2 & | multiply_col, | ||
| const Shape & | shape_row, | ||
| const Shape & | shape_col, | ||
| Tensor< Matrix, C > & | u, | ||
| std::vector< double > & | s, | ||
| Tensor< Matrix, C > & | vt, | ||
| const size_t | target_rank, | ||
| const size_t | oversamp | ||
| ) |
Singular value decomposition by randomized algorithm.
| [in] | multiply_row | A function object which takes a Tensor with Shape(shape_col+[target_rank+oversamp]) and returns a Tensor with Shape(shape_row+[target_rank+oversamp]). |
| [in] | multiply_col | A function object which takes a Tensor with Shape([target_rank+oversamp]+shape_row) and returns a Tensor with Shape([target_rank+oversamp]+shape_col). |
| [in] | shape_row | Shape of row indices. |
| [in] | shape_col | Shape of column indices. |
| [out] | u | Tensor \( U \) corresponds to left singular vectors. Its shape is Shape(shape_row+[target_rank]). |
| [out] | s | Singular values. |
| [out] | vt | Tensor \( V^\dagger \) corresponds to right singular vectors. Its shape is Shape([target_rank]+shape_col). |
| [in] | target_rank | The number of singular values to be calculated |
| [in] | oversamp | Oversampling parameter for randomized algorithm |