Skip to content

stylewarning/cl-forest

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CL-FOREST

Unofficial bindings to Rigetti Forest, a quantum computing service. These bindings are directly based off of the forest module of pyQuil.

Currently, this library is written for pedagogical example of the API, not for efficiency.

Examples

Below are a few examples using the Rigetti Forest API.

Here we construct a Bell pair, and measure the pair. The interesting property about Bell states is that they always measure to the same value. Here we measure the Bell pair 10 times.

CL-FOREST> (run (quil "H 0"
                      "CNOT 0 1"
                      "MEASURE 0 [0]"
                      "MEASURE 1 [1]")
                '(0 1)
                10)

((0 0) (1 1) (1 1) (1 1) (1 1) (0 0) (0 0) (1 1) (0 0) (0 0))

Next, we show that a Bell pair is exactly the state (|00> + |11>)/sqrt(2) by looking directly at the wavefunction.

CL-FOREST> (wavefunction (quil "H 0"
                               "CNOT 0 1"))

#(#C(0.7071067811865475d0 0.0d0) #C(0.0d0 0.0d0) #C(0.0d0 0.0d0)
  #C(0.7071067811865475d0 0.0d0))

We can recover the probabilities of each of these by computing the square modulus of each amplitude:

CL-USER> (map 'vector (lambda (a) (expt (abs a) 2)) *)

#(0.4999999999999999d0 0.0d0 0.0d0 0.4999999999999999d0)

We see immediately that |00> and |11> both have a 50% chance of being observed.

API Key

Before starting, you'll need to set your API key by setting the variable cl-forest:*api-key*.

(setf cl-forest:*api-key* "<< YOUR API KEY >>")

You can check that it works by pinging the server:

> (cl-forest:ping)
"pong 3696180851"

Once your API key is set, you can construct Quil programs (which are currently just represented as strings) conveniently using the quil function, and then use run or wavefunction to run that program.

Releases

No releases published

Packages

No packages published