![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
4етырнадцатый |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 17.5.2006 Репутация: нет Всего: нет |
Люди!!!
Необходимо реализовать на чистом С(!!!) без подключения библиотек (в т.ч. math) функции синуса, косинуса (в принципе хватит одной из них), а также функцию взятия квадратного корня. Пойдут любые алгоритмы, в т. ч. рекурсивные, итеративные и др. Желательно вычислять с заданной точностью. В крайнем случае можно на ассемблере. Или дайте хотя бы описание алгоритма!!! Огромная просьба откликнуться и помочь!!! |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Воспользуйся поиском в гугле по словам "синус ряд тейлора", "косинус ряд тейлора", "алгоритм квадратного корня" и т.д.
|
|||
|
||||
ksili |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: 1 Всего: 17 |
На ассемблере есть инструкции FSIN, FCOS и FSQRT. Так что никаких алгоритмов и не надо!
![]() ![]() Только разберитесь со стеком FPU, чтобы он не переполнялся при использовании указанных функций Это сообщение отредактировал(а) ksili - 5.5.2008, 11:34 -------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Тригонометрические ф-ции(из-за своей невычисляемой природы) считаются по таблицам. Кв. корень - посредством итеративных приближений. -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
ksili |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: 1 Всего: 17 |
archimed7592, прямо в процессоре зашита таблица со значениями синусов? Дайте подтверждающую ссылку. Я не подкалываю, мне действительно интересно! -------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
|||
|
||||
bronislav |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 334 Регистрация: 29.1.2008 Где: Украина::Донецк Репутация: нет Всего: 3 |
насколько я знаю, эти функции вычисляются приблизительно (т.е. раскладываются в ряд тейлора) -------------------- ![]() иногда проще и быстрей обойти лужу, даже если кажется что она мелкая и путь напрямик короче - ведь она может скрывать открытый люк (с) mes |
|||
|
||||
Lycifer |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 144 Регистрация: 4.11.2007 Репутация: нет Всего: нет |
Ну насчёт квадратного корня я тебе подскажу,а вот на счёт sin,cos думаё сам.
#define ITNUM 4 float Sqroot1(float x) { int sp=0,i,inv=0; float a,b; if(x<=0.F) return(0.F); // 0.F= 0 случай если не чего считать if(x<1.F) { x=1.F/x; inv=1; } while(x>16.F) { sp++; x/=16.F; } a=2.F; то и есть 2 for(i=ITNUM;i>0;i--) { b=x/a; a+=b; a*=0.5F; } while(sp>0) { sp--; a*=4.F;} if(inv) a=1.F/a; return(a); } Полное описание делать не буду, ну ты же должен осознать формулу!!!! ![]() Добавлено через 2 минуты и 42 секунды да,а насчёт синусов и косинусов, я видел как это делают через тангенс.(так что дело за малым) |
|||
|
||||
Igor_K |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 166 Регистрация: 4.2.2008 Где: Kyiv Репутация: нет Всего: нет |
Ага. От сцылка http://algolist.manual.ru/maths/count_fast/sincos.php |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Ссылку дать не могу, но, из авторитетного, на мой взгляд, источника(ixbt.com) слышал, в обзоре одного из GPU, что-то на этот счёт(про то что вычисляются по таблицам). Возможно меня подводит память, возможно сейчас уже считают по другому, а возможно я прав. В общем, гуглите и гулимы будете ![]() -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |