Options

Quipper

Quipper

Examples

  • quantum teleportation
  • quantum Fourier transform
  • quantum circuit for addition

Quantum teleportation

  • circuit model
  • primitive operations
  • quantum data type
  • generic functions

Quantum Fourier transform and quantum addition

  • recursion

  • circuit-level operators

  • boxed circuits
  • simulation

Quantum oracles

  • automatic generation of circuits from classical code
  • synthesis of reversible circuits
  • circuit transformations

7 non-trivial quantum algorithms

  • Binary welded tree (BWT)
  • Boolean formula (BF)
  • Class Number (CSL)
  • Ground state estimation (GSE)
  • Quantum linear systems (QSL)
  • Unique shortest vector (USV)
  • Triangle finding (TF)

Quipper has a language independent design referred to as an idiom. It is an embeeded EDSL, embedded in Haskell. Because Haskell does not support dependent- or linear types, certain well-formedness properties of programs have to be checked at runtime.

The software's quantum computer targets include:

  • ion-traps
  • ... TBD

It does not however target the quantum adiabatic evolution model supported by the D-Wave architecture.

Circuit model

Both classical and quantum wires can be defined.

References

Quipper is a recently developed programming language for expressing quantum computations. This paper gives a brief tutorial in- troduction to the language, through a demonstration of how to make use of some of its key features. We illustrate many of Quipper’s language features by developing a few well known examples of Quantum computa- tion, including quantum teleportation, the quantum Fourier transform, and a quantum circuit for addition.

The field of quantum algorithms is vibrant. Still, there is currently a lack of programming languages for describing quantum computation on a practical scale, i.e., not just at the level of toy problems. We address this issue by introducing Quipper, a scalable, expressive, functional, higher-order quantum programming language. Quipper has been used to program a diverse set of non-trivial quantum algorithms, and can generate quantum gate representations using trillions of gates. It is geared towards a model of computation that uses a classical computer to control a quantum device, but is not dependent on any particular model of quantum hardware. Quipper has proven effective and easy to use, and opens the door towards using formal methods to analyze quantum algorithms.

Comments

  • 1.

    It's useful if want to study programming languages for quantum computing (there is a debate what that even means).

    The nice part is that they have an information page about it. That's certainly helped people hear about it. Here's a list of what someone working in the field of quantum physics would use this for:

    Comment Source:It's useful if want to study programming languages for quantum computing (there is a debate what that even means). The nice part is that they have an information page about it. That's certainly helped people hear about it. Here's a list of what someone working in the field of quantum physics would use this for:
  • 2.
    edited November 2013

    Jacob wrote:

    It's useful if [you] want to study programming languages for quantum computing (there is a debate [about' what that even means).

    I like to pursue a double track of learning theory while playing with its machine implementation. So it seemed a good idea to compare QIT and Quipper codes and examles and possibly derive some documentation for the former from the latter.

    I noted the other day that somebody on StackOverflow had some time ago asked what criteria a machine had to meet to be a 'real' quantum computer with zero answers?

    I haven't looked yet but does QIT support quantum adiabatic evolution?

    I've managed to build and run most of the examples but the outputs are rather large and need some cropping to put on a web page.

    I'm working my way through the intro paper atm.

    Comment Source:Jacob wrote: > It's useful if [you] want to study programming languages for quantum computing (there is a debate [about' what that even means). I like to pursue a double track of learning theory while playing with its machine implementation. So it seemed a good idea to compare QIT and Quipper codes and examles and possibly derive some documentation for the former from the latter. I noted the other day that somebody on StackOverflow had some time ago asked what criteria a machine had to meet to be a 'real' quantum computer with zero answers? I haven't looked yet but does QIT support quantum adiabatic evolution? I've managed to build and run most of the examples but the outputs are rather large and need some cropping to put on a web page. I'm working my way through the intro paper atm.
  • 3.

    This is more of its own programming language and not really the same deal as QIT. It does look interesting though. You could make QIT do all of this stuff too if you wanted to: it has the main features ready and already does a few of them as examples of the package. The goal has mainly been physics simulation and yes, it does AQC stuff for sure.

    • I'm off to the states soon and don't think I can be back on Azimuth before that.

    Cheers!

    Comment Source:This is more of its own programming language and not really the same deal as QIT. It does look interesting though. You could make QIT do all of this stuff too if you wanted to: it has the main features ready and already does a few of them as examples of the package. The goal has mainly been physics simulation and yes, it does AQC stuff for sure. * I'm off to the states soon and don't think I can be back on Azimuth before that. Cheers!
  • 4.

    Have fun! Bye for now.

    Comment Source:Have fun! Bye for now.
Sign In or Register to comment.