|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Дек 14, 2003 16:27:54 · Поправил: emergenter Если не использовать к волшебные но очень медленные команды СОПРОЦЕССОРА... как можно вычислить sin? (может кто-нить занимался этим!!!) |
|
|
Дата: Дек 14, 2003 16:38:15 Построить табличку для некого набора углов с помошью волшебных коман и потом быстро по табличке иметь приближенное значение. |
|
|
Дата: Дек 14, 2003 16:40:02 Dr.Golova Так это уже какие-то другие волшебные команды!!!!!!!!!! |
|
|
Дата: Дек 14, 2003 16:41:28 Dr.Golova И если сразу угол не известен!!!!!!!! |
|
|
Дата: Дек 14, 2003 16:44:12 ну можешь попробовать распараллелить алгоритм, и пустить его на беовульфе к примеру. |
|
|
Дата: Дек 14, 2003 16:51:16 rst "беовульфе" - это как? и куда? Если нетрудно поясните!!! |
|
|
Дата: Дек 14, 2003 16:58:30 беовульф - это Application-clastering solution. Короче система для распределенных вычислений на нескольких машинах. |
|
|
Дата: Дек 14, 2003 17:01:34 · Поправил: emergenter rst ну и как такое можно применить в совсем безобидной задачи?? :-))))) Причем причем тут несколько машин? У меня всего одна машина и я не хочу покупать еще одну или менять мою уже полюбившуюся мне...:-))) |
|
|
Дата: Дек 14, 2003 17:05:51 формула Тейлора дает достаточно быстро приближенное значение, при этом можешь менять точность (больше итераций - больше точность). Не знаю насколько это быстро по сравнению с сопроцессором. |
|
|
Дата: Дек 14, 2003 17:07:58 Посчитать синус без сопроцессора можно и даже не слишком сложно, правда навскидку я алгоритма не помню, за малой его для меня актуальностью. Что-то на тему разложения в ряд. Поискал в нете, нашёл что-то похожее: double sin1(double x)
{
int ii; double xx,r,sl,f,delta=0.0001;
sl=x; ii=1; r=0; xx=x*x;
f= fabs(sl);
while (f>delta)
{
r=r+sl;
sl=-(sl*xx/(2*ii))/(2*ii+1);
f=fabs(sl);
ii=ii+1 ;
}
return(r);
} Потом была ещё куча приближённых методов, особенно много их было у всяких спектрумистов, где fpu от рождения нет. ;) Можешь посмотреть, например, здесь: http://ivr.webzone.ru/articles/dop_ar/
Другой вопрос, что ты подчеркнул, что тебя не устраивает именно скорость сопроцессора. Ни один из известных мне способов с точностью того же порядка, что и у fpu, и близко к нему по скорости не приближается. У более шустрых методов существенно ниже точность. Подозреваю, что вместо этого тебе нужно оптимизировать использование синуса. Например, заранее выбрать значение синуса в табличку с каким-нибудь шагом, и брать готовые значения оттуда. В добавок, можно использовать вычисления с фиксированной точкой. А заполнять эти таблички проще и качественнее всего именно сопроцессором... |
|
|
Дата: Дек 14, 2003 17:13:38 bsl_zcs спасибо за столь полную информацию... |
|
|
Дата: Дек 14, 2003 17:37:31 ну и как такое можно применить в совсем безобидной задачи?? :-))))) Причем причем тут несколько машин? У меня всего одна машина и я не хочу покупать еще одну или менять мою уже полюбившуюся мне...:-))) Ну х.з. Ты сказал нужно быстро - вот я тебе и предложил самый быстрый вариант. Откуда я знаю - может тебе нужна производительность в несколько миллионов синусов в секунду. Тогда кроме как параллельные вычисления тебе ничто не поможет. |
|
|
Дата: Дек 14, 2003 17:43:37 К написанному bsl_zcs трудно что-нибудь добавить, но гляньте ещё здесь. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.057 |