qml.bose.christiansen_mapping¶
- christiansen_mapping(bose_operator, ps=False, wire_map=None, tol=None)[source]¶
Convert a bosonic operator to a qubit operator using the Christiansen mapping.
This mapping assumes that the maximum number of allowed bosonic states is 2 and works only for Christiansen bosons defined in J. Chem. Phys. 120, 2140 (2004). The bosonic creation and annihilation operators are mapped to the Pauli operators as
b†0=(X0−iY02),...,b†n=Xn−iYn2,and
b0=(X0+iY02),...,bn=Xn+iYn2,where X, Y, and Z are the Pauli operators.
- Parameters
bose_operator (BoseWord, BoseSentence) – the bosonic operator
ps (bool) – Whether to return the result as a
PauliSentence
instead of an operator. Defaults toFalse
.wire_map (dict) – A dictionary defining how to map the states of the Bose operator to qubit wires. If
None
, integers used to label the bosonic states will be used as wire labels. Defaults toNone
.tol (float) – tolerance for discarding the imaginary part of the coefficients
- Returns
A linear combination of qubit operators.
- Return type
Union[PauliSentence, Operator]
Example
>>> w = qml.bose.BoseWord({(0,0):"+", (1,1): "-"}) >>> qml.christiansen_mapping(w) ( 0.25 * (X(0) @ X(1)) + 0.25j * (X(0) @ Y(1)) + -0.25j * (Y(0) @ X(1)) + (0.25+0j) * (Y(0) @ Y(1)) )