Source code for PySparQ.pysparq.algorithms.block_encoding

"""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."""
[docs] main_reg: str
[docs] overflow: str
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] main_reg: str
[docs] anc_UA: str
[docs] alpha: float
[docs] beta: float
[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"
[docs] column_index: str
[docs] data_size: int
[docs] rational_size: int
[docs] addr_size: int
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"
[docs] row_index: str
[docs] column_index: str
[docs] data_size: int
[docs] rational_size: int
[docs] addr_size: int
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"
[docs] column_index: str
[docs] row_index: str
[docs] data_size: int
[docs] rational_size: int
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.""" ...