import pennylane as qml
import numpy as np
def kfourier(value, wires):
for i, wire in enumerate(wires):
qml.PhaseShift(value * np.pi / (2**i), wires=wire)
def adder_circuit(params):
a, b = int(params[0]), int(params[1])
n_bits = 13
# Encode 'a' via basis embedding
qml.BasisEmbedding(a, wires=range(n_bits))
# QFT
qml.QFT(wires=range(n_bits))
# Add 'b' in Fourier domain
kfourier(b, range(n_bits))
# Inverse QFT
qml.adjoint(qml.QFT)(wires=range(n_bits))
return qml.state()
result = circuit.execute(
adder_circuit, params=[42, 13], wires=13, method='measure',
num_reads=50, integration_steps=200, shots=1
)