"""Matrix block encoding algorithms (tridiagonal and QRAM-based)."""
from __future__ import annotations
from typing import Union
import numpy as np
[docs]
def get_tridiagonal_matrix(alpha: float, beta: float, dim: int) -> np.ndarray:
"""Return the dim x dim tridiagonal matrix alpha*I + beta*T."""
...
[docs]
def get_u_plus(size: int) -> np.ndarray:
"""Return the size x size down-shift (subdiagonal) matrix."""
...
[docs]
def get_u_minus(size: int) -> np.ndarray:
"""Return the size x size up-shift (superdiagonal) matrix."""
...
[docs]
class PlusOneAndOverflow:
"""Add 1 to a register and track overflow."""
def __init__(self, main_reg: str, overflow: str) -> None: ...
[docs]
def conditioned_by_nonzeros(
self, conds: Union[str, list[str]]
) -> "PlusOneAndOverflow": ...
[docs]
def conditioned_by_all_ones(
self, conds: Union[str, list[str]]
) -> "PlusOneAndOverflow": ...
[docs]
def conditioned_by_bit(
self, reg: Union[str, int], pos: int
) -> "PlusOneAndOverflow": ...
[docs]
def conditioned_by_value(
self, reg: Union[str, int], value: int
) -> "PlusOneAndOverflow": ...
[docs]
def clear_conditions(self) -> None: ...
def __call__(self, state: "SparseState") -> None: ...
[docs]
def dag(self, state: "SparseState") -> None: ...
[docs]
class BlockEncodingTridiagonal:
"""Block encoding of the tridiagonal matrix alpha*I + beta*T."""
[docs]
prep_state: list[complex]
def __init__(
self, main_reg: str, anc_UA: str, alpha: float, beta: float
) -> None: ...
[docs]
def conditioned_by_nonzeros(
self, conds: Union[str, list[str]]
) -> "BlockEncodingTridiagonal": ...
[docs]
def conditioned_by_all_ones(
self, conds: Union[str, list[str]]
) -> "BlockEncodingTridiagonal": ...
[docs]
def conditioned_by_bit(
self, reg: Union[str, int], pos: int
) -> "BlockEncodingTridiagonal": ...
[docs]
def clear_conditions(self) -> None: ...
def __call__(self, state: "SparseState") -> None: ...
[docs]
def dag(self, state: "SparseState") -> None: ...
[docs]
class UR:
"""Right-multiplication operator based on QRAM block encoding."""
[docs]
qram: "QRAMCircuit_qutrit"
def __init__(
self,
qram: "QRAMCircuit_qutrit",
column_index: str,
data_size: int,
rational_size: int,
) -> None: ...
[docs]
def conditioned_by_nonzeros(
self, conds: Union[str, list[str]]
) -> "UR": ...
[docs]
def conditioned_by_all_ones(
self, conds: Union[str, list[str]]
) -> "UR": ...
[docs]
def conditioned_by_bit(
self, reg: Union[str, int], pos: int
) -> "UR": ...
[docs]
def clear_conditions(self) -> None: ...
def __call__(self, state: "SparseState") -> None: ...
[docs]
def dag(self, state: "SparseState") -> None: ...
[docs]
class UL:
"""Left-multiplication operator based on QRAM block encoding."""
[docs]
qram: "QRAMCircuit_qutrit"
def __init__(
self,
qram: "QRAMCircuit_qutrit",
row_index: str,
column_index: str,
data_size: int,
rational_size: int,
) -> None: ...
[docs]
def conditioned_by_nonzeros(
self, conds: Union[str, list[str]]
) -> "UL": ...
[docs]
def conditioned_by_all_ones(
self, conds: Union[str, list[str]]
) -> "UL": ...
[docs]
def conditioned_by_bit(
self, reg: Union[str, int], pos: int
) -> "UL": ...
[docs]
def clear_conditions(self) -> None: ...
def __call__(self, state: "SparseState") -> None: ...
[docs]
def dag(self, state: "SparseState") -> None: ...
[docs]
class BlockEncodingViaQRAM:
"""Block encoding of an arbitrary matrix via QRAM."""
[docs]
qram: "QRAMCircuit_qutrit"
def __init__(
self,
qram: "QRAMCircuit_qutrit",
column_index: str,
row_index: str,
data_size: int,
rational_size: int,
) -> None: ...
[docs]
def conditioned_by_nonzeros(
self, conds: Union[str, list[str]]
) -> "BlockEncodingViaQRAM": ...
[docs]
def conditioned_by_all_ones(
self, conds: Union[str, list[str]]
) -> "BlockEncodingViaQRAM": ...
[docs]
def conditioned_by_bit(
self, reg: Union[str, int], pos: int
) -> "BlockEncodingViaQRAM": ...
[docs]
def clear_conditions(self) -> None: ...
def __call__(self, state: "SparseState") -> None: ...
[docs]
def dag(self, state: "SparseState") -> None: ...
[docs]
def create_block_encoding_demo() -> str:
"""Return a demo script string showing block encoding usage."""
...