реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> сопроцессор на asm
Malyshko
сообщение Dec 10 2010, 22:40
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 20-11-10
Пользователь №: 61 033



Как на ассемблере заполнить функцию y=exp(0.75*x)*arccos((x)^0.75)?
Go to the top of the page
 
+Quote Post
sigmaN
сообщение Dec 10 2010, 23:08
Сообщение #2


I WANT TO BELIEVE
******

Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751



ну а реализации этих функций есть? На Си?
Уже на асме?
Их нет вообще?
Что за проц? Вообще ничего непонятно....


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post
Xenia
сообщение Dec 11 2010, 08:18
Сообщение #3


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(Malyshko @ Dec 11 2010, 01:40) *
Как на ассемблере заполнить функцию y=exp(0.75*x)*arccos((x)^0.75)?

Видимо можно ускорить вычисление, даже не переходя на ассемблер, если отказаться от возведения x в плавающую степень 0.75, а представить число 0.75 в виде рациональной дроби 3/4. Тогда возведение в эту степень будет эквивалентно двойному квадратному корню из куба x. Т.е.
X^0.75 = sqrt( sqrt ( x*x*x))
или, вынося квадрат x из под внутреннего корня, окончательно имеем:
X^0.75 = sqrt( x * sqrt (x))
Такое будет вычисляться много быстрее, чем возведение в дробную степень.

P.S. Когда в выражениях присутствуют сложные функции типа квадратных корней, тригонометрических функций, а особенно возведения в стпень, то потуги ускорения вычислений, путем перехода на ассемблер, оказываются безрезультатными - выигрыш в скорости получается ничтожным. Единственным исключением была моя борьба с вычислением гауссинаны exp(-(x-x0)^2/sigma^2), которую мне удалось ускорить почти вдвое, за счет переписывания кода для экспоненты (x86 не имеет встроенной инструкции для вычисления экспоненты и ее приходится вычислять через логарифмы).
Go to the top of the page
 
+Quote Post
Палыч
сообщение Dec 11 2010, 09:04
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(Malyshko @ Dec 11 2010, 01:40) *
Как на ассемблере заполнить функцию y=exp(0.75*x)*arccos((x)^0.75)?

Вам - что собственно нужно? "Заполнить" - это написать код функции, вычисляющей это выражение в процессе работы программы, или нужна таблица значений функции для определенных значений аргумента (т.е. вычисления на стадии трансляции)?

Go to the top of the page
 
+Quote Post
Malyshko
сообщение Dec 11 2010, 13:14
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 20-11-10
Пользователь №: 61 033



нужно написать код, который бы вычислял значения функции, а таблицу значений, я так понимаю можно будет потом по шагам посмотреть?

http://pixs.ru/showimage/Programmaj_3858950_1347816.jpg - собственно что-то подобное, только это программа нахождения корней квадратного уравнения...

Сообщение отредактировал Malyshko - Dec 11 2010, 13:14
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th July 2025 - 05:03
Рейтинг@Mail.ru


Страница сгенерированна за 0.01358 секунд с 7
ELECTRONIX ©2004-2016