Getting started¶
guppyalgos provides reusable building blocks for quantum programs written in
guppy. A typical workflow is:
Use Python to choose or construct a library component.
Call that component from a guppy function.
Type-check and compile the guppy program.
The library requires Python 3.12 or newer.
Installation¶
We recommend uv for managing Python and project
dependencies. After installing uv, create a project and add guppyalgos:
uv init my-quantum-project
cd my-quantum-project
uv add guppyalgos
This creates an isolated environment and records guppyalgos as a project
dependency. To contribute to the library or work from a source checkout, use
the repository’s locked environment instead:
git clone https://github.com/Quantinuum/guppy-algorithms.git
cd guppy-algorithms
uv sync --all-extras --dev
Compile your first program¶
This program prepares a uniform superposition on two qubits:
from guppylang import guppy
from guppylang.std.quantum import discard_array
from guppyalgos.primitives.state_preparation import uniform_state
from guppyalgos.utils import qarray
uniform = uniform_state(4)
@guppy
def main() -> None:
register = qarray(2)
uniform(register)
discard_array(register)
main.check()
package = main.compile()
uniform_state(4)runs in Python and builds a guppy function for a uniform state over four basis states.@guppymarksmainas code that guppy will type-check and compile.qarray(2)allocates two qubits in \(|00\rangle\).uniform(register)applies the function built above. guppy infers the two-qubit register type fromregister.discard_array(register)consumes the qubits when they are no longer needed. guppy requires every qubit to be returned, measured, or discarded.main.check()checks types and qubit ownership without compiling.main.compile()produces a HUGR package for a compatible runtime or simulator.
Where to go next¶
Work through the getting-started notebook for executable examples of circuits, higher-order functions, structs, and protocols.
Read the user guide for registers, higher-order functions, structs, protocols, and larger algorithm examples.
Browse the example notebooks for complete programs covering state preparation, arithmetic, Hamiltonian simulation, and phase estimation.
Use the API reference when you know which component you need and want its exact signature and options.