João P. Moutinho
João P. Moutinho
Closes #397
Currently, kronned analog blocks are assumed to be implemented in sequence, meaning that there is no need to keep the constraint of them having the same duration.
In a recent MR some issues were found in `MatrixBlock` and `block_to_tensor`. Few things to check: - `MatrixBlock` allows any size matrix (e.g., 3x3), but `qubit_support` must be given, meaning...
In certain places in `qadence` matrix - state multiplications are computed, e.g., when calculating observables. Mostly this uses the `block_to_tensor` function which by default sets `use_full_support = True`. However, we...
When running parameterized digital-analog programs parameters often have to be optimized while bounded over a specific range. For example, currently in the `AddressingPattern` class this is done by re-defining the...
Currently the usage of Analog blocks in Qadence requires some "experimental" knowledge of neutral atoms, e.g.: - What spacing to use for the atoms (typically a user should set 8.0...
Analog block eigenvalues are not defined because currently analog blocks only get converted into an actual operator when converted to `HamEvo` in the PyQ backend. GPSR requires these eigenvalues and...
The following works: ``` from qadence import * from qadence.draw import display b0 = X(0) @ X(1) b1 = X(2) @ X(3) b2 = kron(b0, b1) display(b2) ``` The following...
Currently there are a lot of definitions in the internal structure of the analog blocks. The most user facing are defined as python functions that return an instance of a...
Currently HamEvo of some generator is always exponentiated fully, without checking for commutation relations. However, generators composed of several commuting parts can be exponentiated separately. We can make some of...