unmajority_add_parallel_gate

forest.benchmarking.classical_logic.unmajority_add_parallel_gate(a: int, b: int, c: int, in_x_basis: bool = False) → pyquil.quil.Program

An alternative form of the UnMajority and Add gate, or UMA for short.

This implementation of UMA has 3-CNOTs, rather than 2, but admits greater parallelism

See [CDKM96] reference in ripple_carry_adder.adder() docstring

Parameters:
  • a – qubit label
  • b – qubit label
  • c – qubit label
  • in_x_basis – if true, the returned program performs the equivalent logic in the X basis.
Returns:

program that executes the same logic as unmajority_add_gate but with different gates