You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
…ling (#772)
Get a compressed tree representation of the reference sample by using
`stim::ReferenceSampleTree::from_circuit_reference_sample(circuit)`.
The reason for a tree, instead of raw run length encoding, is to support
nested loops (e.g. physical surface code rounds repeating within
repeated logical operations).
Example test:
```
CircuitGenParameters params(10000, 3, "rotated_memory_x");
auto circuit = generate_surface_code_circuit(params).circuit;
circuit.blocks[0].append_from_text("X 10 11 12 13");
auto ref = ReferenceSampleTree::from_circuit_reference_sample(circuit);
ASSERT_EQ(ref.str(), "1*(''+2*('00000000')+4999*('0110000000110000')+1*('000000000'))");
```
Example benchmark (25 milliseconds to do a distance 31 surface code with
a billion rounds):
```
CircuitGenParameters params(1000000000, 31, "rotated_memory_x");
auto circuit = generate_surface_code_circuit(params).circuit;
simd_bits<MAX_BITWORD_WIDTH> ref(0);
auto total = 0;
benchmark_go([&]() {
auto result = ReferenceSampleTree::from_circuit_reference_sample(circuit);
total += result.empty();
})
.goal_millis(25);
```
Part of #768
No description provided.
The text was updated successfully, but these errors were encountered: