Skip to content

Commit 41c9cc5

Browse files
override FastDataBlock.n_logical_qubits (#896)
* override FastDataBlock.n_logical_qubits * lint --------- Co-authored-by: Matthew Harrigan <mpharrigan@google.com>
1 parent 4b16d77 commit 41c9cc5

2 files changed

Lines changed: 16 additions & 6 deletions

File tree

qualtran/surface_code/data_block.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,9 @@ def footprint(self, n_algo_qubits: int) -> int:
8181

8282
def data_error(self, n_algo_qubits: int, n_cycles: int, phys_err: float) -> float:
8383
"""The error associated with storing data on `n_algo_qubits` for `n_cycles`."""
84-
data_cells = self.n_logical_qubits(n_algo_qubits) * n_cycles
85-
return data_cells * self.qec_scheme.logical_error_rate(
84+
# spacetime_volue = number of data cells x number of cycles they will live for.
85+
spacetime_volume = self.n_logical_qubits(n_algo_qubits) * n_cycles
86+
return spacetime_volume * self.qec_scheme.logical_error_rate(
8687
physical_error_rate=phys_err, code_distance=self.data_d
8788
)
8889

@@ -177,11 +178,16 @@ def footprint(self, n_algo_qubits: int) -> int:
177178
return FastDataBlock.grid_size(n_algo_qubits)
178179

179180
def data_error(self, n_algo_qubits: int, n_cycles: int, phys_err: float) -> float:
180-
data_cells = self.n_logical_qubits(n_algo_qubits) * n_cycles
181-
return data_cells * self.qec_scheme.logical_error_rate(
181+
"""The error associated with storing data on `n_algo_qubits` for `n_cycles`."""
182+
# spacetime_volue = number of data cells x number of cycles they will live for.
183+
spacetime_volume = self.n_logical_qubits(n_algo_qubits) * n_cycles
184+
return spacetime_volume * self.qec_scheme.logical_error_rate(
182185
physical_error_rate=phys_err, code_distance=self.data_d
183186
)
184187

188+
def n_logical_qubits(self, n_algo_qubits: int) -> int:
189+
return FastDataBlock.grid_size(n_algo_qubits)
190+
185191
def n_cycles_to_consume_a_magic_state(self) -> int:
186192
return self.data_d
187193

qualtran/surface_code/data_block_test.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,11 @@
1919

2020

2121
@pytest.mark.parametrize(
22-
["logical_qubits", "logical_qubits_with_routing"], [[100, 230], [1318, 2740], [12581, 25481]]
22+
["logical_qubits", "logical_qubits_with_routing", "data_error"],
23+
[[100, 230, 0.69], [1318, 2740, 8.22], [12581, 25481, 76.443]],
2324
)
24-
def test_fast_block(logical_qubits, logical_qubits_with_routing):
25+
def test_fast_block(logical_qubits, logical_qubits_with_routing, data_error):
2526
assert FastDataBlock.grid_size(n_algo_qubits=logical_qubits) == logical_qubits_with_routing
27+
assert FastDataBlock(3).data_error(
28+
n_algo_qubits=logical_qubits, n_cycles=3, phys_err=1e-3
29+
) == pytest.approx(data_error)

0 commit comments

Comments
 (0)