[uquote="afz",url="/forum/viewtopic.php?p=3157324#p3157324"]интерполяционную формулу Ньютона. Исходная таблица синусов - 7 (семь!) значений - для 0, 15, 30, 45, 60, 75 и 90 градусов.[/uquote]прекрасно!
[uquote="afz",url="/forum/viewtopic.php?p=3157324#p3157324"]Расчет по формуле Ньютона - 11 умножений, 6 делений и штук 20 сложений-вычитаний "точных" (double) чисел, ну, плюс склолько-то манипуляций с индексами и циклами.[/uquote]Ужасно!
Для простейшей линейной интерполяции между значениями таблицы - 1 сложение, 1 вычитание , 1 умножение, 1 деление, + операции с индексами - 1 деление + 2 выборки из памяти
Либо сделать 2 таблицы - 1-я с синусами, 2-я с разницей синусов из первой табл. Тогда на 1 вычитание и 1 деление меньше. Но объём общей таблицы в 2 раза больше.
[uquote="afz",url="/forum/viewtopic.php?p=3157324#p3157324"]погрешность в диапазоне (0..14) градусов не превышает 0.0035%, причем, что странно, чем меньше угол, тем больше погрешность.[/uquote]т.е. 35 ppm (частей на миллион).
Это многовато для библио-функции, но лишку для любого прикладного Фурье или анализатора спектра. Там достаточно суммарного, т.е. по всем операциям 0,5%, или, если считать за экран FHD т.е. 1000 линий, должно быть не более размаха в 0,5 пиксела, или 0,25 х10E-3 или 250 ppm, а учитывая, что обычно график на экране занимает не более пол-экрана, то и все 500 ppm точности.
Кстати, для диапазона 0-15 градусов, размер таблицы для линейной интерполяции может быть очень мал. для точности 0,025 ppm (т.е. 0,25 x10E-9 или 9 фактических дес.знаков) это 1200 байт (это позволяет делать длительные расчёты, накопительные). или
для точности 0,1 ppm - для одно-двукратного расчёта, размер таблицы можно снизить до 600 байт.
посчитал ваш случай - 36,8 ppm, 0-14 градусов, теже 7 значений таблицы

28 байт.
[uquote="afz",url="/forum/viewtopic.php?p=3157324#p3157324"]И эти лишние 5 битов мантиссы оказались весьма критичными,[/uquote]ну это 1,5 десятичных знака добавка.
1. на картинке - первая строка, второй столбец - кол-во дес.знаков.... первый столбец - разрядность мантиссы.
там было 8, ну я для вашего случая подставил 5.)
2\a. Вторая картинка - вычисление погрешности табличного синуса при линейной интерполяции на 15 градусах. Полная таблица 0-90 займёт 7200 байт. До 15 градусов в 6 раз меньше - 1200 байт
2\b. Ошибка перемножения БПФ
это попытка подсчитать общую ошибку БПФ 1024 точек, используя таблицу синусов с аппроксимацией. Вычисленная дельта (ошибка) берётся 22 раза - 10 бабочек (умножение и сложение) + нормализация и окно. Итого 22 операции. Формула такая - корень кв. из 22 квадратов дельты.
Я тоже, в некотором роде, радиоинженер...