Added
- Add `sample_expectation_ps` method for `BaseCircuit`, which measure the Pauli string expectation considering measurement shots
- Add alias `expps` for `expectation_ps` and `sexpps` for `sampled_expectation_ps`
- Add `counts_d2s` and `counts_s2d` in quantum module to transform different representation of measurement shots results
- Add vmap enhanced `parameter_shift_grad` in experimental module (API subjects to change)
- Add `parameter_shift.py` script in examples showcasing how to use parameter shift grad wrapper
- Add `vmap_randomness.py` script in examples showcasing how to vmap external random generators
- Add `noise_sampling_jit.py` script showcasing how real device simulation with sample method is efficiently implemented with Monte Carlo and jit
- Add jit support and external random management for `tc.quantum.measurement_counts`
- Add MPO gate support for multiple qubit gates in `MPSCircuit` simulator
- Add the `expectation_ps` method to `MPSCircuit` (moving to `AbstractCircuit`)
- Add six format of measurement results support and their transformation in quantum module
- Add format option in `Circuit.sample` while maintain the backward compatibility
- Add `tc.utils.arg_alias` which is a decorator that adds alias argument for function with the doc fixed accordingly
- Add quantum channel auto resgisteration method in `Circuit` class
Changed
- `rxx`, `ryy`, `rzz` gates now has 1/2 factor before theta consitent with `rx`, `ry`, `rz` gates. (breaking change)
- replace `status` arguments in `sample` method as `random_generator` (new convention: status for 0, 1 uniform randomness and random_generator for random key) (breaking change)
- Rewrite the expectation method of `MPSCircuit` to make it general
- Adjusted the initialization method for `MPSCircuit` (move the from_wavefunction method and allow QuVector input) (breaking change)
- `tc.quantum.measurement_counts` aliased as `tc.quantum.measurement_results` and change the function arguments (breaking change)
- Refactor backend to use multiple inheritance approach instead of reflection method
Fixed
- Add jit support for `sample` method when `allow_state=True`
- Fix the bug that 128 type is converted to 64 value
- Fix `arg_alias` bug when the keyword arguments is None by design
- Fix `arg_alias` when the docstring for each argument is in multiple lines
- Noise channel apply methods in `DMCircuit` can also absorb `status` keyword (directly omitting it) for a consistent API with `Circuit`