Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2004.12.05;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.039 c
14-1100708166
cyborg
2004-11-17 19:16
2004.12.05
Опрос по поводу данного форума


3-1099469926
Victor!
2004-11-03 11:18
2004.12.05
Проблема с JetSQL


1-1100685529
Lola
2004-11-17 12:58
2004.12.05
Вывести список файлов из папки, в имени которой есть побел


1-1100702396
cvg
2004-11-17 17:39
2004.12.05
Чем может быть вызвана ошибка обращения к clipboard у?


1-1100853835
Ivolg
2004-11-19 11:43
2004.12.05
Данные





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский