Lapunou 0 26 мая, 2010 Опубликовано 26 мая, 2010 · Жалоба нужно расчитать arccos. Есть оптимизированая библиотека qmath в ней можно расчитать atan. arccos(x) = pi/2 - arctg(x/sqrt(1-x*x)) ; Для перещета arccos слишком много операций нет ли готовой оптимизированой ф-и arccos или хотябы коэфиц. полинома. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
thermit 1 26 мая, 2010 Опубликовано 26 мая, 2010 · Жалоба С какой точностью? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lapunou 0 26 мая, 2010 Опубликовано 26 мая, 2010 · Жалоба для atan у них вот такой полином, для acos чтобы был такойже ;***********************************************************************; ;* Tylor Series Approximation of ATAN: *; ;* Algorithm : *; ;* atan(x): where 'x' is in 16.16 format *; ;* = 0.318253*x + 0.003314*x^2 - 0.130908*x^3 + 0.068542*x^4 *; ;* - 0.009159*x^5; if x<1 *; ;* = 0.5-atan(1/x); if x>=1 *; ;***********************************************************************; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Gyga 0 26 мая, 2010 Опубликовано 26 мая, 2010 · Жалоба Табличка и ряды. Был у меня спрвочник по рядам, да сплыл Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
diwil 0 26 мая, 2010 Опубликовано 26 мая, 2010 · Жалоба нужно расчитать arccos. Есть оптимизированая библиотека qmath в ней можно расчитать atan. arccos(x) = pi/2 - arctg(x/sqrt(1-x*x)) ; Для перещета arccos слишком много операций нет ли готовой оптимизированой ф-и arccos или хотябы коэфиц. полинома. если арифметика целочисленная, то CORDIC, наверное, будет оптимальным вариантом. однако придется вычислить синус. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lapunou 0 26 мая, 2010 Опубликовано 26 мая, 2010 · Жалоба Надо быстрая функция Арифметика целочисленная. А CORDIC используют та что я видел для ПЛИС а как тут я не знаю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
thermit 1 26 мая, 2010 Опубликовано 26 мая, 2010 · Жалоба Для точности ~10-5 (что соответствует Q15) подойдет такой метод: acos(x) ~ f(x) = sqrt( 1 - x ) * P( x ) x=0 ... 1 f(x) = pi/2 ... 0 P( x ) = -0.0187293*x^3 + 0.0742610*x^2 - 0.2121144*x + 1.5707288 Делить тут уже не надо, но корень извлечь придется. Все остальные способы существенно сложнее в вычислительном плане... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lapunou 0 27 мая, 2010 Опубликовано 27 мая, 2010 · Жалоба да max погрешность ~0.000068 для целочисленного числа где-то max = 2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lapunou 0 27 мая, 2010 Опубликовано 27 мая, 2010 · Жалоба Спасибо! А как получились эти коэффициенты -0.0187293 0.0742610 -0.2121144 1.5707288 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dmitrmax 0 27 мая, 2010 Опубликовано 27 мая, 2010 · Жалоба P( x ) = -0.0187293*x^3 + 0.0742610*x^2 - 0.2121144*x + 1.5707288 Делить тут уже не надо, но корень извлечь придется. И не забыть, что вычислять полином лучше по схеме Горнера. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lapunou 0 27 мая, 2010 Опубликовано 27 мая, 2010 · Жалоба Да по схеме Горнера. А как получились эти коэффициенты Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
thermit 1 27 мая, 2010 Опубликовано 27 мая, 2010 · Жалоба DMax: И не забыть, что вычислять полином лучше по схеме Горнера. Ну, для настоящих индейцев это само-собой разумеется... _Andu_: А как получились эти коэффициенты Путем аппроксимации функции acos(x)/sqrt(1-x). В отличие от acos эта функция хорошо приближается полиномом невысокого порядка. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться