Source code for ferrmion.core

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]]: ...
[docs] def topphatt(
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]]: ...
[docs] def hatt(
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: ...
[docs] def encode(
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: ...
[docs] def encode_topphatt(
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: ...
[docs] def decode(
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]: ...