Гомоморфная схема
На самом деле не объясняется, как найти начальное значение, просто говорится, что мы хотим, чтобы поддерживалось следующее соотношение:

У меня есть следующее Код Python:
Код: Выделить всё
def gold_div(a,b):
r = 1/b
for i in range(0,10):
a = r*a
b = r*b
r = 2 + -1*b
return a
Я подумывал использовать его исходный код, который он ссылается на: Маркштейн, П.: Отдел программного обеспечения и квадратный корень с использованием алгоритмов Гольдшмидта, но я не понимаю, что они делают.
На рисунке ниже показано, что они делают:

Я понимаю, что sgn() — это функция, которая по сути просто определяет, является ли b₀ отрицательным или положительным, но на самом деле я этого не знаю. посмотрите, как я могу использовать их Y₀, поскольку он, похоже, заменяет неизвестный Y₀ неизвестным n (таким образом, у нас есть 2 неизвестных). Они также, похоже, просто быстро перепрыгивают через это, поскольку обычно мы просто используем таблицу поиска, которую, я опять же, не верю, что мы можем использовать, поскольку мы используем CKKS.
Единственное, что я вижу что могло бы сработать, так это использовать тот факт, что, поскольку мы делим, мы можем предположить, что b не равен 0, и тем самым мы можем переписать исходное выражение для Y₀ на 3/4*b₀
Подробнее здесь: https://stackoverflow.com/questions/718 ... using-ckks