Puertas

Este submódulo proporciona los componentes necesarios para definir y manipular puertas cuánticas para su uso en circuitos cuánticos digitales.

Puertas simples

Use estos constructores para aplicar operaciones estándar de uno y dos qubits:

Puertas controladas

Cualquier puerta básica puede convertirse en una puerta controlada usando la clase Controlled:

from qilisdk.digital.gates import Controlled, Y

controlled_y = Controlled(0, basic_gate=Y(1))
multiple_controlled_y = Controlled(0, 1, basic_gate=Y(2))

O alternativamente, se puede usar el método .controlled() sobre cualquier instancia de puerta:

from qilisdk.digital.gates import Y

controlled_y = Y(1).controlled(0)
multiple_controlled_y = Y(2).controlled(0, 1)

Puertas adjuntas

Se puede crear el conjugado hermítico (dagger) de una puerta usando la clase Adjoint o usando el método .adjoint() sobre cualquier instancia de puerta:

from qilisdk.digital.gates import Adjoint, Y

adjoint_y = Adjoint(basic_gate=Y(1))
adjoint_y = Y(1).adjoint()

Puertas exponenciales

Para aplicar una puerta como operador exponencial, use la clase Exponential o el método .exponential() sobre cualquier instancia de puerta:

from qilisdk.digital.gates import Exponential, Y

exp_y = Exponential(basic_gate=Y(1))
exp_y = Y(1).exponential()