|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
18.11.2009, 21:26 | #11 |
Форумчанин
Регистрация: 02.04.2008
Сообщений: 358
|
подумать времени не хватает, но алгоритм приведенный http://programmersforum.ru/showpost....69&postcount=6
рабочий? это общий случай если именно функцию нужно x^(1/3) это должно быть проще
неплохо пишу на ассемблере для 80х86
icq: 3(один)7748666 mail: airyashov(а)inbox.ru |
19.11.2009, 12:10 | #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. |
19.11.2009, 16:54 | #13 |
Форумчанин
Регистрация: 02.04.2008
Сообщений: 358
|
короче вот родился код
это написано для положительных чисел >8 для остального нужно просто написать условия и все будет ок, на отрицательность и на значение степени <1, выделение целой части тоже упрощено (будет округление нужно настроить SR), если время найдется подправлю Код:
неплохо пишу на ассемблере для 80х86
icq: 3(один)7748666 mail: airyashov(а)inbox.ru Последний раз редактировалось airyashov; 19.11.2009 в 17:10. |
19.11.2009, 17:42 | #14 | |
Не
Участник клуба
Регистрация: 29.10.2009
Сообщений: 1,456
|
Цитата:
|
|
19.11.2009, 21:01 | #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. |
|
20.11.2009, 23:52 | #16 |
Форумчанин
Регистрация: 02.04.2008
Сообщений: 358
|
вот окончательный код
Код:
неплохо пишу на ассемблере для 80х86
icq: 3(один)7748666 mail: airyashov(а)inbox.ru Последний раз редактировалось airyashov; 21.11.2009 в 00:26. |
21.11.2009, 01:29 | #17 |
Не
Участник клуба
Регистрация: 29.10.2009
Сообщений: 1,456
|
я не очень понимаю, по какому алгоритму ты считаешь корень, если не сложно обьясни на языке речи или например на языке си/с++, а не на асм, просто мне тяжеловато читать код =)
Последний раз редактировалось NiCola999; 21.11.2009 в 01:37. |
21.11.2009, 09:27 | #18 | |
Форумчанин
Регистрация: 02.04.2008
Сообщений: 358
|
Цитата:
неплохо пишу на ассемблере для 80х86
icq: 3(один)7748666 mail: airyashov(а)inbox.ru |
|
21.11.2009, 12:07 | #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. |
21.11.2009, 23:16 | #20 |
Не
Участник клуба
Регистрация: 29.10.2009
Сообщений: 1,456
|
задача решена, спасибо
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
работа с FPU | NiCola999 | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 14 | 04.11.2009 00:01 |