JuliaQuantum/QuBase.jl — pull request #5 by jrevels (2014-12-30 01:40:12+00:00)
Title: Basic framework for QuArrays and basis types

This PR splits off the non-QuDirac work from #4. To copy the summary from there, here's what this PR does:

1. Provides a cleaner directory structure and a more comprehensive type hierarchy.
2. Organizes/cleans up existing code, as well as splits off QuDirac-related work into the [QuDirac repo, which got moved under the JuliaQuantum organization.](https://github.com/JuliaQuantum/QuDirac.jl) That repo is where abstract Dirac-notated states and operator functionality will live for the time being, whereas QuBase will be focused on:
- solvers/modeling capability for coefficient arrays
- a foundational type system
- a solid, general implementation for `QuArray`s and fundamental basis types
3. Updates the `creationop` method provided by @acroy to work with arbitrary number of particles (you can pick which particle the operator should act on). I renamed it to `raiseop` for brevity's sake and implemented `lowerop` as well. These methods aren't optimized in the slightest (likely a tad slower than @acroy's original implementation), but provide a good starting point for ladder operations in multi-particle systems.
4. Gives a single type implementation of `FiniteBasis` that supports a tensor product structure
5. Implements a couple of functions for `QuArray`/`FiniteBasis`, including pretty-printing for `QuArray`s (let me know what you think, it's hard to compactly convey all that info).

Sorry for the previous commit; I had to go back and fix the tabs-to-spaces thing again for some reason.