Exemplo n.º 1
0
def test_initialize():
    qvm = QVMConnection(type_trans='density')
    assert isinstance(qvm, QVM_Density)
Exemplo n.º 2
0
from pyquil.quil import Program
from pyquil.gates import *
from pyquil.parameters import Parameter, quil_sin, quil_cos
from pyquil.quilbase import DefGate
#from pyquil.api import QVMConnection
from referenceqvm.api import QVMConnection
import numpy as np
theta = Parameter('theta')
cry = np.array([[1.0, 0.0, 0.0, 0.0], [0.0, 1.0, 0.0, 0.0], [0.0, 0.0, quil_cos(
    theta / 2), -1 * quil_sin(theta / 2)], [0.0, 0.0, quil_sin(theta / 2), quil_cos(theta / 2)]])
dg = DefGate('CRY', cry, [theta])
CRY = dg.get_constructor()
p = Program()
p.inst(dg)
p.inst(X(0))
p.inst(X(1))
p.inst(CRY(4.304)(0, 2))
qvm = QVMConnection()
wf = qvm.wavefunction(p)
print(wf)
Exemplo n.º 3
0
    #    ax[i].matshow(bas[i].reshape(rows, cols), vmin=-1, vmax=1)
    #    ax[i].set_xticks([])
    #    ax[i].set_yticks([])
    '''sample distribution'''
    hist_sample = [0 for _ in range(2**n_qubits)]
    for s in bas:
        b = ''.join(str(int(e)) for e in s)
        idx = int(b, 2)
        hist_sample[idx] += 1. / float(n_points)

    #plt.show()

    return np.array(hist_sample)


QVM_CXN = QVMConnection()
USE_WAVEFUNCTION = True


def get_distribution(p):
    wf = QVM_CXN.wavefunction(p)
    return np.square(np.abs(wf[0].amplitudes))  # local
    # return np.square(np.abs(wf.amplitudes)) # Rigetti


def kl_div(p, q, eps=1e-8):
    n = len(p)
    assert n == len(q)

    p = np.array(p)
    q = np.array(q)