Skip to content

Broadcast

ccz

ccz(
    controls1: IList[Qubit, N],
    controls2: IList[Qubit, N],
    targets: IList[Qubit, N],
)

Apply a doubly-controlled Z gate on triples of (control1, control2, target) qubits.

Decomposed into CZ, sqrt(Y), RX and T gates by merging the single-qubit layers of the standard T-gate construction of the CCZ gate.

Parameters:

Name Type Description Default
controls1 IList[Qubit, N]

First control qubits of each triple.

required
controls2 IList[Qubit, N]

Second control qubits of each triple.

required
targets IList[Qubit, N]

Target qubits of each triple.

required
Source code in .venv/lib/python3.12/site-packages/bloqade/native/stdlib/broadcast.py
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
@kernel
def ccz(
    controls1: ilist.IList[qubit.Qubit, N],
    controls2: ilist.IList[qubit.Qubit, N],
    targets: ilist.IList[qubit.Qubit, N],
):
    """Apply a doubly-controlled Z gate on triples of (control1, control2, target) qubits.

    Decomposed into CZ, sqrt(Y), RX and T gates by merging the single-qubit
    layers of the standard T-gate construction of the CCZ gate.

    Args:
        controls1 (ilist.IList[qubit.Qubit, N]): First control qubits of each triple.
        controls2 (ilist.IList[qubit.Qubit, N]): Second control qubits of each triple.
        targets (ilist.IList[qubit.Qubit, N]): Target qubits of each triple.
    """
    sqrt_y_adj(targets)
    cz(controls2, targets)
    rx(math.pi / 4.0, targets)
    cz(controls1, targets)
    rx(-math.pi / 4.0, targets)
    cz(controls2, targets)
    rx(math.pi / 4.0, targets)
    cz(controls1, targets)
    sqrt_y(targets)
    t(controls1 + controls2 + targets)
    sqrt_y_adj(controls2)
    cz(controls1, controls2)
    rx(math.pi / 4.0, controls2)
    cz(controls1, controls2)
    sqrt_y(controls2)

cx

cx(controls: IList[Qubit, N], targets: IList[Qubit, N])

Apply a controlled-X gate on a pairs of qubits.

Parameters:

Name Type Description Default
controls IList[Qubit, N]

Control qubits.

required
targets IList[Qubit, N]

Target qubits.

required
Source code in .venv/lib/python3.12/site-packages/bloqade/native/stdlib/broadcast.py
282
283
284
285
286
287
288
289
290
291
292
@kernel
def cx(controls: ilist.IList[qubit.Qubit, N], targets: ilist.IList[qubit.Qubit, N]):
    """Apply a controlled-X gate on a pairs of qubits.

    Args:
        controls (ilist.IList[qubit.Qubit, N]): Control qubits.
        targets (ilist.IList[qubit.Qubit, N]): Target qubits.
    """
    sqrt_y_adj(targets)
    cz(controls, targets)
    sqrt_y(targets)

cy

cy(controls: IList[Qubit, N], targets: IList[Qubit, N])

Apply a controlled-Y gate on a pairs of qubits.

Parameters:

Name Type Description Default
controls IList[Qubit, N]

Control qubits.

required
targets IList[Qubit, N]

Target qubits.

required
Source code in .venv/lib/python3.12/site-packages/bloqade/native/stdlib/broadcast.py
295
296
297
298
299
300
301
302
303
304
305
@kernel
def cy(controls: ilist.IList[qubit.Qubit, N], targets: ilist.IList[qubit.Qubit, N]):
    """Apply a controlled-Y gate on a pairs of qubits.

    Args:
        controls (ilist.IList[qubit.Qubit, N]): Control qubits.
        targets (ilist.IList[qubit.Qubit, N]): Target qubits.
    """
    sqrt_x(targets)
    cz(controls, targets)
    sqrt_x_adj(targets)

cz

cz(controls: IList[Qubit, N], qubits: IList[Qubit, N])

Apply a controlled-Z gate on a pairs of qubits.

Parameters:

Name Type Description Default
controls IList[Qubit, N]

Control qubits.

required
qubits IList[Qubit, N]

Target qubits.

required
Source code in .venv/lib/python3.12/site-packages/bloqade/native/stdlib/broadcast.py
271
272
273
274
275
276
277
278
279
@kernel
def cz(controls: ilist.IList[qubit.Qubit, N], qubits: ilist.IList[qubit.Qubit, N]):
    """Apply a controlled-Z gate on a pairs of qubits.

    Args:
        controls (ilist.IList[qubit.Qubit, N]): Control qubits.
        qubits (ilist.IList[qubit.Qubit, N]): Target qubits.
    """
    native.cz(controls, qubits)

h

h(qubits: IList[Qubit, Any])

Apply a Hadamard gate on a group of qubits.

Parameters:

Name Type Description Default
qubits IList[Qubit, Any]

Target qubits.

required
Source code in .venv/lib/python3.12/site-packages/bloqade/native/stdlib/broadcast.py
206
207
208
209
210
211
212
213
214
215
@kernel
def h(qubits: ilist.IList[qubit.Qubit, Any]):
    """Apply a Hadamard gate on a group of qubits.

    Args:
        qubits (ilist.IList[qubit.Qubit, Any]): Target qubits.
    """
    s(qubits)
    sqrt_x(qubits)
    s(qubits)

phased_xz

phased_xz(
    x_rad: float,
    z_rad: float,
    axis_phase_rad: float,
    qubits: IList[Qubit, Any],
)

Apply a PhasedXZ gate on a group of qubits using radian inputs.

Parameters:

Name Type Description Default
x_rad float

X rotation angle in radians.

required
z_rad float

Z rotation angle in radians.

required
axis_phase_rad float

Axis phase in radians.

required
qubits IList[Qubit, Any]

Target qubits.

required
Source code in .venv/lib/python3.12/site-packages/bloqade/native/stdlib/broadcast.py
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
@kernel
def phased_xz(
    x_rad: float,
    z_rad: float,
    axis_phase_rad: float,
    qubits: ilist.IList[qubit.Qubit, Any],
):
    """Apply a PhasedXZ gate on a group of qubits using radian inputs.

    Args:
        x_rad (float): X rotation angle in radians.
        z_rad (float): Z rotation angle in radians.
        axis_phase_rad (float): Axis phase in radians.
        qubits (ilist.IList[qubit.Qubit, Any]): Target qubits.
    """
    _phased_xz_turns(
        _radian_to_turn(x_rad),
        _radian_to_turn(z_rad),
        _radian_to_turn(axis_phase_rad),
        qubits,
    )

rx

rx(angle: float, qubits: IList[Qubit, Any])

Apply an RX rotation gate on a group of qubits.

Parameters:

Name Type Description Default
angle float

Rotation angle in radians.

required
qubits IList[Qubit, Any]

Target qubits.

required
Source code in .venv/lib/python3.12/site-packages/bloqade/native/stdlib/broadcast.py
83
84
85
86
87
88
89
90
91
@kernel
def rx(angle: float, qubits: ilist.IList[qubit.Qubit, Any]):
    """Apply an RX rotation gate on a group of qubits.

    Args:
        angle (float): Rotation angle in radians.
        qubits (ilist.IList[qubit.Qubit, Any]): Target qubits.
    """
    _rx_turns(_radian_to_turn(angle), qubits)

ry

ry(angle: float, qubits: IList[Qubit, Any])

Apply an RY rotation gate on a group of qubits.

Parameters:

Name Type Description Default
angle float

Rotation angle in radians.

required
qubits IList[Qubit, Any]

Target qubits.

required
Source code in .venv/lib/python3.12/site-packages/bloqade/native/stdlib/broadcast.py
124
125
126
127
128
129
130
131
132
@kernel
def ry(angle: float, qubits: ilist.IList[qubit.Qubit, Any]):
    """Apply an RY rotation gate on a group of qubits.

    Args:
        angle (float): Rotation angle in radians.
        qubits (ilist.IList[qubit.Qubit, Any]): Target qubits.
    """
    _ry_turns(_radian_to_turn(angle), qubits)

rz

rz(angle: float, qubits: IList[Qubit, Any])

Apply an RZ rotation gate on a group of qubits.

Parameters:

Name Type Description Default
angle float

Rotation angle in radians.

required
qubits IList[Qubit, Any]

Target qubits.

required
Source code in .venv/lib/python3.12/site-packages/bloqade/native/stdlib/broadcast.py
165
166
167
168
169
170
171
172
173
@kernel
def rz(angle: float, qubits: ilist.IList[qubit.Qubit, Any]):
    """Apply an RZ rotation gate on a group of qubits.

    Args:
        angle (float): Rotation angle in radians.
        qubits (ilist.IList[qubit.Qubit, Any]): Target qubits.
    """
    _rz_turns(_radian_to_turn(angle), qubits)

s

s(qubits: IList[Qubit, Any])

Apply an S gate on a group of qubits.

Parameters:

Name Type Description Default
qubits IList[Qubit, Any]

Target qubits.

required
Source code in .venv/lib/python3.12/site-packages/bloqade/native/stdlib/broadcast.py
186
187
188
189
190
191
192
193
@kernel
def s(qubits: ilist.IList[qubit.Qubit, Any]):
    """Apply an S gate on a group of qubits.

    Args:
        qubits (ilist.IList[qubit.Qubit, Any]): Target qubits.
    """
    rz(math.pi / 2.0, qubits)

s_adj

s_adj(qubits: IList[Qubit, Any])

Apply the adjoint of the S gate on a group of qubits.

Parameters:

Name Type Description Default
qubits IList[Qubit, Any]

Target qubits.

required
Source code in .venv/lib/python3.12/site-packages/bloqade/native/stdlib/broadcast.py
196
197
198
199
200
201
202
203
@kernel
def s_adj(qubits: ilist.IList[qubit.Qubit, Any]):
    """Apply the adjoint of the S gate on a group of qubits.

    Args:
        qubits (ilist.IList[qubit.Qubit, Any]): Target qubits.
    """
    rz(-math.pi / 2.0, qubits)

shift

shift(angle: float, qubits: IList[Qubit, Any])

Apply a phase shift to the |1> state on a group of qubits.

Parameters:

Name Type Description Default
angle float

Phase shift angle in radians.

required
qubits IList[Qubit, Any]

Target qubits.

required
Source code in .venv/lib/python3.12/site-packages/bloqade/native/stdlib/broadcast.py
238
239
240
241
242
243
244
245
246
@kernel
def shift(angle: float, qubits: ilist.IList[qubit.Qubit, Any]):
    """Apply a phase shift to the |1> state on a group of qubits.

    Args:
        angle (float): Phase shift angle in radians.
        qubits (ilist.IList[qubit.Qubit, Any]): Target qubits.
    """
    rz(angle, qubits)

sqrt_x

sqrt_x(qubits: IList[Qubit, Any])

Apply a sqrt(X) gate on a group of qubits.

Parameters:

Name Type Description Default
qubits IList[Qubit, Any]

Target qubits.

required
Source code in .venv/lib/python3.12/site-packages/bloqade/native/stdlib/broadcast.py
104
105
106
107
108
109
110
111
@kernel
def sqrt_x(qubits: ilist.IList[qubit.Qubit, Any]):
    """Apply a sqrt(X) gate on a group of qubits.

    Args:
        qubits (ilist.IList[qubit.Qubit, Any]): Target qubits.
    """
    rx(math.pi / 2.0, qubits)

sqrt_x_adj

sqrt_x_adj(qubits: IList[Qubit, Any])

Apply the adjoint of sqrt(X) on a group of qubits.

Parameters:

Name Type Description Default
qubits IList[Qubit, Any]

Target qubits.

required
Source code in .venv/lib/python3.12/site-packages/bloqade/native/stdlib/broadcast.py
114
115
116
117
118
119
120
121
@kernel
def sqrt_x_adj(qubits: ilist.IList[qubit.Qubit, Any]):
    """Apply the adjoint of sqrt(X) on a group of qubits.

    Args:
        qubits (ilist.IList[qubit.Qubit, Any]): Target qubits.
    """
    rx(-math.pi / 2.0, qubits)

sqrt_y

sqrt_y(qubits: IList[Qubit, Any])

Apply a sqrt(Y) gate on a group of qubits.

Parameters:

Name Type Description Default
qubits IList[Qubit, Any]

Target qubits.

required
Source code in .venv/lib/python3.12/site-packages/bloqade/native/stdlib/broadcast.py
145
146
147
148
149
150
151
152
@kernel
def sqrt_y(qubits: ilist.IList[qubit.Qubit, Any]):
    """Apply a sqrt(Y) gate on a group of qubits.

    Args:
        qubits (ilist.IList[qubit.Qubit, Any]): Target qubits.
    """
    ry(math.pi / 2.0, qubits)

sqrt_y_adj

sqrt_y_adj(qubits: IList[Qubit, Any])

Apply the adjoint of sqrt(Y) on a group of qubits.

Parameters:

Name Type Description Default
qubits IList[Qubit, Any]

Target qubits.

required
Source code in .venv/lib/python3.12/site-packages/bloqade/native/stdlib/broadcast.py
155
156
157
158
159
160
161
162
@kernel
def sqrt_y_adj(qubits: ilist.IList[qubit.Qubit, Any]):
    """Apply the adjoint of sqrt(Y) on a group of qubits.

    Args:
        qubits (ilist.IList[qubit.Qubit, Any]): Target qubits.
    """
    ry(-math.pi / 2.0, qubits)

swap

swap(qubits1: IList[Qubit, N], qubits2: IList[Qubit, N])

Apply a SWAP gate on pairs of qubits, exchanging their states.

Decomposed into sqrt(Y) and CZ gates.

Parameters:

Name Type Description Default
qubits1 IList[Qubit, N]

First qubits of each pair.

required
qubits2 IList[Qubit, N]

Second qubits of each pair.

required
Source code in .venv/lib/python3.12/site-packages/bloqade/native/stdlib/broadcast.py
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
@kernel
def swap(qubits1: ilist.IList[qubit.Qubit, N], qubits2: ilist.IList[qubit.Qubit, N]):
    """Apply a SWAP gate on pairs of qubits, exchanging their states.

    Decomposed into sqrt(Y) and CZ gates.

    Args:
        qubits1 (ilist.IList[qubit.Qubit, N]): First qubits of each pair.
        qubits2 (ilist.IList[qubit.Qubit, N]): Second qubits of each pair.
    """
    sqrt_y(qubits2)
    cz(qubits1, qubits2)
    sqrt_y(qubits1 + qubits2)
    cz(qubits2, qubits1)
    sqrt_y(qubits1 + qubits2)
    cz(qubits1, qubits2)
    sqrt_y(qubits2)

t

t(qubits: IList[Qubit, Any])

Apply a T gate on a group of qubits.

Parameters:

Name Type Description Default
qubits IList[Qubit, Any]

Target qubits.

required
Source code in .venv/lib/python3.12/site-packages/bloqade/native/stdlib/broadcast.py
218
219
220
221
222
223
224
225
@kernel
def t(qubits: ilist.IList[qubit.Qubit, Any]):
    """Apply a T gate on a group of qubits.

    Args:
        qubits (ilist.IList[qubit.Qubit, Any]): Target qubits.
    """
    rz(math.pi / 4.0, qubits)

t_adj

t_adj(qubits: IList[Qubit, Any])

Apply the adjoint of aT gate on a group of qubits.

Parameters:

Name Type Description Default
qubits IList[Qubit, Any]

Target qubits.

required
Source code in .venv/lib/python3.12/site-packages/bloqade/native/stdlib/broadcast.py
228
229
230
231
232
233
234
235
@kernel
def t_adj(qubits: ilist.IList[qubit.Qubit, Any]):
    """Apply the adjoint of aT gate on a group of qubits.

    Args:
        qubits (ilist.IList[qubit.Qubit, Any]): Target qubits.
    """
    rz(-math.pi / 4.0, qubits)

u3

u3(
    theta: float,
    phi: float,
    lam: float,
    qubits: IList[Qubit, Any],
)

Apply the U3 gate on a group of qubits.

The applied gate is represented by the unitary matrix given by:

\[ U3(\theta, \phi, \lambda) = R_z(\phi)R_y(\theta)R_z(\lambda) \]

Parameters:

Name Type Description Default
theta float

Rotation around Y axis (radians).

required
phi float

Global phase shift component (radians).

required
lam float

Z rotations in decomposition (radians).

required
qubits IList[Qubit, Any]

Target qubits.

required
Source code in .venv/lib/python3.12/site-packages/bloqade/native/stdlib/broadcast.py
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
@kernel
def u3(theta: float, phi: float, lam: float, qubits: ilist.IList[qubit.Qubit, Any]):
    """Apply the U3 gate on a group of qubits.

    The applied gate is represented by the unitary matrix given by:

    $$ U3(\\theta, \\phi, \\lambda) = R_z(\\phi)R_y(\\theta)R_z(\\lambda) $$

    Args:
        theta (float): Rotation around Y axis (radians).
        phi (float): Global phase shift component (radians).
        lam (float): Z rotations in decomposition (radians).
        qubits (ilist.IList[qubit.Qubit, Any]): Target qubits.
    """
    _u3_turns(
        _radian_to_turn(theta), _radian_to_turn(phi), _radian_to_turn(lam), qubits
    )

x

x(qubits: IList[Qubit, Any])

Apply a Pauli-X gate on a group of qubits.

Parameters:

Name Type Description Default
qubits IList[Qubit, Any]

Target qubits.

required
Source code in .venv/lib/python3.12/site-packages/bloqade/native/stdlib/broadcast.py
 94
 95
 96
 97
 98
 99
100
101
@kernel
def x(qubits: ilist.IList[qubit.Qubit, Any]):
    """Apply a Pauli-X gate on a group of qubits.

    Args:
        qubits (ilist.IList[qubit.Qubit, Any]): Target qubits.
    """
    rx(math.pi, qubits)

y

y(qubits: IList[Qubit, Any])

Apply a Pauli-Y gate on a group of qubits.

Parameters:

Name Type Description Default
qubits IList[Qubit, Any]

Target qubits.

required
Source code in .venv/lib/python3.12/site-packages/bloqade/native/stdlib/broadcast.py
135
136
137
138
139
140
141
142
@kernel
def y(qubits: ilist.IList[qubit.Qubit, Any]):
    """Apply a Pauli-Y gate on a group of qubits.

    Args:
        qubits (ilist.IList[qubit.Qubit, Any]): Target qubits.
    """
    ry(math.pi, qubits)

z

z(qubits: IList[Qubit, Any])

Apply a Pauli-Z gate on a group of qubits.

Parameters:

Name Type Description Default
qubits IList[Qubit, Any]

Target qubits.

required
Source code in .venv/lib/python3.12/site-packages/bloqade/native/stdlib/broadcast.py
176
177
178
179
180
181
182
183
@kernel
def z(qubits: ilist.IList[qubit.Qubit, Any]):
    """Apply a Pauli-Z gate on a group of qubits.

    Args:
        qubits (ilist.IList[qubit.Qubit, Any]): Target qubits.
    """
    rz(math.pi, qubits)