Нет инструкции SSE, реализующей функцию логарифма.Тем не менее, также нет единственной инструкции x86, которая выполняет общий логарифм.Если вы думаете об использовании функции логарифма, такой как log
или log10
из стандартной библиотеки C, стоит взглянуть на реализацию, которая используется в библиотеке с открытым исходным кодом, такой как libc.Вы можете легко свернуть свое собственное логарифмическое приближение, которое действует для всех элементов в регистре SSE.
Такая функция часто реализуется с использованием полиномиальной аппроксимации, которая действительна в рамках некоторой спецификации точности в определенной области входных аргументов, такой как ряд Тейлора.Затем вы можете воспользоваться свойствами логарифма, чтобы обернуть общий входной аргумент в приемлемый диапазон ввода для вашей логарифмической подпрограммы.Кроме того, вы можете параметризовать основание логарифма, используя свойство:
log_y(x) = log_a(x) / log_a(y)
, где a
- основание созданной вами логарифмической подпрограммы.