mptensor v0.4.0
Parallel Library for Tensor Network Methods
Loading...
Searching...
No Matches
mptensor Namespace Reference

Namespaces

namespace  debug
 Namespace for debugging.
 
namespace  io_helper
 
namespace  lapack
 Namespace for the non-distributed Matrix class with LAPACK.
 
namespace  matrix_interface
 Nameclass for Matrix inteface.
 
namespace  mpi
 
namespace  mpi_wrapper
 Wrappers of MPI library.
 
namespace  random_tensor
 
namespace  scalapack
 Namespace for the distributed Matrix class with ScaLAPACK, PBLAS, and BLACS.
 

Classes

class  Index
 
class  Tensor
 Tensor class. The main object of mptensor. More...
 

Typedefs

typedef std::complex< doublecomplex
 
using DTensor = Tensor< scalapack::Matrix, double >
 
using ZTensor = Tensor< scalapack::Matrix, complex >
 
typedef Index Axes
 
typedef Index Shape
 

Functions

template<typename C >
constexpr size_t value_type_tag ()
 
template<>
constexpr size_t value_type_tag< double > ()
 
template<>
constexpr size_t value_type_tag< complex > ()
 
template<typename C >
constexpr charvalue_type_name ()
 
template<>
constexpr charvalue_type_name< double > ()
 
template<>
constexpr charvalue_type_name< complex > ()
 
Index range (const size_t start, const size_t stop)
 Create an increasing sequence. it is similar to range() in python.
 
Index range (const size_t stop)
 
bool is_no_transpose (const Axes &axes, const Axes &axes_map, size_t rank)
 
template<template< typename > class Matrix, typename C >
int 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.
 
template<template< typename > class Matrix, typename C >
int 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.
 
template<template< typename > class Matrix, typename C , typename Func1 , typename Func2 >
int 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.
 
template<template< typename > class Matrix, typename C , typename Func1 , typename Func2 >
int 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.
 
void set_seed (unsigned int seed)
 Set seed for random number generator.
 
template<template< typename > class Matrix, typename C >
Tensor< Matrix, Ctranspose (Tensor< Matrix, C > T, const Axes &axes)
 Transposition of tensor with lazy evaluation.
 
template<template< typename > class Matrix, typename C >
Tensor< Matrix, Ctranspose (const Tensor< Matrix, C > &T, const Axes &axes, size_t urank_new)
 Transposition of tensor without lazy evaluation.
 
template<template< typename > class Matrix, typename C >
Tensor< Matrix, Creshape (const Tensor< Matrix, C > &T, const Shape &shape_new)
 Change the shape of tensor.
 
template<template< typename > class Matrix, typename C >
Tensor< Matrix, Cslice (const Tensor< Matrix, C > &T, size_t n_axes, size_t i_begin, size_t i_end)
 Slice a tensor.
 
template<template< typename > class Matrix, typename C >
Tensor< Matrix, Cslice (const Tensor< Matrix, C > &T, const Index &index_begin, const Index &index_end)
 Slice a tensor.
 
template<template< typename > class Matrix, typename C >
Tensor< Matrix, Cextend (const Tensor< Matrix, C > &T, const Shape &shape_new)
 Extend the size of a tensor.
 
template<template< typename > class Matrix, typename C >
C trace (const Tensor< Matrix, C > &M)
 Trace of matrix (rank-2 tensor)
 
template<template< typename > class Matrix, typename C >
C trace (const Tensor< Matrix, C > &T, const Axes &axes_1, const Axes &axes_2)
 Full trace of tensor.
 
template<template< typename > class Matrix, typename C >
C trace (const Tensor< Matrix, C > &A, const Tensor< Matrix, C > &B, const Axes &axes_a, const Axes &axes_b)
 Full contraction of two tensors.
 
template<template< typename > class Matrix, typename C >
Tensor< Matrix, Ccontract (const Tensor< Matrix, C > &T, const Axes &axes_1, const Axes &axes_2)
 Partial trace of tensor.
 
template<template< typename > class Matrix, typename C >
Tensor< Matrix, Ctensordot (const Tensor< Matrix, C > &a, const Tensor< Matrix, C > &b, const Axes &axes_a, const Axes &axes_b)
 Compute tensor dot product.
 
template<template< typename > class Matrix, typename C >
Tensor< Matrix, Ckron (const Tensor< Matrix, C > &a, const Tensor< Matrix, C > &b)
 Compute the Kronecker product.
 
template<template< typename > class Matrix, typename C >
int svd (const Tensor< Matrix, C > &a, std::vector< double > &s)
 Singular value decomposition for rank-2 tensor (matrix)
 
template<template< typename > class Matrix, typename C >
int svd (const Tensor< Matrix, C > &a, Tensor< Matrix, C > &u, std::vector< double > &s, Tensor< Matrix, C > &vt)
 Singular value decomposition for rank-2 tensor (matrix)
 
template<template< typename > class Matrix, typename C >
int svd (const Tensor< Matrix, C > &a, const Axes &axes_row, const Axes &axes_col, std::vector< double > &s)
 Singular value decomposition for tensor.
 
template<template< typename > class Matrix, typename C >
int svd (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)
 Singular value decomposition for tensor.
 
template<template< typename > class Matrix, typename C >
int psvd (const Tensor< Matrix, C > &a, std::vector< double > &s, const size_t target_rank)
 Partial SVD for rank-2 tensor (matrix)
 
template<template< typename > class Matrix, typename C >
int psvd (const Tensor< Matrix, C > &a, Tensor< Matrix, C > &u, std::vector< double > &s, Tensor< Matrix, C > &vt, const size_t target_rank)
 Partial SVD for rank-2 tensor (matrix)
 
template<template< typename > class Matrix, typename C >
int psvd (const Tensor< Matrix, C > &a, const Axes &axes_row, const Axes &axes_col, std::vector< double > &s, const size_t target_rank)
 Partial SVD for tensor.
 
template<template< typename > class Matrix, typename C >
int psvd (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)
 Partial SVD for tensor.
 
template<template< typename > class Matrix, typename C >
int qr (const Tensor< Matrix, C > &a, Tensor< Matrix, C > &q, Tensor< Matrix, C > &r)
 QR decomposition of matrix (rank-2 tensor)
 
template<template< typename > class Matrix, typename C >
int qr (const Tensor< Matrix, C > &a, const Axes &axes_row, const Axes &axes_col, Tensor< Matrix, C > &q, Tensor< Matrix, C > &r)
 QR decomposition of tensor.
 
template<template< typename > class Matrix, typename C >
int eigh (const Tensor< Matrix, C > &a, std::vector< double > &eigval, Tensor< Matrix, C > &eigvec)
 
template<template< typename > class Matrix, typename C >
int eigh (const Tensor< Matrix, C > &a, std::vector< double > &eigval)
 
template<template< typename > class Matrix, typename C >
int eigh (const Tensor< Matrix, C > &a, const Axes &axes_row, const Axes &axes_col, std::vector< double > &eigval, Tensor< Matrix, C > &eigvec)
 
template<template< typename > class Matrix, typename C >
int eigh (const Tensor< Matrix, C > &a, const Axes &axes_row, const Axes &axes_col, std::vector< double > &w)
 Compute the eigenvalues of a complex Hermitian or real symmetric tensor.
 
template<template< typename > class Matrix, typename C >
int eigh (const Tensor< Matrix, C > &a, const Axes &axes_row_a, const Axes &axes_col_a, const Tensor< Matrix, C > &b, const Axes &axes_row_b, const Axes &axes_col_b, std::vector< double > &eigval, Tensor< Matrix, C > &eigvec)
 
template<template< typename > class Matrix, typename C >
int eig (const Tensor< Matrix, C > &a, std::vector< complex > &w, Tensor< Matrix, complex > &z)
 Compute the eigenvalues and eigenvectors of a general matrix (rank-2 tensor)
 
template<template< typename > class Matrix, typename C >
int eig (const Tensor< Matrix, C > &a, std::vector< complex > &w)
 Compute only the eigenvalues of a general matrix (rank-2 tensor)
 
template<template< typename > class Matrix, typename C >
int eig (const Tensor< Matrix, C > &a, const Axes &axes_row, const Axes &axes_col, std::vector< complex > &w, Tensor< Matrix, complex > &z)
 Compute the eigenvalues and eigenvectors of a general tensor.
 
template<template< typename > class Matrix, typename C >
int eig (const Tensor< Matrix, C > &a, const Axes &axes_row, const Axes &axes_col, std::vector< complex > &w)
 Compute the eigenvalues of a general tensor.
 
template<template< typename > class Matrix, typename C >
int solve (const Tensor< Matrix, C > &a, const std::vector< C > &b, std::vector< C > &x)
 Solve linear equation \( A\vec{x}=\vec{b}\).
 
template<template< typename > class Matrix, typename C >
int solve (const Tensor< Matrix, C > &a, const Tensor< Matrix, C > &b, Tensor< Matrix, C > &x)
 Solve linear equation \( AX=B\).
 
template<template< typename > class Matrix, typename C >
int solve (const Tensor< Matrix, C > &a, const Tensor< Matrix, C > &b, Tensor< Matrix, C > &x, const Axes &axes_row_a, const Axes &axes_col_a, const Axes &axes_row_b, const Axes &axes_col_b)
 Solve linear equation \( AX=B\).
 
template<template< typename > class Matrix, typename C >
Tensor< Matrix, Coperator+ (Tensor< Matrix, C > rhs)
 Unary plus.
 
template<template< typename > class Matrix, typename C >
Tensor< Matrix, Coperator- (Tensor< Matrix, C > rhs)
 Unary minus.
 
template<template< typename > class Matrix, typename C >
Tensor< Matrix, Coperator+ (Tensor< Matrix, C > lhs, const Tensor< Matrix, C > &rhs)
 Addition.
 
template<template< typename > class Matrix, typename C >
Tensor< Matrix, Coperator- (Tensor< Matrix, C > lhs, const Tensor< Matrix, C > &rhs)
 Subtraction.
 
template<template< typename > class Matrix, typename C , typename D >
Tensor< Matrix, Coperator* (Tensor< Matrix, C > lhs, D rhs)
 Tensor-scalar multiplication.
 
template<template< typename > class Matrix, typename C , typename D >
Tensor< Matrix, Coperator/ (Tensor< Matrix, C > lhs, D rhs)
 Scalar division.
 
template<template< typename > class Matrix, typename C , typename D >
Tensor< Matrix, Coperator* (D lhs, Tensor< Matrix, C > rhs)
 Scalar-tensor multiplication.
 
template<template< typename > class Matrix, typename C >
Tensor< Matrix, Csqrt (Tensor< Matrix, C > t)
 Take square-root of each element.
 
template<template< typename > class Matrix, typename C >
Tensor< Matrix, Cconj (Tensor< Matrix, C > t)
 Take conjugate of each element.
 
template<template< typename > class Matrix, typename C >
double max (const Tensor< Matrix, C > &t)
 Return the maximum element. For complex, same as max_abs().
 
template<template< typename > class Matrix, typename C >
double min (const Tensor< Matrix, C > &t)
 Return the minimum element. For complex, same as min_abs().
 
template<template< typename > class Matrix, typename C >
double max_abs (const Tensor< Matrix, C > &t)
 Return maximum of the absolute value of an element.
 
template<template< typename > class Matrix, typename C >
double min_abs (const Tensor< Matrix, C > &t)
 Return minimum of the absolute value of an element.
 
template<template< typename > class Matrix, typename C >
std::ostream & operator<< (std::ostream &out, const Tensor< Matrix, C > &t)
 Output elements of tensor in numpy style.
 

Typedef Documentation

◆ Axes

◆ DTensor

◆ Shape

◆ ZTensor

Function Documentation

◆ is_no_transpose()

bool mptensor::is_no_transpose ( const Axes axes,
const Axes axes_map,
size_t  rank 
)

◆ operator+()

Index mptensor::operator+ ( const Index ,
const Index  
)
related

◆ operator<<()

std::ostream & mptensor::operator<< ( std::ostream &  os,
const Index idx 
)
related

◆ range() [1/2]

Index mptensor::range ( const size_t  start,
const size_t  stop 
)

Create an increasing sequence. it is similar to range() in python.

◆ range() [2/2]

Index mptensor::range ( const size_t  stop)
inline

◆ value_type_name()

template<typename C >
constexpr char * mptensor::value_type_name ( )
constexpr

◆ value_type_name< complex >()

template<>
constexpr char * mptensor::value_type_name< complex > ( )
constexpr

◆ value_type_name< double >()

template<>
constexpr char * mptensor::value_type_name< double > ( )
constexpr

◆ value_type_tag()

template<typename C >
constexpr size_t mptensor::value_type_tag ( )
constexpr

◆ value_type_tag< complex >()

template<>
constexpr size_t mptensor::value_type_tag< complex > ( )
constexpr

◆ value_type_tag< double >()

template<>
constexpr size_t mptensor::value_type_tag< double > ( )
constexpr