PySparQ.pysparq.algorithms.block_encoding

Matrix block encoding algorithms (tridiagonal and QRAM-based).

Classes

BlockEncodingTridiagonal

Block encoding of the tridiagonal matrix alpha*I + beta*T.

BlockEncodingViaQRAM

Block encoding of an arbitrary matrix via QRAM.

PlusOneAndOverflow

Add 1 to a register and track overflow.

UL

Left-multiplication operator based on QRAM block encoding.

UR

Right-multiplication operator based on QRAM block encoding.

Functions

create_block_encoding_demo(→ str)

Return a demo script string showing block encoding usage.

get_tridiagonal_matrix(→ numpy.ndarray)

Return the dim x dim tridiagonal matrix alpha*I + beta*T.

get_u_minus(→ numpy.ndarray)

Return the size x size up-shift (superdiagonal) matrix.

get_u_plus(→ numpy.ndarray)

Return the size x size down-shift (subdiagonal) matrix.

Module Contents

class PySparQ.pysparq.algorithms.block_encoding.BlockEncodingTridiagonal(main_reg: str, anc_UA: str, alpha: float, beta: float)[source]

Block encoding of the tridiagonal matrix alpha*I + beta*T.

clear_conditions() → None[source]
conditioned_by_all_ones(conds: str | list[str]) → BlockEncodingTridiagonal[source]
conditioned_by_bit(reg: str | int, pos: int) → BlockEncodingTridiagonal[source]
conditioned_by_nonzeros(conds: str | list[str]) → BlockEncodingTridiagonal[source]
dag(state: SparseState) → None[source]
alpha: float[source]
anc_UA: str[source]
beta: float[source]
main_reg: str[source]
prep_state: list[complex][source]
class PySparQ.pysparq.algorithms.block_encoding.BlockEncodingViaQRAM(qram: QRAMCircuit_qutrit, column_index: str, row_index: str, data_size: int, rational_size: int)[source]

Block encoding of an arbitrary matrix via QRAM.

clear_conditions() → None[source]
conditioned_by_all_ones(conds: str | list[str]) → BlockEncodingViaQRAM[source]
conditioned_by_bit(reg: str | int, pos: int) → BlockEncodingViaQRAM[source]
conditioned_by_nonzeros(conds: str | list[str]) → BlockEncodingViaQRAM[source]
dag(state: SparseState) → None[source]
column_index: str[source]
data_size: int[source]
qram: QRAMCircuit_qutrit[source]
rational_size: int[source]
row_index: str[source]
class PySparQ.pysparq.algorithms.block_encoding.PlusOneAndOverflow(main_reg: str, overflow: str)[source]

Add 1 to a register and track overflow.

clear_conditions() → None[source]
conditioned_by_all_ones(conds: str | list[str]) → PlusOneAndOverflow[source]
conditioned_by_bit(reg: str | int, pos: int) → PlusOneAndOverflow[source]
conditioned_by_nonzeros(conds: str | list[str]) → PlusOneAndOverflow[source]
conditioned_by_value(reg: str | int, value: int) → PlusOneAndOverflow[source]
dag(state: SparseState) → None[source]
main_reg: str[source]
overflow: str[source]
class PySparQ.pysparq.algorithms.block_encoding.UL(qram: QRAMCircuit_qutrit, row_index: str, column_index: str, data_size: int, rational_size: int)[source]

Left-multiplication operator based on QRAM block encoding.

clear_conditions() → None[source]
conditioned_by_all_ones(conds: str | list[str]) → UL[source]
conditioned_by_bit(reg: str | int, pos: int) → UL[source]
conditioned_by_nonzeros(conds: str | list[str]) → UL[source]
dag(state: SparseState) → None[source]
addr_size: int[source]
column_index: str[source]
data_size: int[source]
qram: QRAMCircuit_qutrit[source]
rational_size: int[source]
row_index: str[source]
class PySparQ.pysparq.algorithms.block_encoding.UR(qram: QRAMCircuit_qutrit, column_index: str, data_size: int, rational_size: int)[source]

Right-multiplication operator based on QRAM block encoding.

clear_conditions() → None[source]
conditioned_by_all_ones(conds: str | list[str]) → UR[source]
conditioned_by_bit(reg: str | int, pos: int) → UR[source]
conditioned_by_nonzeros(conds: str | list[str]) → UR[source]
dag(state: SparseState) → None[source]
addr_size: int[source]
column_index: str[source]
data_size: int[source]
qram: QRAMCircuit_qutrit[source]
rational_size: int[source]
PySparQ.pysparq.algorithms.block_encoding.create_block_encoding_demo() → str[source]

Return a demo script string showing block encoding usage.

PySparQ.pysparq.algorithms.block_encoding.get_tridiagonal_matrix(alpha: float, beta: float, dim: int) → numpy.ndarray[source]

Return the dim x dim tridiagonal matrix alpha*I + beta*T.

PySparQ.pysparq.algorithms.block_encoding.get_u_minus(size: int) → numpy.ndarray[source]

Return the size x size up-shift (superdiagonal) matrix.

PySparQ.pysparq.algorithms.block_encoding.get_u_plus(size: int) → numpy.ndarray[source]

Return the size x size down-shift (subdiagonal) matrix.