Мне интересно, есть ли какие-либо алгоритмы для выполнения деления с плавающей запятой, которые будут ускорены, если у вас есть доступ к блоку квадратного корня с плавающей точкой в аппаратном обеспечении?
Если да, то каковы эти алгоритмы?
Разделение на квадратный корень - фактически то, как операция деления обычно выполняется в аппаратном обеспечении. Чтобы быть более точным, блок квадратного корня почти повсеместно вычисляет взаимный квадратный корень (1/sqrt(X)
), поскольку с ним можно легко выполнять операции деления и квадратного корня: sqrt(x) = x*(1/sqrt(x))
и R=X/Y=X*Z*Z
где Z=1/sqrt(Y)
.
Если есть аппаратная инструкция, которая возвращает оценку, вы можете улучшить результат с помощью следующего итерационного метода:
Z = Z * (3-Y*Z*Z )/2
log
который может помочь, но трудно понять, как аппаратныйsqrt
поможет с делением.A/B
через квадратный корень изA
и / илиB
?