Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.12.05;
Скачать: CL | DM;

Вниз

sin, cos, etc.   Найти похожие ветки 

 
123 ©   (2004-11-16 01:45) [0]

Как в процессоре реализовано вычисление тригонометрич. ф-ций?


 
Marser ©   (2004-11-16 01:48) [1]

Никак. Это реализуется в сопроцессоре. Скорее всего, используется разложение в ряд.


 
123 ©   (2004-11-16 01:58) [2]

Думал сразу написать про сопроцессор, но решил ограничиться словом "процессор", нет же..
Поправлюсь: как сопроцессор вычисляет тригонометр. ф-ции?
Какие различия реализации у разных производителей?
Какие показатели скорости вычисления у, опять-таки, разных производителей?


 
Andy BitOff ©   (2004-11-16 02:00) [3]

ПРАВИЛЬНО реализовано.


 
Alex Konshin ©   (2004-11-16 06:47) [4]

Используются таблицы и некое вырожденное разложение в ряд. Т.е. как такового вычисления по ряду там нет. Если очень сильно повспоминаю, то может вспомню, где я видел их алгоритмы.


 
vidiv ©   (2004-11-16 07:23) [5]

да! былобы интересно узнать =)


 
Jeer ©   (2004-11-16 10:35) [6]

SinCos вроде вычисляется по алгоритму CORDIC (т.н. "метод цифра за цифрой")

Отдельные Sin и Cos - как правило, через ряды по схеие Горнера.


 
Pentium133 ©   (2004-11-16 10:49) [7]

Увеличится ли скорость вычисления если, напрмер заранее вычислить синусы (или косинусы) нужных углов и заполнить ими масив. А потом по мере надобности доставать значения из масива?


 
Jeer ©   (2004-11-16 11:03) [8]

Все зависит от задач (точности).
Есть интерполяционные методы - скорость выше.
Для грубой сетки углов сойдет чисто табличный метод.
Например, код угла идет от валкодера с дискретом 1 град.
В это случае вполне достаточно хранить таблицу из 90 значений.


 
vidiv ©   (2004-11-16 11:33) [9]

и всеже сопроцессор быстро считает :)


 
wal ©   (2004-11-16 11:36) [10]

>Pentium133 ©   (16.11.04 10:49) [7]
>Увеличится ли скорость вычисления если, напрмер заранее вычислить синусы (или косинусы) нужных углов.
Ну если делить углы на "нужные" и "ненужные", то можно и таблицу сделать, в любом случае "вычислить заранее" всегда быстрее, чем "считать каждый раз", но если "нужных" много, то как бы всего Брадиса загонять не пришлось. Тут извечная диллема оптимизации - либо объем приложения, либо скорость выполнения.

С уважением.


 
Jeer ©   (2004-11-16 14:10) [11]

vidiv ©   (16.11.04 11:33) [9]

>и всеже сопроцессор быстро считает :)

Это только так кажется :))

Например, известная библиотека CEPHES имела в сравнении с сопроцессором следующие показатели в относительных ед-цах

Sin_8087________ 1.0
SinCos_8087_____ 1.4
Sin_CEPHES______ 0.2
SinCos_CEPHES___ 0.5

при макс.погрешности 6E-6


 
palva ©   (2004-11-16 15:13) [12]

За процессор не скажу, но по науке синус вычисляется так: в диапазоне 0..pi/2 вычисляется как многочлен (т. н. многочлен наилучшего приближения) который берется из справочника. Остальные значения параметра приводятся к 0..pi/2 из соображений симметрии и периодичности. Очень большие значения (там где изменение мантиссы на единицу означает изменение числа на величину, сравнимую с периодом синуса) должно вызывать ошибочную ситуацию. Подробнее можно посмотреть отладчиком BP7, если собрать программу с эмуляцией сопроцессора.


 
Alex Konshin ©   (2004-11-16 22:36) [13]

Вполне достаточно таблицы 0..pi/4, остальное вычисляется. По-моему там даже еще меньший диапозон, вроде 0..pi/12. Потом я помню, что таблица используется для первого приближения, которое и так уже достаточно точное. И она как-то уточняется. Потом используются тригонометрические формулы для получения окончательного результата.

Пока не вспомнил, где я это видел. Точнее, я точно помню, что я видел описание алгоритма для больших машин ЕС ЭВМ, но где-то я также встречал подобное описание и для PC.



Страницы: 1 вся ветка

Текущий архив: 2004.12.05;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.035 c
1-1101137093
hgd
2004-11-22 18:24
2004.12.05
Подскажите


1-1101107709
uny
2004-11-22 10:15
2004.12.05
Алгоритм - как выделить число


1-1100722921
r_alex
2004-11-17 23:22
2004.12.05
Посоветуйте как и насколько можно изменить компоненту ListBox


6-1096296123
The X
2004-09-27 18:42
2004.12.05
Как убрать стандартные сообщения NMSMTP и NMPOP3 об ошибках?


6-1095999075
Геннадий
2004-09-24 08:11
2004.12.05
Загрузка ЦП: 100%





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский