AQUA Tools Aqua is my Annotated Quantum Assembler language (the acronym also stands for Algorithms for Quantum Architectures and Advanced Quantum Architectures, depending on context). Welcome. You'll find tools here to perform certain phases of program compilation, primarily architecture-dependent but technology-independent optimization, and various visualization and analysis tools. Goal: The main goal is to develop a quantum computing *system* architecture. The point of developing software, then, is to create: * tools to support analysis of architectures and algorithms Non-Goal: THIS IS NOT QUANTUM PROGRAMMING LANGUAGE DESIGN. Designing a good language is hard; designing a lousy language is bad for your reputation. So, we're not doing it. We do have several languages as part of the overall project; the syntax and semantics of them are subject to change on the whims of the programmers, until such time as we develop a large enough body of code that change becomes impractical. In particular, if you're reading this, and you have suggestions for improving the languages, or better yet, complementary tools you would like us to be compatible with, LET US KNOW. We like suggestions! Philosophy I'm not afraid to write code, though I'm neither the world's fastest nor best programmer. But, if I can find useful tools, I would rather use someone else's than spend weeks writing/debugging my own. What I want in a set of tools: * open source tools * dependent primarily, or preferably totally, on open source * runs on Linux Tools that meet all of these and have the functionality I'm after seem to be few and far between, so, I'm coding. The Aqua Tools The main tool is called "aqua", and it is a compiler. It takes as input a quantum program, and outputs the program in another language. Sometimes the transform is trivial, sometimes it is not, depending on how aqua is called. Most of the time, aqua can determine what transform you want it to perform based on the input and output file names. The input language is Aqua, and may be annotated for a specific architecture, or may be architecture-independent. The possible outputs are: * fig (xfig) diagram of the circuit * animated gif (actually, frame descriptions and a script to create an animated gif, which is moderately compute-intensive) * an annotated Aqua file, converted to a different architecture Coming soon: * Octave functions of the unitary transforms * source for Cyrus Master's simulator * source for OpenQubit simulator? Other included tools: * qclib.m: rudimentary Octave library for quantum computation Specific Dependencies To do the storage assignment that is the heart of compiling from AC to NTC architectures, you need access to Kevin Binkley's genetic algorithm (which calls a fitness function included in this package). His code is not yet ready for public consumption, though... General Dependencies Most of these are independent. You'll only need the tools to generate the output you want. * xfig (if you want to edit circuit diagrams) * fig2dev (to convert circuit diagrams to e.g. PostScript) * povray (to render animation frames; this choice might change!) * Image Magick: - convert (combines frames to an animation; should be compiled with GIF option on; this choice might change!) - animate (if you want to view locally; most web browsers will show animated gifs automatically as well) * Octave (if you want to verify that the transforms do what you think) * gcc, bison, and flex, (and make) if you want to compile from scratch Most (all?) of these tools are available for almost any form of Linux, or using cygwin on Windows. To Do List * finish the ToDo list * macro preprocessor * other output languages * other architectures (esp. 2D, lattice, scalable ion trap) * other algorithms * quantum error correction (using macros) * architecture description language References: * Van Meter & Itoh, quant-ph/0408006 * Svore, Turku quantum languages workshop, 2004 Contact If you want to contact me, try rdv (at) tera.ics.keio.ac.jp, or rdv (at) alumni.caltech.edu (The former is only good as long as I'm at Keio, the latter is buried in spam, so pick your poison.)