Chapter 10. OpenQASM

QASM is a low-level, imperative programming language, describing quantum programs in terms of the specific actions the quantum computer should take.

It is an intermediate representation between human-editable descriptions of quantum programs (such as Qiskit’s QuantumCircuit) and quantum hardware controllers. To enable it to describe full quantum programs, QASM also supports some basic classical logic, similar to higher-level classical languages such as C.

In this chapter, we’ll cover only gate-level operations, but QASM does also support some pulse-level quantum programming too.

Building Quantum Circuits in QASM

In this section, we’ll cover the QASM syntax needed to create simple quantum circuits.

Comments

Before we start, we’ll learn how to annotate the code we’re writing.

You can use comments as messages to other humans reading your code (including your future self). Two slashes (//) will mark the rest of the line as a comment. You can also use the character sequences /* and */ to mark the start and end of comments, respectively, over many lines. We’ll use comments to describe the code examples in this chapter:

The compiler will read this // but not this
/* or any
of this */

Version Strings

At the time of writing, there are three versions of QASM, so you might want to specify which version of QASM you’re writing in. For this reason, the first noncomment line of a QASM file can be a version string (an example follows). In this chapter, all code will be ...

Get Qiskit Pocket Guide now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.