Next:
Contents
Contents
Quantum Programming in QCL
Bernhard Ömer
20th January 2000
Institute of Information Systems
Technical University of Vienna
E-mail:
oemer@tph.tuwien.ac.at
Homepage:
http://tph.tuwien.ac.at/
~
oemer
Contents
Quantum Physics in a Nutshell
A Brief History of Quantum Physics
Particles and Waves
Plank's Constant
Bohr's Atom Model
Wave-Particle Dualism
Wave Mechanics
Classical States
State Changes
Conservation Laws
Movement Laws
The Wave Function
Particle Location
Time Dependency
Expectation Values
The Schrödinger Equation
The Time-Independent Schrödinger Equation
Energy Spectra
Electron in a Capacitor
3-dimensional Trap
Algebraic Quantum Physics
The Hilbert Space
States as Vectors
Completeness
Definitions
Operators
Operators as Matrices
Physical Observables
Measurement
The Uncertainty Principle
Temporal Evolution
Unitary Operators
Composed systems
Spin
Product States
Entanglement
Quantum Computers
Introduction
The Church-Turing Thesis
Computing Machines
Computation as a Physical Process
Indeterminism
Temporal Evolution
Components of a Quantum Computer
Quantum Memory
The Qubit
Combination of Qubits
Machine State
Subsystems
Quantum Registers
Processing Units
Unitary Operators
Register Operators
Universal Quantum Gates
Pseudo-classic Operators
Quantum Functions
Conditional Operators
Input and Output
Quantum Computing and Information Processing
Labeling of States
Initialization
Measurement
Partial Measurement
Models of Quantum Computation
The Mathematical Model of QC
Quantum Turing Machines
Quantum Circuits
Quantum Programming Languages
Flow Control
Operator Specification
Quantum Programming
Introduction
Computers and Programming
Complexity Requirements
Hybrid Architecture
QCL as a Classical Language
Structure of a QCL Program
Statements
Definitions
Expressions
Data Types and Variables
Constants
Variables
Expressions
Operators
Functions
Simple Statements
Assignment
Call
Input
Output
Flow Control
Blocks
Conditional Branching
Counting Loops
Conditional Loops
Classical Subroutines
Functions
Procedures
Quantum States and Variables
Quantum Memory Management
Machine State and Program State
Quantum Registers
The Quantum Heap
Register allocation
Scratch Space Management
Simulation
Quantum Variables
General Registers
Quantum Constants
Empty Registers
Scratch Registers
Register References
Quantum Expressions
Subregisters
Combined Registers
Quantum Operations
Non-unitary Operations
Subroutines
Hierarchy of Subroutines
External Routines
General Operators
Operator Arguments
Inverse Operators
Local Registers
Unitary Gates
Unitary Matrices
Qubit Rotation
Hadamard Gate
Conditional Phase Gate
Pseudo-classic Operators
Bijective Functions
Conditional Operators
Quantum Functions
Scratch parameters
Pseudo-classic Gates
Base Permutation
Fanout
Swap
Not and Controlled Not
Programming Techniques
Design of Quantum Algorithms
Superpositioning
Quantum Parallelism
Interference
Dealing with Reversibility
Register Reuse
Junk Registers
Overwriting Invertible Functions
Quantum Algorithms
Grover's Database Search
Formulating a Query
The Algorithm
Setting up the Search Space
The Main Loop
Number of Iterations
Implementation
The Query Operator
The Diffusion Operator
The Procedure grover
Shor's Algorithm for Quantum Factorization
Motivation
The Algorithm
Modular Exponentiation
Finding a Factor
Period of a Function
Quantum Fourier Transform
Modular Arithmetic
Modular Addition
Modular Multiplication
Modular Exponentiation
Implementation
Auxiliary Functions
The Procedure shor
Factoring 15
Bibliography
List of Figures
List of Tables
QCL Syntax
Expressions
Statements
Definitions
The Shor Algorithm in QCL
default.qcl
functions.qcl
qufunct.qcl
dft.qcl
modarith.qcl
shor.qcl
About this document ...
(c) Bernhard Ömer -
oemer@tph.tuwien.ac.at
-
http://tph.tuwien.ac.at/~oemer/