Debug
- Correct `TGate.matrix()`, `TDagGate.matrix()`, `IGate.matrix()`
Experimental Feature
- New sampling feature is available in the numpy backend. This feature may effective for mid-circuit measurement.
Specify `m(key="keyname")` in the measurement and `run(shots=..., returns="samples").
Circuit().x[1].m(key="key1")[0, 1].x[0].m(key="key2")[0, 1].run(shots=5, returns="samples")
It returns
[{'key1': [0, 1], 'key2': [1, 1]},
{'key1': [0, 1], 'key2': [1, 1]},
{'key1': [0, 1], 'key2': [1, 1]},
{'key1': [0, 1], 'key2': [1, 1]},
{'key1': [0, 1], 'key2': [1, 1]}]
You get 5 samples for each measured keys.
When run(returns="sample"), measured result without the key is omitted.
If the key is duplicated, another option is needed, "replace" or "append".
"replace" pattern
Circuit().x[0].m(key="a")[:].x[0].m(key="a", duplicated="replace")[0].run(shots=2, returns="samples")
It returns
[{'a': [0]}, {'a': [0]}]
So, the first measured result of key "a" is omitted and replaced to second one.
"append" pattern
Circuit().x[0].m(key="a")[:].x[0].m(key="a", duplicated="append")[0].run(shots=2, returns="samples")
It returns
[{'a': [1, 0]}, {'a': [1, 0]}]
So, the second measured result is appended to first one.
Changes
- Circuit JSON scheme is updated due to experimental features.
Internal Changes
Implementation of gates are changed