|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу. Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста". Название темы слишком короткое или не отражает сути вашего вопроса. Тема исчерпала себя, помните, один вопрос - одна тема Прочитайте правила и заново правильно создайте тему. |
|
Опции темы | Поиск в этой теме |
23.04.2007, 19:22 | #1 |
Новичок
Джуниор
Регистрация: 23.04.2007
Сообщений: 1
|
как найти корень из числа
как найти корень в n-ой степени из числа
|
23.04.2007, 19:42 | #2 |
JAVA BEAN
Участник клуба
Регистрация: 22.04.2007
Сообщений: 1,329
|
Power(a,1/n)
|
23.04.2007, 19:44 | #3 |
Старожил
Регистрация: 13.12.2006
Сообщений: 3,859
|
результат:=EXP(1/<степень>*Ln(числа));
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи |
23.04.2007, 19:48 | #4 |
JAVA BEAN
Участник клуба
Регистрация: 22.04.2007
Сообщений: 1,329
|
Лучше юзать Power, т.к. он не вылетает при основании <=0.
|
23.04.2007, 19:50 | #5 |
Старожил
Регистрация: 13.12.2006
Сообщений: 3,859
|
Да? сравните использование памяти при использовании power.
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи |
23.04.2007, 19:52 | #6 |
JAVA BEAN
Участник клуба
Регистрация: 22.04.2007
Сообщений: 1,329
|
Если критична память нужно юзать asm.
|
23.04.2007, 20:01 | #7 |
Старожил
Регистрация: 13.12.2006
Сообщений: 3,859
|
function Power(const Base, Exponent: Extended): Extended;
const Max : Double = MaxInt; var IntExp : Integer; asm fld Exponent fld st {copy to st(1)} fabs {abs(exp)} fld Max fcompp {leave exp in st(0)} fstsw ax sahf jb @@RealPower {exp > MaxInt} fld st {exp in st(0) and st(1)} frndint {round(exp)} fcomp {compare exp and round(exp)} fstsw ax sahf jne @@RealPower fistp IntExp mov eax, IntExp {eax=Trunc(Exponent)} mov ecx, eax cdq fld1 {Result=1} xor eax, edx sub eax, edx {abs(exp)} jz @@Exit fld Base jmp @@Entry @@Loop: fmul st, st {Base * Base} @@Entry: shr eax, 1 jnc @@Loop fmul st(1), st {Result * X} jnz @@Loop fstp st cmp ecx, 0 jge @@Exit fld1 fdivrp {1/Result} jmp @@Exit @@RealPower: fld Base ftst fstsw ax sahf jz @@Done fldln2 fxch fyl2x fxch fmulp st(1), st fldl2e fmulp st(1), st fld st(0) frndint fsub st(1), st fxch st(1) f2xm1 fld1 faddp st(1), st fscale @@Done: fstp st(1) @@Exit: end; function Exp(const X: Extended): Extended; asm { e**x = 2**(x*log2(e)) } FLD X FLDL2E { y := x*log2e; } FMUL FLD ST(0) { i := round(y); } FRNDINT FSUB ST(1), ST { f := y - i; } FXCH ST(1) { z := 2**f } F2XM1 FLD1 FADD FSCALE { result := z * 2**i } FSTP ST(1) end; function Ln(const X: Extended): Extended; asm FLD X FLDLN2 FXCH FYL2X FWAIT end; Сравнивайте. Плюс: использование Power увеличит ваш дистрибутив на размер модуля Math не забывайте об этом. * и деление не стал приводить к атомарности, по причине того что и то и другое в исходных кодах функций используется
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи Последний раз редактировалось zetrix; 25.04.2007 в 19:07. |
26.04.2007, 13:40 | #8 |
Delphi/C++/C#
Участник клуба
Регистрация: 29.10.2006
Сообщений: 1,972
|
Тема закрыта, во избежании массового наказания за флуд!
Протесты в личку! |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Найти два наибольших отрицательных числа | Makarov | Паскаль, Turbo Pascal, PascalABC.NET | 8 | 14.06.2008 17:57 |
ДАНЫ 4 ЧИСЛА X Y Z W составит программу найти произведение все положительные нечетные числа | Woland-itn | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 23.03.2008 21:49 |
Джентльмены, помогите, пжлст. каким оператором высчитать корень 5-ой степени числа? | Osi@ | Помощь студентам | 32 | 03.10.2007 19:52 |
Найти количество различных цифр данного натурального числа. | stalker | Паскаль, Turbo Pascal, PascalABC.NET | 10 | 22.05.2007 17:45 |