Quantum++
v0.8.2
C++11 quantum computing library
|
Generic quantum computing functions. More...
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... | |
Generic quantum computing functions.