【发布时间】:2019-11-08 13:36:43
【问题描述】:
所以我正在为 Python 中的 uni 项目制作 BCH 解码器。它需要一个 10 位的代码字,无论是否有错误,都应该检测并纠正它发现的任何错误。对于双重纠错,有一个数学公式可以检测这些错误的位置和大小:
formula for error pos and mag
i = (-Q + ((Q^2-4*P*R)^(1/2))/2*P)<br/>
j = (-Q - ((Q^2-4*P*R)^(1/2))/2*P)
b = (i*s1-s2)/(i-j)<br/>
a = s1-b
我已经正确计算了 QPR 和 s1,s2。
所以,我正在用这个例子(2 error BCH example)进行调试。它的数字 8888880747 被传输到 8899880747,因此位置 3 和位置 4 的 2 错误幅度均为 1。到目前为止,我的程序生成了正确的 syndromes(s1 to s4 - 2,7,3,3) 和正确的 PQR 值 (10,7,10)但是在计算 i 和 j 时,我得到的值与示例不同 - 10.7 和 10.6 而不是 3 和 4。
这是我的 i 和 j 代码:
#work out error positions i and j
sqrt = ((Q**2 - 4*P*R) % 11)**(1/2)
i = (((-Q+sqrt)/(2*P))%11)
j = (((-Q-sqrt)/(2*P))%11)
谁能看到我做错了什么?谢谢。
【问题讨论】:
-
@meowgoesthedog 所以我已经暗示为: sqrt = ((Q**2 - 4*P*R) % 11)**(1/2) i = ((-Q+ sqrt)/(2*P)) i = (i + (i % 11)) % 11 j = ((-Q-sqrt)/(2*P)) j = (j + (j % 11)) % 11 但我仍然得到错误的值(10.39、10.2)。我误解了你的回答吗?
-
我对这个主题不熟悉,但也许你应该接受modular square roots mod 11。
标签: python math cryptography algebra