cirq.LinearCombinationOfOperations

Represents operator defined by linear combination of gate operations.

Inherits From: LinearDict

If G1, ..., Gn are gate operations, {q1_1, ..., q1_k1}, {q2_1, ..., q2_k2}, ..., {qn_1, ..., qn_kn} are (not necessarily disjoint) sets of qubits and b1, b2, ..., bn are complex numbers, then

LinearCombinationOfOperations({
    G1(q1_1, ..., q1_k1): b1,
    G2(q2_1, ..., q2_k2): b2,
    ...,
    Gn(qn_1, ..., qn_kn): bn})

represents the linear operator

A = b1 G1(q1_1, ..., q1_k1) +

  + b2 G2(q2_1, ..., q2_k2) +
  + ... +
  + bn Gn(qn_1, ..., qn_kn)

where in each term qubits not explicitly listed are assumed to be acted on by the identity operator. Note that A may not be unitary or even normal.

terms Mapping of gate operations to coefficients in the linear combination being initialized.

qubits Returns qubits acted on self.

Methods

clean

View source

Remove terms with coefficients of absolute value atol or less.

clear

D.clear() -> None. Remove all items from D.

copy

View source

fromkeys

View source

get

View source

D.get(k[,d]) -> D[k] if k in D, else d. d defaults to None.

items

View source

D.items() -> a set-like object providing a view on D's items

keys

View source

D.keys() -> a set-like object providing a view on D's keys

matrix

View source

Reconstructs matrix of self using unitaries of underlying operations.

Raises
TypeError if any of the gates in self does not provide a unitary.

pop

D.pop(k[,d]) -> v, remove specified key and return the corresponding value. If key is not found, d is returned if given, otherwise KeyError is raised.

popitem

D.popitem() -> (k, v), remove and return some (key, value) pair as a 2-tuple; but raise KeyError if D is empty.

setdefault

D.setdefault(k[,d]) -> D.get(k,d), also set D[k]=d if k not in D

update

View source

D.update([E, ]**F) -> None. Update D from mapping/iterable E and F. If E present and has a .keys() method, does: for k in E: D[k] = E[k] If E present and lacks .keys() method, does: for (k, v) in E: D[k] = v In either case, this is followed by: for k, v in F.items(): D[k] = v

values

View source

D.values() -> an object providing a view on D's values

__add__

View source

__bool__

View source

__contains__

View source

__eq__

View source

Checks whether two linear combinations are exactly equal.

Presence or absence of terms with coefficients exactly equal to zero does not affect outcome.

Not appropriate for most practical purposes due to sensitivity to numerical error in floating point coefficients. Use cirq.approx_eq() instead.

__getitem__

View source

__iter__

View source

__len__

View source

__mul__

View source

__ne__

View source

Checks whether two linear combinations are not exactly equal.

See eq().

__neg__

View source

__pow__

View source

__rmul__

View source

__sub__

View source

__truediv__

View source