pyqres.algorithms.linear_solver 源代码

import sympy as sp
import numpy as np

from ..core.operation import AbstractComposite


[文档] class LinearSolver(AbstractComposite):
[文档] def __init__(self, reg_list, param_list, submodules): super().__init__(reg_list=reg_list, param_list=param_list, submodules=submodules) self.reg_ancilla = reg_list[0] self.reg_b = reg_list[1] self.kappa = param_list[0] self.epsilon = param_list[1] encode_A = submodules[0] encode_b = submodules[1] self.program_list = [ encode_A(reg_list=[self.reg_ancilla, self.reg_b], param_list=[self.kappa, self.epsilon]), encode_b(reg_list=[self.reg_ancilla, self.reg_b], param_list=[self.epsilon]) ] self.declare_program_list()
[文档] def sum_t_count(self, t_count_list): t_count_A = t_count_list[0] t_count_b = t_count_list[1] kappa, epsilon = self.kappa, self.epsilon Q = (56 * kappa + 1.05 * kappa * sp.log(sp.sqrt(1 - epsilon**2) / epsilon) + 2.78 * (sp.ceiling(np.log(kappa))**3) + 3.17) return (t_count_A + t_count_b * 2) * Q