{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "![(book cover)](https://covers.oreillystatic.com/images/0636920167433/cat.gif \"(book cover)\")\n", "# \"Programming Quantum Computers\" by O'Reilly Media - [book info](http://shop.oreilly.com/product/0636920167433.do) - [all code samples](https://oreilly-qc.github.io)\n", "\n", "## Code samples for Chapter 5\n", "These code samples were written by Mariia Mykhailova." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Example 5-1: Integer increment-by-one operation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Example 5-1, part 1: Integer increment-by-one operation (circuit implementation)" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "application/json": "[\"CircuitIncrement\",\"CircuitIncrementAndDecrement\"]", "text/html": [ "
Qubit IDs | \r\n", "0, 1, 2, 3 | \r\n", "||
---|---|---|---|
Basis state (little endian) | \r\n", "Amplitude | Meas. Pr. | Phase | \r\n", "
$\\left|1\\right\\rangle$ | \r\n", "$0.7071 + 0.0000 i$ | \r\n", " \r\n", "\r\n", " | \r\n", " \r\n", " \r\n", "\r\n", " ↑\r\n", " | \r\n", " \r\n", "
$\\left|5\\right\\rangle$ | \r\n", "$0.5000 + 0.5000 i$ | \r\n", " \r\n", "\r\n", " | \r\n", " \r\n", " \r\n", "\r\n", " ↑\r\n", " | \r\n", " \r\n", "
Qubit IDs | \r\n", "0, 1, 2, 3 | \r\n", "||
---|---|---|---|
Basis state (little endian) | \r\n", "Amplitude | Meas. Pr. | Phase | \r\n", "
$\\left|2\\right\\rangle$ | \r\n", "$0.7071 + 0.0000 i$ | \r\n", " \r\n", "\r\n", " | \r\n", " \r\n", " \r\n", "\r\n", " ↑\r\n", " | \r\n", " \r\n", "
$\\left|6\\right\\rangle$ | \r\n", "$0.5000 + 0.5000 i$ | \r\n", " \r\n", "\r\n", " | \r\n", " \r\n", " \r\n", "\r\n", " ↑\r\n", " | \r\n", " \r\n", "
Qubit IDs | \r\n", "0, 1, 2, 3 | \r\n", "||
---|---|---|---|
Basis state (little endian) | \r\n", "Amplitude | Meas. Pr. | Phase | \r\n", "
$\\left|1\\right\\rangle$ | \r\n", "$0.7071 + 0.0000 i$ | \r\n", " \r\n", "\r\n", " | \r\n", " \r\n", " \r\n", "\r\n", " ↑\r\n", " | \r\n", " \r\n", "
$\\left|5\\right\\rangle$ | \r\n", "$0.5000 + 0.5000 i$ | \r\n", " \r\n", "\r\n", " | \r\n", " \r\n", " \r\n", "\r\n", " ↑\r\n", " | \r\n", " \r\n", "
Qubit IDs | \r\n", "0, 1, 2, 3 | \r\n", "||
---|---|---|---|
Basis state (little endian) | \r\n", "Amplitude | Meas. Pr. | Phase | \r\n", "
$\\left|1\\right\\rangle$ | \r\n", "$0.7071 + 0.0000 i$ | \r\n", " \r\n", "\r\n", " | \r\n", " \r\n", " \r\n", "\r\n", " ↑\r\n", " | \r\n", " \r\n", "
$\\left|5\\right\\rangle$ | \r\n", "$0.5000 + 0.5000 i$ | \r\n", " \r\n", "\r\n", " | \r\n", " \r\n", " \r\n", "\r\n", " ↑\r\n", " | \r\n", " \r\n", "
Qubit IDs | \r\n", "0, 1, 2, 3 | \r\n", "||
---|---|---|---|
Basis state (little endian) | \r\n", "Amplitude | Meas. Pr. | Phase | \r\n", "
$\\left|2\\right\\rangle$ | \r\n", "$0.7071 -0.0000 i$ | \r\n", " \r\n", "\r\n", " | \r\n", " \r\n", " \r\n", "\r\n", " ↑\r\n", " | \r\n", " \r\n", "
$\\left|6\\right\\rangle$ | \r\n", "$0.5000 + 0.5000 i$ | \r\n", " \r\n", "\r\n", " | \r\n", " \r\n", " \r\n", "\r\n", " ↑\r\n", " | \r\n", " \r\n", "
Qubit IDs | \r\n", "0, 1, 2, 3 | \r\n", "||
---|---|---|---|
Basis state (little endian) | \r\n", "Amplitude | Meas. Pr. | Phase | \r\n", "
$\\left|1\\right\\rangle$ | \r\n", "$0.7071 + 0.0000 i$ | \r\n", " \r\n", "\r\n", " | \r\n", " \r\n", " \r\n", "\r\n", " ↑\r\n", " | \r\n", " \r\n", "
$\\left|5\\right\\rangle$ | \r\n", "$0.5000 + 0.5000 i$ | \r\n", " \r\n", "\r\n", " | \r\n", " \r\n", " \r\n", "\r\n", " ↑\r\n", " | \r\n", " \r\n", "
Qubit IDs | \r\n", "0, 1, 2, 3 | \r\n", "||
---|---|---|---|
Basis state (little endian) | \r\n", "Amplitude | Meas. Pr. | Phase | \r\n", "
$\\left|1\\right\\rangle$ | \r\n", "$0.7071 + 0.0000 i$ | \r\n", " \r\n", "\r\n", " | \r\n", " \r\n", " \r\n", "\r\n", " ↑\r\n", " | \r\n", " \r\n", "
$\\left|5\\right\\rangle$ | \r\n", "$0.5000 + 0.5000 i$ | \r\n", " \r\n", "\r\n", " | \r\n", " \r\n", " \r\n", "\r\n", " ↑\r\n", " | \r\n", " \r\n", "
Qubit IDs | \r\n", "4, 5 | \r\n", "||
---|---|---|---|
Basis state (little endian) | \r\n", "Amplitude | Meas. Pr. | Phase | \r\n", "
$\\left|1\\right\\rangle$ | \r\n", "$0.5000 + 0.5000 i$ | \r\n", " \r\n", "\r\n", " | \r\n", " \r\n", " \r\n", "\r\n", " ↑\r\n", " | \r\n", " \r\n", "
$\\left|3\\right\\rangle$ | \r\n", "$0.0000 + 0.7071 i$ | \r\n", " \r\n", "\r\n", " | \r\n", " \r\n", " \r\n", "\r\n", " ↑\r\n", " | \r\n", " \r\n", "
Qubit IDs | \r\n", "0, 1, 2, 3, 4, 5 | \r\n", "||
---|---|---|---|
Basis state (little endian) | \r\n", "Amplitude | Meas. Pr. | Phase | \r\n", "
$\\left|18\\right\\rangle$ | \r\n", "$0.5000 + 0.0000 i$ | \r\n", " \r\n", "\r\n", " | \r\n", " \r\n", " \r\n", "\r\n", " ↑\r\n", " | \r\n", " \r\n", "
$\\left|22\\right\\rangle$ | \r\n", "$0.3536 + 0.3536 i$ | \r\n", " \r\n", "\r\n", " | \r\n", " \r\n", " \r\n", "\r\n", " ↑\r\n", " | \r\n", " \r\n", "
$\\left|52\\right\\rangle$ | \r\n", "$0.3536 + 0.3536 i$ | \r\n", " \r\n", "\r\n", " | \r\n", " \r\n", " \r\n", "\r\n", " ↑\r\n", " | \r\n", " \r\n", "
$\\left|56\\right\\rangle$ | \r\n", "$0.0000 + 0.5000 i$ | \r\n", " \r\n", "\r\n", " | \r\n", " \r\n", " \r\n", "\r\n", " ↑\r\n", " | \r\n", " \r\n", "
Qubit IDs | \r\n", "0, 1, 2, 3 | \r\n", "||
---|---|---|---|
Basis state (little endian) | \r\n", "Amplitude | Meas. Pr. | Phase | \r\n", "
$\\left|1\\right\\rangle$ | \r\n", "$0.7071 + 0.0000 i$ | \r\n", " \r\n", "\r\n", " | \r\n", " \r\n", " \r\n", "\r\n", " ↑\r\n", " | \r\n", " \r\n", "
$\\left|5\\right\\rangle$ | \r\n", "$0.5000 + 0.5000 i$ | \r\n", " \r\n", "\r\n", " | \r\n", " \r\n", " \r\n", "\r\n", " ↑\r\n", " | \r\n", " \r\n", "
Qubit IDs | \r\n", "4, 5 | \r\n", "||
---|---|---|---|
Basis state (little endian) | \r\n", "Amplitude | Meas. Pr. | Phase | \r\n", "
$\\left|1\\right\\rangle$ | \r\n", "$0.5000 + 0.5000 i$ | \r\n", " \r\n", "\r\n", " | \r\n", " \r\n", " \r\n", "\r\n", " ↑\r\n", " | \r\n", " \r\n", "
$\\left|3\\right\\rangle$ | \r\n", "$0.0000 + 0.7071 i$ | \r\n", " \r\n", "\r\n", " | \r\n", " \r\n", " \r\n", "\r\n", " ↑\r\n", " | \r\n", " \r\n", "
Qubit IDs | \r\n", "0, 1, 2, 3, 4, 5, 6, 7, 8, 9 | \r\n", "||
---|---|---|---|
Basis state (little endian) | \r\n", "Amplitude | Meas. Pr. | Phase | \r\n", "
$\\left|18\\right\\rangle$ | \r\n", "$0.5000 + 0.0000 i$ | \r\n", " \r\n", "\r\n", " | \r\n", " \r\n", " \r\n", "\r\n", " ↑\r\n", " | \r\n", " \r\n", "
$\\left|22\\right\\rangle$ | \r\n", "$0.3536 + 0.3536 i$ | \r\n", " \r\n", "\r\n", " | \r\n", " \r\n", " \r\n", "\r\n", " ↑\r\n", " | \r\n", " \r\n", "
$\\left|58\\right\\rangle$ | \r\n", "$0.3536 + 0.3536 i$ | \r\n", " \r\n", "\r\n", " | \r\n", " \r\n", " \r\n", "\r\n", " ↑\r\n", " | \r\n", " \r\n", "
$\\left|62\\right\\rangle$ | \r\n", "$0.0000 + 0.5000 i$ | \r\n", " \r\n", "\r\n", " | \r\n", " \r\n", " \r\n", "\r\n", " ↑\r\n", " | \r\n", " \r\n", "
Qubit IDs | \r\n", "0, 1, 2 | \r\n", "||
---|---|---|---|
Basis state (little endian) | \r\n", "Amplitude | Meas. Pr. | Phase | \r\n", "
$\\left|1\\right\\rangle$ | \r\n", "$0.7071 + 0.0000 i$ | \r\n", " \r\n", "\r\n", " | \r\n", " \r\n", " \r\n", "\r\n", " ↑\r\n", " | \r\n", " \r\n", "
$\\left|5\\right\\rangle$ | \r\n", "$0.7071 + 0.0000 i$ | \r\n", " \r\n", "\r\n", " | \r\n", " \r\n", " \r\n", "\r\n", " ↑\r\n", " | \r\n", " \r\n", "
Qubit IDs | \r\n", "3, 4, 5 | \r\n", "||
---|---|---|---|
Basis state (little endian) | \r\n", "Amplitude | Meas. Pr. | Phase | \r\n", "
$\\left|1\\right\\rangle$ | \r\n", "$0.7071 + 0.0000 i$ | \r\n", " \r\n", "\r\n", " | \r\n", " \r\n", " \r\n", "\r\n", " ↑\r\n", " | \r\n", " \r\n", "
$\\left|3\\right\\rangle$ | \r\n", "$0.5000 + 0.5000 i$ | \r\n", " \r\n", "\r\n", " | \r\n", " \r\n", " \r\n", "\r\n", " ↑\r\n", " | \r\n", " \r\n", "
Qubit IDs | \r\n", "0, 1, 2, 3, 4, 5 | \r\n", "||
---|---|---|---|
Basis state (little endian) | \r\n", "Amplitude | Meas. Pr. | Phase | \r\n", "
$\\left|13\\right\\rangle$ | \r\n", "$0.5000 -0.0000 i$ | \r\n", " \r\n", "\r\n", " | \r\n", " \r\n", " \r\n", "\r\n", " ↑\r\n", " | \r\n", " \r\n", "
$\\left|17\\right\\rangle$ | \r\n", "$0.5000 -0.0000 i$ | \r\n", " \r\n", "\r\n", " | \r\n", " \r\n", " \r\n", "\r\n", " ↑\r\n", " | \r\n", " \r\n", "
$\\left|29\\right\\rangle$ | \r\n", "$0.3536 + 0.3536 i$ | \r\n", " \r\n", "\r\n", " | \r\n", " \r\n", " \r\n", "\r\n", " ↑\r\n", " | \r\n", " \r\n", "
$\\left|33\\right\\rangle$ | \r\n", "$0.3536 + 0.3536 i$ | \r\n", " \r\n", "\r\n", " | \r\n", " \r\n", " \r\n", "\r\n", " ↑\r\n", " | \r\n", " \r\n", "
Qubit IDs | \r\n", "0, 1, 2 | \r\n", "||
---|---|---|---|
Basis state (little endian) | \r\n", "Amplitude | Meas. Pr. | Phase | \r\n", "
$\\left|0\\right\\rangle$ | \r\n", "$0.5000 + 0.0000 i$ | \r\n", " \r\n", "\r\n", " | \r\n", " \r\n", " \r\n", "\r\n", " ↑\r\n", " | \r\n", " \r\n", "
$\\left|1\\right\\rangle$ | \r\n", "$0.5000 + 0.0000 i$ | \r\n", " \r\n", "\r\n", " | \r\n", " \r\n", " \r\n", "\r\n", " ↑\r\n", " | \r\n", " \r\n", "
$\\left|2\\right\\rangle$ | \r\n", "$0.5000 + 0.0000 i$ | \r\n", " \r\n", "\r\n", " | \r\n", " \r\n", " \r\n", "\r\n", " ↑\r\n", " | \r\n", " \r\n", "
$\\left|3\\right\\rangle$ | \r\n", "$0.5000 + 0.0000 i$ | \r\n", " \r\n", "\r\n", " | \r\n", " \r\n", " \r\n", "\r\n", " ↑\r\n", " | \r\n", " \r\n", "
Qubit IDs | \r\n", "3, 4 | \r\n", "||
---|---|---|---|
Basis state (little endian) | \r\n", "Amplitude | Meas. Pr. | Phase | \r\n", "
$\\left|1\\right\\rangle$ | \r\n", "$0.7071 + 0.0000 i$ | \r\n", " \r\n", "\r\n", " | \r\n", " \r\n", " \r\n", "\r\n", " ↑\r\n", " | \r\n", " \r\n", "
$\\left|3\\right\\rangle$ | \r\n", "$0.7071 + 0.0000 i$ | \r\n", " \r\n", "\r\n", " | \r\n", " \r\n", " \r\n", "\r\n", " ↑\r\n", " | \r\n", " \r\n", "
Qubit IDs | \r\n", "0, 1, 2, 3, 4 | \r\n", "||
---|---|---|---|
Basis state (little endian) | \r\n", "Amplitude | Meas. Pr. | Phase | \r\n", "
$\\left|8\\right\\rangle$ | \r\n", "$0.3536 + 0.0000 i$ | \r\n", " \r\n", "\r\n", " | \r\n", " \r\n", " \r\n", "\r\n", " ↑\r\n", " | \r\n", " \r\n", "
$\\left|9\\right\\rangle$ | \r\n", "$0.3536 + 0.0000 i$ | \r\n", " \r\n", "\r\n", " | \r\n", " \r\n", " \r\n", "\r\n", " ↑\r\n", " | \r\n", " \r\n", "
$\\left|10\\right\\rangle$ | \r\n", "$0.3536 + 0.0000 i$ | \r\n", " \r\n", "\r\n", " | \r\n", " \r\n", " \r\n", "\r\n", " ↑\r\n", " | \r\n", " \r\n", "
$\\left|11\\right\\rangle$ | \r\n", "$0.3536 + 0.0000 i$ | \r\n", " \r\n", "\r\n", " | \r\n", " \r\n", " \r\n", "\r\n", " ↑\r\n", " | \r\n", " \r\n", "
$\\left|24\\right\\rangle$ | \r\n", "$0.3536 + 0.0000 i$ | \r\n", " \r\n", "\r\n", " | \r\n", " \r\n", " \r\n", "\r\n", " ↑\r\n", " | \r\n", " \r\n", "
$\\left|25\\right\\rangle$ | \r\n", "$0.3536 + 0.0000 i$ | \r\n", " \r\n", "\r\n", " | \r\n", " \r\n", " \r\n", "\r\n", " ↑\r\n", " | \r\n", " \r\n", "
$\\left|26\\right\\rangle$ | \r\n", "$0.3536 + 0.0000 i$ | \r\n", " \r\n", "\r\n", " | \r\n", " \r\n", " \r\n", "\r\n", " ↑\r\n", " | \r\n", " \r\n", "
$\\left|27\\right\\rangle$ | \r\n", "$0.3536 + 0.0000 i$ | \r\n", " \r\n", "\r\n", " | \r\n", " \r\n", " \r\n", "\r\n", " ↑\r\n", " | \r\n", " \r\n", "
Qubit IDs | \r\n", "0, 1, 2, 3, 4 | \r\n", "||
---|---|---|---|
Basis state (little endian) | \r\n", "Amplitude | Meas. Pr. | Phase | \r\n", "
$\\left|8\\right\\rangle$ | \r\n", "$-0.3536 + 0.0000 i$ | \r\n", " \r\n", "\r\n", " | \r\n", " \r\n", " \r\n", "\r\n", " ↑\r\n", " | \r\n", " \r\n", "
$\\left|9\\right\\rangle$ | \r\n", "$-0.3536 + 0.0000 i$ | \r\n", " \r\n", "\r\n", " | \r\n", " \r\n", " \r\n", "\r\n", " ↑\r\n", " | \r\n", " \r\n", "
$\\left|10\\right\\rangle$ | \r\n", "$-0.3536 + 0.0000 i$ | \r\n", " \r\n", "\r\n", " | \r\n", " \r\n", " \r\n", "\r\n", " ↑\r\n", " | \r\n", " \r\n", "
$\\left|11\\right\\rangle$ | \r\n", "$0.3536 -0.0000 i$ | \r\n", " \r\n", "\r\n", " | \r\n", " \r\n", " \r\n", "\r\n", " ↑\r\n", " | \r\n", " \r\n", "
$\\left|24\\right\\rangle$ | \r\n", "$0.3536 -0.0000 i$ | \r\n", " \r\n", "\r\n", " | \r\n", " \r\n", " \r\n", "\r\n", " ↑\r\n", " | \r\n", " \r\n", "
$\\left|25\\right\\rangle$ | \r\n", "$0.3536 -0.0000 i$ | \r\n", " \r\n", "\r\n", " | \r\n", " \r\n", " \r\n", "\r\n", " ↑\r\n", " | \r\n", " \r\n", "
$\\left|26\\right\\rangle$ | \r\n", "$0.3536 + 0.0000 i$ | \r\n", " \r\n", "\r\n", " | \r\n", " \r\n", " \r\n", "\r\n", " ↑\r\n", " | \r\n", " \r\n", "
$\\left|27\\right\\rangle$ | \r\n", "$0.3536 + 0.0000 i$ | \r\n", " \r\n", "\r\n", " | \r\n", " \r\n", " \r\n", "\r\n", " ↑\r\n", " | \r\n", " \r\n", "