paddle_quantum.qpp.angles

量子相位处理相关工具函数包

qpp_angle_finder(P, Q)

对一个劳伦对 P, Q,找到相应的角度集合

参数:
  • P (Laurent) – 一个劳伦多项式

  • Q (Laurent) – 一个劳伦多项式

返回:

包含如下元素:

-list_theta: \(R_Y\) 门对应的角度 -list_phi: \(R_Z\) 门对应的角度

返回类型:

Tuple[List[float], List[float]]

qpp_angle_approximator(P, Q)

对一个劳伦对 P, Q,估计相应的角度集合

参数:
  • P (Laurent) – 一个劳伦多项式

  • Q (Laurent) – 一个劳伦多项式

返回:

包含如下元素:

-list_theta: \(R_Y\) 门对应的角度 -list_phi: \(R_Z\) 门对应的角度

返回类型:

Tuple[List[float], List[float]]

备注

yzzyz_angle_finder 不同的是, yzzyz_angle_approximator 假定唯一的误差来源是精度误差(而这一般来讲是不正确的)。

update_angle(coef)

通过 coefPQ 中计算角度

参数:

coef (List[complex]) – PQ 中的第一项和最后一项

返回:

角度 thetaphi

返回类型:

Tuple[float, float]

抛出:

ValueError – 参数错误:检查这四个参数{[p_d, p_nd, q_d, q_nd]}

update_polynomial(P, Q, theta, phi, verify)

通过 theta , phi 更新 P , Q

参数:
  • P (Laurent) – 一个劳伦多项式

  • Q (Laurent) – 一个劳伦多项式

  • theta (float) – 一个参数

  • phi (float) – 一个参数

  • verify (Optional[bool] = True) – 验证计算是否正确,默认值为True

返回:

更新后的 P, Q

返回类型:

Tuple[List[float], List[float]]

condition_test(P, Q)
检查 P, Q 是否满足:
  • deg(P) = deg(Q)

  • P, Q 是否具有相同宇称

  • \(PP^* + QQ^* = 1\)

参数:
  • P (Laurent) – 一个劳伦多项式

  • Q (Laurent) – 一个劳伦多项式

抛出:

ValueError – PP* + QQ* != 1: 检查你的代码

yz_decomposition(U)

返回U的yz分解

参数:

U (np.ndarray) – 单比特幺正变换

返回:

alpha, theta, phi 使得 \(U[0, 0] = \alpha R_Y(\theta) R_Z(\phi) [0, 0]\)

返回类型:

Tuple[complex, float, float]