реклама на сайте
подробности

 
 
> Как реализованы функции cos(x) exp(x) в math.h ?
Костян
сообщение Jan 28 2010, 07:29
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 740
Регистрация: 24-07-06
Из: Minsk
Пользователь №: 19 059



Собственно интересует метод реализации функций cos(x) и exp(x) . Как они вычисляются ? Таблично , посредством ряда фурье или ... ?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Drozd2
сообщение Jan 30 2010, 23:23
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 97
Регистрация: 19-11-09
Пользователь №: 53 743



Если есть желание реализовать свой алгоритм, тогда исключительно CORDIC. Такой ответ уже был. Алгоритм очень хорошо срабатывает на ПЛИС. Весь просчет за один такт. Нужно только не забывать, что для точности, например, 32 бит нужно закладывать в расчет не меньше 33 бит. Еще лучше держат бит 5 в запасе. Очень удобный алгоритм, если нужно сразу получить и синис, и косинус числа. Прирост в скорости вычисления колоссальный. Даже на микроконтроллере без сопроцессора. Да и вообще, для любителей численных методов интересная тема.
Go to the top of the page
 
+Quote Post
Serj78
сообщение Jan 31 2010, 10:35
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 966
Регистрация: 27-05-06
Из: СПб
Пользователь №: 17 499



Цитата(Drozd2 @ Jan 31 2010, 02:23) *
Если есть желание реализовать свой алгоритм, тогда исключительно CORDIC. Такой ответ уже был. Алгоритм очень хорошо срабатывает на ПЛИС. Весь просчет за один такт. Нужно только не забывать, что для точности, например, 32 бит нужно закладывать в расчет не меньше 33 бит. Еще лучше держат бит 5 в запасе. Очень удобный алгоритм, если нужно сразу получить и синис, и косинус числа. Прирост в скорости вычисления колоссальный. Даже на микроконтроллере без сопроцессора. Да и вообще, для любителей численных методов интересная тема.


Готовых функций CORDIC не нашел, только алгоритм. Пока остановился на том, что и просто тупое копирование AVR-овской библиотеки от CVAvr (она, слава богу, открытая и на С писанная) дает примерно десятикратный прирост времени выполнения.

Возможно, в родной кейловской библиотеке больше точность, буду проверять. У меня дискретность значений примерно 50 микрорадиан.

Использовал функции в float синуса, косинуса и арктангенса ( на самом деле там один синус, остальные- через тригонометрические преобразования)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th July 2025 - 05:25
Рейтинг@Mail.ru


Страница сгенерированна за 0.01403 секунд с 7
ELECTRONIX ©2004-2016