27 #ifndef CLASSES_STATES_H_
28 #define CLASSES_STATES_H_
105 ket psi =
mket({0, 0}, {d, d});
106 for(
idx i = 1; i < d; ++i)
108 psi +=
mket({i, i}, {d, d});
111 return psi/std::sqrt(d);
121 x0 << 1 / std::sqrt(2.), 1 / std::sqrt(2.);
122 x1 << 1 / std::sqrt(2.), -1 / std::sqrt(2.);
123 y0 << 1 / std::sqrt(2.), 1_i / std::sqrt(2.);
124 y1 << 1 / std::sqrt(2.), -1_i / std::sqrt(2.);
137 b00 << 1 / std::sqrt(2.), 0, 0, 1 / std::sqrt(2.);
139 b01 << 0, 1 / std::sqrt(2.), 1 / std::sqrt(2.), 0;
141 b10 << 1 / std::sqrt(2.), 0, 0, -1 / std::sqrt(2.);
143 b11 << 0, 1 / std::sqrt(2.), -1 / std::sqrt(2.), 0;
151 GHZ << 1, 0, 0, 0, 0, 0, 0, 1;
152 GHZ =
GHZ / std::sqrt(2.);
153 W << 0, 1, 1, 0, 1, 0, 0, 0;
154 W =
W / std::sqrt(3.);
157 pW =
W *
W.adjoint();
ket W
W state.
Definition: states.h:82
cmat pb01
Projector onto the Bell-01 state.
Definition: states.h:76
ket GHZ
GHZ state.
Definition: states.h:81
cmat pb11
Projector onto the Bell-11 state.
Definition: states.h:78
Singleton policy class, used internally to implement the singleton pattern via CRTP (Curiously recurr...
Definition: singleton.h:77
Eigen::VectorXcd ket
Complex (double precision) dynamic Eigen column vector.
Definition: types.h:51
ket y0
Pauli Sigma-Y 0-eigenstate |y+>
Definition: states.h:45
Quantum++ main namespace.
Definition: codes.h:30
const Singleton class that implements most commonly used states
Definition: states.h:37
cmat pb00
Projector onto the Bell-00 state.
Definition: states.h:75
ket z1
Pauli Sigma-Z 1-eigenstate |1>
Definition: states.h:48
ket b01
Bell-01 state (following the convention in Nielsen and Chuang)
Definition: states.h:67
ket b00
Bell-00 state (following the convention in Nielsen and Chuang)
Definition: states.h:65
ket mes(idx d=2) const
Maximally entangled state of 2 qudits.
Definition: states.h:95
cmat pb10
Projector onto the Bell-10 state.
Definition: states.h:77
cmat pW
Projector onto the W state.
Definition: states.h:86
~States()=default
Default destructor.
cmat py0
Projector onto the Pauli Sigma-Y 0-eigenstate |y+>
Definition: states.h:55
Generates custom exceptions, used when validating function parameters.
Definition: exception.h:39
cmat px0
Projector onto the Pauli Sigma-X 0-eigenstate |+><+|.
Definition: states.h:51
ket x1
Pauli Sigma-X 1-eigenstate |->
Definition: states.h:44
ket y1
Pauli Sigma-Y 1-eigenstate |y->
Definition: states.h:46
ket z0
Pauli Sigma-Z 0-eigenstate |0>
Definition: states.h:47
ket b11
Bell-11 state (following the convention in Nielsen and Chuang)
Definition: states.h:71
cmat pz0
Projector onto the Pauli Sigma-Z 0-eigenstate |0><0|.
Definition: states.h:59
cmat pGHZ
Projector onto the GHZ state.
Definition: states.h:85
Eigen::MatrixXcd cmat
Complex (double precision) dynamic Eigen matrix.
Definition: types.h:61
ket mket(const std::vector< idx > &mask, const std::vector< idx > &dims)
Multi-partite qudit ket.
Definition: functions.h:1464
std::size_t idx
Non-negative integer index.
Definition: types.h:36
ket b10
Bell-10 state (following the convention in Nielsen and Chuang)
Definition: states.h:69
ket x0
Pauli Sigma-X 0-eigenstate |+>
Definition: states.h:43
cmat py1
Projector onto the Pauli Sigma-Y 1-eigenstate |y->
Definition: states.h:57
cmat px1
Projector onto the Pauli Sigma-X 1-eigenstate |-><-|.
Definition: states.h:53
cmat pz1
Projector onto the Pauli Sigma-Z 1-eigenstate |1><1|.
Definition: states.h:61
States()
Definition: states.h:118