![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 |
Форумчанин
Регистрация: 02.04.2008
Сообщений: 358
|
![]()
подумать времени не хватает, но алгоритм приведенный http://programmersforum.ru/showpost....69&postcount=6
рабочий? это общий случай если именно функцию нужно x^(1/3) это должно быть проще
неплохо пишу на ассемблере для 80х86
icq: 3(один)7748666 mail: airyashov(а)inbox.ru |
![]() |
![]() |
![]() |
#12 |
Не
Участник клуба
Регистрация: 29.10.2009
Сообщений: 1,456
|
![]()
а по какой формуле в том исходнике на 1 стр вычисляется степень? я знаю только одну формулу...
exp(ln(x)/n) 1/n- степень exp = sum(k=0,n) x^k / k! (ряд Тейлора) n достаточно взять 15 дело в том, что мы не проходили написание функций на чистом асм, мы пишем прототип внешней функции в сишном файле, а код функции в асм файле. Загрузка аргументов функции на стек и операции над ними. Все задания должны выполняться именно так... попробую в выходные реализовать exp(ln(x)/3) с помощью ряда Тейлора, если нет никаких приближенных формул для exp(x)... Последний раз редактировалось NiCola999; 19.11.2009 в 12:20. |
![]() |
![]() |
![]() |
#13 |
Форумчанин
Регистрация: 02.04.2008
Сообщений: 358
|
![]()
короче вот родился код
это написано для положительных чисел >8 для остального нужно просто написать условия и все будет ок, на отрицательность и на значение степени <1, выделение целой части тоже упрощено (будет округление нужно настроить SR), если время найдется подправлю Код:
неплохо пишу на ассемблере для 80х86
icq: 3(один)7748666 mail: airyashov(а)inbox.ru Последний раз редактировалось airyashov; 19.11.2009 в 17:10. |
![]() |
![]() |
![]() |
#14 | |
Не
Участник клуба
Регистрация: 29.10.2009
Сообщений: 1,456
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#15 | |
Форумчанин
Регистрация: 02.04.2008
Сообщений: 358
|
![]() Цитата:
зашел в тупик, что должна делать команда FSCALE если в стеке st(0)=1 st(1)=1
неплохо пишу на ассемблере для 80х86
icq: 3(один)7748666 mail: airyashov(а)inbox.ru Последний раз редактировалось airyashov; 19.11.2009 в 22:42. |
|
![]() |
![]() |
![]() |
#16 |
Форумчанин
Регистрация: 02.04.2008
Сообщений: 358
|
![]()
вот окончательный код
Код:
неплохо пишу на ассемблере для 80х86
icq: 3(один)7748666 mail: airyashov(а)inbox.ru Последний раз редактировалось airyashov; 21.11.2009 в 00:26. |
![]() |
![]() |
![]() |
#17 |
Не
Участник клуба
Регистрация: 29.10.2009
Сообщений: 1,456
|
![]()
я не очень понимаю, по какому алгоритму ты считаешь корень, если не сложно обьясни на языке речи или например на языке си/с++, а не на асм, просто мне тяжеловато читать код =)
Последний раз редактировалось NiCola999; 21.11.2009 в 01:37. |
![]() |
![]() |
![]() |
#18 | |
Форумчанин
Регистрация: 02.04.2008
Сообщений: 358
|
![]() Цитата:
![]()
неплохо пишу на ассемблере для 80х86
icq: 3(один)7748666 mail: airyashov(а)inbox.ru |
|
![]() |
![]() |
![]() |
#19 |
Не
Участник клуба
Регистрация: 29.10.2009
Сообщений: 1,456
|
![]()
переписал под свой асм
z = 1/3 (log2(x)) x^(1/3) = 2^(z-(int)z) * 2^(int)z Код:
(2^(int)z)-1 + 1 f2xm1 fld1 faddp все бы хорошо, но например при x=27 z = 1/3*1.58 = 1.59 (int)z = 2 когда я считаю 2^(int)z f2xm1 получается 2 !!! а должно быть 3 (2^2)-1 = 4-1 = 3 почему так ? можно как-то сделать сдвигом это делать, но я не понял... Последний раз редактировалось NiCola999; 21.11.2009 в 16:38. |
![]() |
![]() |
![]() |
#20 |
Не
Участник клуба
Регистрация: 29.10.2009
Сообщений: 1,456
|
![]()
задача решена, спасибо
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
работа с FPU | NiCola999 | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 14 | 04.11.2009 00:01 |