Quantum++  v0.8.6
C++11 quantum computing library
functions.h File Reference

Generic quantum computing functions. More...

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

 qpp
 Quantum++ main namespace.
 

Functions

template<typename Derived >
dyn_mat< typename Derived::Scalar > qpp::transpose (const Eigen::MatrixBase< Derived > &A)
 Transpose. More...
 
template<typename Derived >
dyn_mat< typename Derived::Scalar > qpp::conjugate (const Eigen::MatrixBase< Derived > &A)
 Complex conjugate. More...
 
template<typename Derived >
dyn_mat< typename Derived::Scalar > qpp::adjoint (const Eigen::MatrixBase< Derived > &A)
 Adjoint. More...
 
template<typename Derived >
dyn_mat< typename Derived::Scalar > qpp::inverse (const Eigen::MatrixBase< Derived > &A)
 Inverse. More...
 
template<typename Derived >
Derived::Scalar qpp::trace (const Eigen::MatrixBase< Derived > &A)
 Trace. More...
 
template<typename Derived >
Derived::Scalar qpp::det (const Eigen::MatrixBase< Derived > &A)
 Determinant. More...
 
template<typename Derived >
Derived::Scalar qpp::logdet (const Eigen::MatrixBase< Derived > &A)
 Logarithm of the determinant. More...
 
template<typename Derived >
Derived::Scalar qpp::sum (const Eigen::MatrixBase< Derived > &A)
 Element-wise sum of A. More...
 
template<typename Derived >
Derived::Scalar qpp::prod (const Eigen::MatrixBase< Derived > &A)
 Element-wise product of A. More...
 
template<typename Derived >
double qpp::norm (const Eigen::MatrixBase< Derived > &A)
 Frobenius norm. More...
 
template<typename Derived >
std::pair< dyn_col_vect< cplx >, cmat > qpp::eig (const Eigen::MatrixBase< Derived > &A)
 Full eigen decomposition. More...
 
template<typename Derived >
dyn_col_vect< cplx > qpp::evals (const Eigen::MatrixBase< Derived > &A)
 Eigenvalues. More...
 
template<typename Derived >
cmat qpp::evects (const Eigen::MatrixBase< Derived > &A)
 Eigenvectors. More...
 
template<typename Derived >
std::pair< dyn_col_vect< double >, cmat > qpp::heig (const Eigen::MatrixBase< Derived > &A)
 Full eigen decomposition of Hermitian expression. More...
 
template<typename Derived >
dyn_col_vect< double > qpp::hevals (const Eigen::MatrixBase< Derived > &A)
 Hermitian eigenvalues. More...
 
template<typename Derived >
cmat qpp::hevects (const Eigen::MatrixBase< Derived > &A)
 Hermitian eigenvectors. More...
 
template<typename Derived >
std::tuple< cmat, dyn_col_vect< double >, cmat > qpp::svd (const Eigen::MatrixBase< Derived > &A)
 Full singular value decomposition. More...
 
template<typename Derived >
dyn_col_vect< double > qpp::svals (const Eigen::MatrixBase< Derived > &A)
 Singular values. More...
 
template<typename Derived >
cmat qpp::svdU (const Eigen::MatrixBase< Derived > &A)
 Left singular vectors. More...
 
template<typename Derived >
cmat qpp::svdV (const Eigen::MatrixBase< Derived > &A)
 Right singular vectors. More...
 
template<typename Derived >
cmat qpp::funm (const Eigen::MatrixBase< Derived > &A, cplx(*f)(const cplx &))
 Functional calculus f(A) More...
 
template<typename Derived >
cmat qpp::sqrtm (const Eigen::MatrixBase< Derived > &A)
 Matrix square root. More...
 
template<typename Derived >
cmat qpp::absm (const Eigen::MatrixBase< Derived > &A)
 Matrix absolut value. More...
 
template<typename Derived >
cmat qpp::expm (const Eigen::MatrixBase< Derived > &A)
 Matrix exponential. More...
 
template<typename Derived >
cmat qpp::logm (const Eigen::MatrixBase< Derived > &A)
 Matrix logarithm. More...
 
template<typename Derived >
cmat qpp::sinm (const Eigen::MatrixBase< Derived > &A)
 Matrix sin. More...
 
template<typename Derived >
cmat qpp::cosm (const Eigen::MatrixBase< Derived > &A)
 Matrix cos. More...
 
template<typename Derived >
cmat qpp::spectralpowm (const Eigen::MatrixBase< Derived > &A, const cplx z)
 Matrix power. More...
 
template<typename Derived >
dyn_mat< typename Derived::Scalar > qpp::powm (const Eigen::MatrixBase< Derived > &A, idx n)
 Matrix power. More...
 
template<typename Derived >
double qpp::schatten (const Eigen::MatrixBase< Derived > &A, double p)
 Schatten matrix norm. More...
 
template<typename OutputScalar , typename Derived >
dyn_mat< OutputScalar > qpp::cwise (const Eigen::MatrixBase< Derived > &A, OutputScalar(*f)(const typename Derived::Scalar &))
 Functor. More...
 
template<typename T >
dyn_mat< typename T::Scalar > qpp::kron (const T &head)
 Kronecker product. More...
 
template<typename T , typename... Args>
dyn_mat< typename T::Scalar > qpp::kron (const T &head, const Args &...tail)
 Kronecker product. More...
 
template<typename Derived >
dyn_mat< typename Derived::Scalar > qpp::kron (const std::vector< Derived > &As)
 Kronecker product. More...
 
template<typename Derived >
dyn_mat< typename Derived::Scalar > qpp::kron (const std::initializer_list< Derived > &As)
 Kronecker product. More...
 
template<typename Derived >
dyn_mat< typename Derived::Scalar > qpp::kronpow (const Eigen::MatrixBase< Derived > &A, idx n)
 Kronecker power. More...
 
template<typename T >
dyn_mat< typename T::Scalar > qpp::dirsum (const T &head)
 Direct sum. More...
 
template<typename T , typename... Args>
dyn_mat< typename T::Scalar > qpp::dirsum (const T &head, const Args &...tail)
 Direct sum. More...
 
template<typename Derived >
dyn_mat< typename Derived::Scalar > qpp::dirsum (const std::vector< Derived > &As)
 Direct sum. More...
 
template<typename Derived >
dyn_mat< typename Derived::Scalar > qpp::dirsum (const std::initializer_list< Derived > &As)
 Direct sum. More...
 
template<typename Derived >
dyn_mat< typename Derived::Scalar > qpp::dirsumpow (const Eigen::MatrixBase< Derived > &A, idx n)
 Direct sum power. More...
 
template<typename Derived >
dyn_mat< typename Derived::Scalar > qpp::reshape (const Eigen::MatrixBase< Derived > &A, idx rows, idx cols)
 Reshape. More...
 
template<typename Derived1 , typename Derived2 >
dyn_mat< typename Derived1::Scalar > qpp::comm (const Eigen::MatrixBase< Derived1 > &A, const Eigen::MatrixBase< Derived2 > &B)
 Commutator. More...
 
template<typename Derived1 , typename Derived2 >
dyn_mat< typename Derived1::Scalar > qpp::anticomm (const Eigen::MatrixBase< Derived1 > &A, const Eigen::MatrixBase< Derived2 > &B)
 Anti-commutator. More...
 
template<typename Derived >
dyn_mat< typename Derived::Scalar > qpp::prj (const Eigen::MatrixBase< Derived > &V)
 Projector. More...
 
template<typename Derived >
dyn_mat< typename Derived::Scalar > qpp::grams (const std::vector< Derived > &Vs)
 Gram-Schmidt orthogonalization. More...
 
template<typename Derived >
dyn_mat< typename Derived::Scalar > qpp::grams (const std::initializer_list< Derived > &Vs)
 Gram-Schmidt orthogonalization. More...
 
template<typename Derived >
dyn_mat< typename Derived::Scalar > qpp::grams (const Eigen::MatrixBase< Derived > &A)
 Gram-Schmidt orthogonalization. More...
 
std::vector< idx > qpp::n2multiidx (idx n, const std::vector< idx > &dims)
 Non-negative integer index to multi-index. More...
 
idx qpp::multiidx2n (const std::vector< idx > &midx, const std::vector< idx > &dims)
 Multi-index to non-negative integer index. More...
 
ket qpp::mket (const std::vector< idx > &mask, const std::vector< idx > &dims)
 Multi-partite qudit ket. More...
 
ket qpp::mket (const std::vector< idx > &mask, idx d=2)
 Multi-partite qudit ket. More...
 
cmat qpp::mprj (const std::vector< idx > &mask, const std::vector< idx > &dims)
 Projector onto multi-partite qudit ket. More...
 
cmat qpp::mprj (const std::vector< idx > &mask, idx d=2)
 Projector onto multi-partite qudit ket. More...
 
template<typename InputIterator >
std::vector< double > qpp::abssq (InputIterator first, InputIterator last)
 Computes the absolute values squared of an STL-like range of complex numbers. More...
 
template<typename Container >
std::vector< double > qpp::abssq (const Container &c, typename std::enable_if< is_iterable< Container >::value >::type *=nullptr)
 Computes the absolute values squared of an STL-like container. More...
 
template<typename Derived >
std::vector< double > qpp::abssq (const Eigen::MatrixBase< Derived > &A)
 Computes the absolute values squared of an Eigen expression. More...
 
template<typename InputIterator >
std::iterator_traits< InputIterator >::value_type qpp::sum (InputIterator first, InputIterator last)
 Element-wise sum of an STL-like range. More...
 
template<typename Container >
Container::value_type qpp::sum (const Container &c)
 Element-wise sum of the elements of an STL-like container. More...
 
template<typename InputIterator >
std::iterator_traits< InputIterator >::value_type qpp::prod (InputIterator first, InputIterator last)
 Element-wise product of an STL-like range. More...
 
template<typename Container >
Container::value_type qpp::prod (const Container &c)
 Element-wise product of the elements of an STL-like container. More...
 
template<typename Derived >
dyn_col_vect< typename Derived::Scalar > qpp::rho2pure (const Eigen::MatrixBase< Derived > &A)
 Finds the pure state representation of a matrix proportional to a projector onto a pure state. More...
 
template<typename T >
std::vector< T > qpp::complement (std::vector< T > subsys, idx N)
 Constructs the complement of a subsystem vector. More...
 
template<typename Derived >
std::vector< double > qpp::rho2bloch (const Eigen::MatrixBase< Derived > &A)
 Computes the 3-dimensional real Bloch vector corresponding to the qubit density matrix A. More...
 
cmat qpp::bloch2rho (const std::vector< double > &r)
 Computes the density matrix corresponding to the 3-dimensional real Bloch vector r. More...
 

Detailed Description

Generic quantum computing functions.