Вычисление некоторых элементарных функций


Синус и косинус
Арктангенс, арксинус и арккосинус
Квадратный корень
Экспонента, синус и косинус
Гамма и Бета функции


Q: А для чего это нужно, если есть прекрасные библиотечные функции?

A: Есть три ответа на этот вопрос:

  1. Библиотечные функции реализованы далеко не для всех процессоров. Лично я столкнулся с проблемой реализации тригонометрии на ADSP-2181;
  2. Функции реализованы для определенной точности (обычно 64 бита для double precision floating point values, 32 бита для single precision). При необходимости повышенной (и пониженной!) точности и/или представления чисел не в виде floating point требуется новая реализация;
  3. Алгоритмы полезны сами по себе как часть математической культуры, особенно если они короткие и ясные. Могут использоваться в целях обучения программированию, например.

Q: Особенности представления алгоритмов элементарных функций?

A:Алгоритмы представлены в виде описания порядка действий и в виде программы на ANSI C, реализующей этот порядок.
Действительные числа представлены в программах как single precision floating point. Перевод в double precision трудностей не представляет; менее тривиален в некоторых случаях перевод в fixed point. Программы снабжены обширными комментариями на английском языке. Программа вычисления экспоненты и аналогичного по форме вычисления синуса с косинусом сделана для double precision.

Q:Почему комментарий в программе по-английски?

A: В силу того, что программа, в отличие от HTML-файла, может использоваться при компиляции и при этом просматриваться совершенно разными редакторами. В силу неоднозначности русских кодировок и в силу необязательности поддержки русских шрифтов на компьютере, где проводится компиляция, желательно все символы файла (комментарии тоже) держать в виде ASCII -- имею в виду нижнюю половину таблицы. В этой ситуации писать по-русски можно транслитом, но выглядит это достаточно по-уродски в силу неоднозначности самого транслита. Я сделал проще -- пишу комментарии по-английски.


Переход к индексу



Hosted by uCoz