import numpy as np
import numpy.typing as npt
from .encode.ternary_tree import TTFlatpack
# Rust-accelerated functions exposed to Python
[docs]
def symplectic_product(
left: npt.NDArray[np.bool], right: npt.NDArray[np.bool]
) -> tuple[int, npt.NDArray[np.bool]]: ...
[docs]
def hartree_fock_state(
fermionic_hf_state: npt.NDArray[np.bool],
mode_op_map: npt.NDArray[np.uint],
ipowers: npt.NDArray[np.uint8],
symplectic_matrix: npt.NDArray[np.bool],
vacuum_state: npt.NDArray[np.bool],
) -> npt.NDArray[np.bool]: ...
[docs]
def symplectic_to_pauli(
symplectic: npt.NDArray[np.bool], ipower: int
) -> tuple[str, int]: ...
[docs]
def pauli_to_symplectic(
pauli: str, ipower: int
) -> tuple[npt.NDArray[np.bool], int]: ...
[docs]
def symplectic_to_sparse(
symplectic: npt.NDArray[np.bool],
ipower: int,
) -> tuple[str, npt.NDArray[np.uintp], complex]: ...
[docs]
def clifford_heuristic(
qham: dict[str, complex],
n_qubits: int,
temperature: float,
coefficient_weighted: bool,
seed: int | None = None,
clifford_subset: str = ...,
) -> dict: ...
[docs]
def randomised_subsystem_descent(
qham: dict[str, complex],
n_qubits: int,
iterations: int,
temperature: float,
subsystem_dimension: int,
coefficient_weighted: bool = ...,
sampler: str = ...,
seed: int | None = None,
clifford_subset: str = ...,
) -> dict: ...
[docs]
def anneal_enumerations(
ipowers: npt.NDArray[np.uint8],
symplectics: npt.NDArray[np.bool],
signatures: list[str],
coeffs: list[np.ndarray],
temperature: float,
initial_guess: npt.NDArray[np.uint],
coefficient_weighted: bool,
seed: int | None = None,
) -> tuple[npt.NDArray[np.uint8], npt.NDArray[np.bool]]: ...
[docs]
def batch_pauli_weights(
ipowers: npt.NDArray[np.uint8],
symplectics: npt.NDArray[np.bool],
vacuum_state: npt.NDArray[np.bool],
signatures: list[str],
coeffs: list[np.ndarray],
permutations: npt.NDArray[np.uint],
) -> tuple[npt.NDArray[np.float64], npt.NDArray[np.float64]]: ...
flatpack: list[tuple[np.uint, tuple[np.uint, np.uint, np.uint]]],
n_qubits: int,
signatures: list[str],
coeffs: list[np.ndarray],
parallelize: bool,
heuristic: str = "min_weight",
seed: int | None = None,
) -> tuple[npt.NDArray[np.uint8], npt.NDArray[np.bool], npt.NDArray[np.bool]]: ...
n_modes: int,
signatures: list[str],
coeffs: list[np.ndarray],
) -> tuple[TTFlatpack, int]: ...
[docs]
def flatpack_symplectic_matrix(
flatpack: TTFlatpack,
n_qubits: None | int,
) -> tuple[npt.NDArray[np.uint8], npt.NDArray[np.bool], npt.NDArray[np.bool]]: ...
[docs]
def encode_fermion_product(
ipowers: npt.NDArray[np.uint8],
symplectics: npt.NDArray[np.bool],
signatures: str,
indices: list[int],
coefficient: complex,
) -> dict: ...
ipowers: npt.NDArray[np.uint8],
symplectics: npt.NDArray[np.bool],
vacuum_state: npt.NDArray[np.bool],
signatures: list[str],
coeffs: list[np.ndarray],
constant_energy: float,
) -> dict: ...
flatpack: list[tuple[np.uint, tuple[np.uint, np.uint, np.uint]]],
n_qubits: int,
signatures: list[str],
coeffs: list[np.ndarray],
constant_energy: float,
parallelize: bool,
heuristic: str = "min_weight",
seed: int | None = None,
) -> tuple[npt.NDArray[np.uint8], npt.NDArray[np.bool], dict, npt.NDArray[np.bool]]: ...
[docs]
def fermionic_to_sparse_majorana(
signatures: list[str],
coeffs: list[np.ndarray],
constant_energy: float,
) -> dict: ...
states: npt.NDArray[np.bool],
ipowers: npt.NDArray[np.uint8],
symplectic_matrix: npt.NDArray[np.bool],
vacuum_state: npt.NDArray[np.bool],
) -> npt.NDArray[np.bool]: ...
[docs]
def maxnto_symplectic_matrix(
n_modes: int,
) -> npt.NDArray[np.bool]: ...