| ▼๐ API | |
| ►Calculations | Functions for calculating properties of quantum states without modifying them |
| Expectation values | Functions for calculating expected values of Hermitian observables |
| Probabilities | Functions for non-destructively calculating the probabilities of measurement outcomes |
| Properties | Functions for calculating single-state properties like normalisation and purity |
| Comparisons | Functions for comparing multiple quantum states |
| Partial trace | Functions for calculating reduced density matrices, creating a new output Qureg |
| ►Channels | Data structures for representing arbitrary channels as Kraus maps and superoperators |
| Structs | Data structures for representing decoherence channels |
| Constructors | Functions for creating channel data structures |
| Destructors | Functions for destroying existing channel data structures |
| Reporters | Functions for printing channels |
| Setters | Functions for overwriting the elements of channels |
| Synchronisation | Functions for overwriting a channel's GPU (VRAM) memory with its CPU (RAM) contents |
| ►Debug | Utilities for controlling QuEST behaviour such as seeding, input validation and printing |
| Seeding | Functions for seeding QuEST's random generators |
| Validation | Functions to control QuEST's user-input validation |
| Reporting | Functions to control how QuEST's reporters display and truncate information |
| Caching | Functions to control temporary memory used by the QuEST process |
| Info | Functions for getting debugging information |
| Decoherence | Functions for effecting decoherence channels upon density matrices |
| Environment | Data structures for managing the QuEST execution environment |
| ►Initialisations | Functions for preparing Quregs in particular states |
| States | Functions for initialising Qureg into physical states |
| Amplitudes | Functions for overwriting Qureg amplitudes |
| ►Matrices | Data structures for representing operator matrices |
| Structs | Data structures for representing operator matrices |
| Getters | Functions for obtaining fixed-size matrices |
| Constructors | Functions for creating variable-size matrices |
| Destructors | Functions for destroying existing matrices |
| Reporters | Functions for printing matrices |
| Setters | Functions for overwriting the elements of matrices |
| Synchronisation | Functions for overwriting a matrix's GPU (VRAM) memory with its CPU (RAM) contents |
| Modes | Constants and environment variables for controlling QuEST execution |
| ►Multiplication | Functions for directly pre- or post-multiplying operators upon density matrices |
| CompMatr1 | Functions for pre- or post-multiplying general one-qubit dense matrices (as CompMatr1) upon density matrices |
| CompMatr2 | Functions for pre- or post-multiplying general two-qubit dense matrices (as CompMatr2) upon density matrices |
| CompMatr | Functions for pre- or post-multiplying general many-target dense matrices (as CompMatr) upon density matrices |
| DiagMatr1 | Functions for pre- or post-multiplying general single-qubit diagonal matrices (as DiagMatr1) upon density matrices |
| DiagMatr2 | Functions for pre- or post-multiplying general two-qubit diagonal matrices (as DiagMatr2) upon density matrices |
| DiagMatr | Functions for pre- or post-multiplying general any-target diagonal matrices (as DiagMatr), or powers thereof, upon density matrices |
| FullStateDiagMatr | Functions for pre- or post-multiplying general full-state diagonal matrices (FullStateDiagMatr), or powers thereof, upon density matrices |
| Swap | Functions for pre- or post-multiplying the two-qubit SWAP gate upon density matrices |
| Pauli | Functions for pre- or post-multiplying the individual one-qubit Pauli operators upon density matrices |
| PauliStr | Functions for pre- or post-multiplying a tensor product of Pauli operators (as a PauliStr) upon density matrices |
| Pauli gadgets | Functions for pre- or post-multiplying many-qubit rotations around arbitrary PauliStr upon density matrices |
| Phase gates | Functions for pre- or post-multiplying many-qubit rotations around the Pauli Z axis upon density matrices |
| Many-not gates | Functions for pre- or post-multiplying many-qubit NOT gates upon density matrices |
| ►Projectors | Functions for pre- or post-multiplying projectors upon density matrices |
| PauliStrSum | Functions for pre- or post-multiplying weighted sums of Pauli tensors upon a density matrix |
| ►Operations | Functions for effecting standard operators upon Quregs |
| CompMatr1 | Functions for applying general one-qubit dense matrices, as CompMatr1 |
| CompMatr2 | Functions for applying general two-qubit dense matrices, as CompMatr2 |
| CompMatr | Functions for applying general many-target dense matrices, as CompMatr |
| DiagMatr1 | Functions for applying general one-qubit diagonal matrices, as DiagMatr1 |
| DiagMatr2 | Functions for applying general two-qubit diagonal matrices, as DiagMatr2 |
| DiagMatr | Functions for applying general many-qubit diagonal matrices, as DiagMatr |
| FullStateDiagMatr | Functions for applying general all-qubit diagonal matrices, as FullStateDiagMatr |
| Fixed | Functions for applying the one-qubit S, T and Hadamard gates |
| Swap | Functions for applying the two-qubit SWAP and related gates |
| Pauli | Functions for applying the individual one-qubit Pauli operators |
| PauliStr | Functions for applying a tensor product of Pauli operators, as a PauliStr |
| Rotations | Functions for applying one-qubit rotations around Pauli and arbitrary axis |
| PauliStr gadgets | Functions for applying many-qubit rotations around arbitrary PauliStr |
| Phase gates | Functions for applying many-qubit rotations around Pauli Z axis, and phase flips and shifts |
| Many-not gates | Functions for effecting many-qubit NOT gates |
| Measurements | Functions for effecting destructive measurements |
| Projectors | Functions for effecting projectors which break the state normalisation |
| QFT | Functions for applying the Quantum Fourier Transform |
| ►Paulis | Data structures for representing Pauli strings and their weighted sums |
| Structs | Data structures for representing tensors and weighted sums of Pauli operators |
| Constructors | Functions for creating and initialising Pauli data structures |
| Destructors | Functions for destroying existing Pauli data structures |
| Reporters | Functions for printing Pauli data structures |
| Precision | Macros for controlling QuEST's numerical precision |
| ►Qureg | Data structures for representing quantum states |
| Structs | Data structures for representing quantum registers |
| Constructors | Functions for creating statevectors and density matrices |
| Destructors | Functions for destroying existing Qureg |
| Reporters | Functions for printing Qureg states or reporting their configuration |
| Synchronisation | Functions for copying memory between a Qureg's CPU (RAM) and GPU (VRAM) memory |
| Getters | Functions for obtaining amplitudes from statevectors or density matrices |
| Setters | See Amplitude initialisations |
| ►Trotterisation | Functions for Trottersing operations upon Quregs |
| PauliStrSum gadgets | Functions for using Trotterisation to approximate the action of exponentials of weighted sums of Pauli tensors upon Quregs |
| Time evolution | Functions for approximate dynamical simulation |
| Types | Macros for precision-agnostic real and complex arithmetic |
| ▼๐งช Tests | |
| ►Utilities | Testing utilities which include un-optimised, reference implementations of common quantum simulation routines using serial linear algebra |
| Cache | Testing utilities which create Quregs across all available hardware deployments |
| Compare | Testing utilities which compare scalars produced by the QuEST API to those produced by other test utilities, and Quregs modified by the API to qvector qmatrix references |
| Config | Testing utilities for loading environment variables which configure the unit tests, independent of QuEST's internal environment variable facilities |
| Convert | Testing utilities for converting QuEST API structures (like Qureg, CompMatr, PauliStr) to/from testing types (like qvector and qmatrix) |
| Evolve | Testing utilities which evolve a reference state (qvector or qmatrix) under the action of a reference operation. These are slow, serial, un-optimised, defensively-designed routines |
| Linalg | Testing utilities which perform linear algebra routines upon reference qvector and qmatrix. These are slow, serial, un-optimised, defensively- designed routines |
| Lists | Testing utilities which generate lists of integers |
| Macros | Macros used by the tests and testing utilities |
| Measure | Testing utilities which evaluate measurements upon reference qvector and qmatrix states. These are slow, serial, un-optimised, defensively-designed routines |
| qmatrix | Testing utilities which define 'qmatrix', used to perform reference complex matrix algebra, and as a reference proxy to a quantum density matrix |
| qvector | Testing utilities which define 'qvector', used as a reference proxy to a quantum statevector |
| Random | Testing utilities which generate random objects independently of QuEST's internal generators |
| ►Unit tests | Tests of each QuEST API function in isolation for all possible input states and parameters (where feasible), validated against numerical reference implementations using relatively small Quregs |
| Calculations | |
| Channels | |
| Debug | |
| Decoherence | |
| Environment | |
| Initialisation | |
| Matrices | |
| Operations | |
| Multiplication | |
| Paulis | |
| Qureg | |
| Trotterisation | |
| Types | |
| Integration tests | Tests which combine many QuEST API functions to perform computations using relatively large Quregs, validated against known analytic results |
| Deprecated tests | Unit tests of QuEST's deprecated v3 API functions |
| Deprecated utilities | Utilities for testing QuEST's deprecated v3 API functions |