Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.09.2009, 10:12   #1
Lord_Rufus
Пользователь
 
Аватар для Lord_Rufus
 
Регистрация: 02.10.2008
Сообщений: 13
Восклицание Нахождение корня n-ой степни

как найти корень n-ой степени?
a - число под корнем
n - степень корня

1. Power(a, 1/n)
2. exp(ln(a)/n)

у кого еще какие варианты?
Lord_Rufus вне форума Ответить с цитированием
Старый 27.09.2009, 10:28   #2
NeshSoft
Максим Николаев
Форумчанин
 
Аватар для NeshSoft
 
Регистрация: 15.02.2009
Сообщений: 170
По умолчанию

всегда пользовался Power, а зачем нужны еще варианты?
NeshSoft. Программирование на заказ для студентов. Delphi/Pascal. Подробнее на сайте neshsoft.narod.ru
NeshSoft вне форума Ответить с цитированием
Старый 27.09.2009, 10:43   #3
Lord_Rufus
Пользователь
 
Аватар для Lord_Rufus
 
Регистрация: 02.10.2008
Сообщений: 13
По умолчанию

neshsoft
У меня такое задание, такое решение не принимается
Lord_Rufus вне форума Ответить с цитированием
Старый 27.09.2009, 11:00   #4
ОДИНОЧЕСТВО В СЕТИ
Любопытная Вредина
Участник клуба
 
Аватар для ОДИНОЧЕСТВО В СЕТИ
 
Регистрация: 19.06.2009
Сообщений: 1,285
По умолчанию

пользуйся!
Код:
function Degree(const DegBasis, DegParam: Extended): Extended; 

asm 

  // Вход: DegBasis, DegParam --> в стеке 

  // Выход: Result --> ST(0) 

  // Примечание: 

  // В случае некорректных данных в ST(0) возвращается DegParam 

 

  XOR     EDX, EDX 

  FLD     DegParam 

  FTST 

  FNSTSW  AX 

  SAHF 

  JNZ     @@DegParam_is_not_0 

  FFREE   ST 

  FLD1 

  JMP     @@exit 

@@DegParam_is_not_0: 

  JC @@DegParam_is_less_than_0 

  JMP     @@cmp_DegBasis_to_0       

@@DegParam_is_less_than_0: 

  OR EDX, 1 

@@cmp_DegBasis_to_0: 

  FLD     DegBasis 

  FTST 

  FNSTSW  AX 

  SAHF 

  JNZ     @@DegBasis_is_not_0 

  TEST    EDX, 1 

  JZ @@DegParam_is_greater_than_0 

  FSTP    ST 

  JMP     @@exit 

@@DegParam_is_greater_than_0: 

  FSTP    ST(1) 

  JMP     @@exit 

@@DegBasis_is_not_0: 

  TEST    BYTE PTR DegBasis + 9, 80H 

  JZ @@DegBasis_is_greater_than_0 

  FABS 

  FXCH 

  OR EDX, 2 

  FLD     ST 

  FRNDINT 

  FSUB    ST, ST(1) 

  FTST 

  FNSTSW  AX 

  SAHF 

  FSTP    ST 

  JZ @@DegParam_is_integer 

  FLD1 

  FDIV    ST, ST(1) 

  FABS 

  FLD1 

  FCOMP     

  FNSTSW  AX 

  SAHF 

  JC @@1_div_Abs_DegParam_greater_or_equal_to_1 

  JZ @@1_div_Abs_DegParam_greater_or_equal_to_1 

  FSTP    ST 

  FSTP    ST(1) 

  JMP     @@exit 

@@1_div_Abs_DegParam_greater_or_equal_to_1: 

  FISTP   QWORD PTR @@Int_64 

  TEST    BYTE PTR @@Int_64, 1 

  JNZ     @@continue 

  FSTP    ST(1) 

  JMP     @@exit 

@@DegParam_is_integer: 

  FLD     ST 

  FISTP   QWORD PTR @@Int_64 

  TEST    BYTE PTR @@Int_64, 1 

  JNZ     @@continue 

  XOR     EDX, EDX 

@@continue: 

  FXCH 

@@DegBasis_is_greater_than_0: 

  FYL2X 

  FLD     ST 

  FRNDINT 

  FSUB    ST(1), ST 

  FXCH    ST(1) 

  F2XM1 

  FLD1 

  FADD 

  FSCALE 

  FSTP    ST(1) 

  TEST    EDX, 2 

  JZ @@exit 

  FCHS 

  JMP     @@exit       

@@Int_64:          

  DQ 0 

@@exit: 

  FWAIT 

 

end;
пример использования
Код:
degree( 4,1/2);
вернет 2
Дурь - это особая форма материи, которая не возникает ниоткуда и не исчезает никуда, а лишь переходит из одной головы в другую.

Последний раз редактировалось ОДИНОЧЕСТВО В СЕТИ; 27.09.2009 в 11:24.
ОДИНОЧЕСТВО В СЕТИ вне форума Ответить с цитированием
Старый 27.09.2009, 12:46   #5
Вавел из ГМТУ
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 896
По умолчанию

Автор будет в восторге
Вавел из ГМТУ вне форума Ответить с цитированием
Старый 27.09.2009, 12:56   #6
NSvirus
пропагандирую жизЪ
Форумчанин
 
Аватар для NSvirus
 
Регистрация: 19.03.2007
Сообщений: 950
По умолчанию

Я находил по формуле Бинома Ньютона..
Посторонним В.
NSvirus вне форума Ответить с цитированием
Старый 27.09.2009, 13:38   #7
Lord_Rufus
Пользователь
 
Аватар для Lord_Rufus
 
Регистрация: 02.10.2008
Сообщений: 13
По умолчанию

ОДИНОЧЕСТВО В СЕТИ
Слишком сложный
Lord_Rufus вне форума Ответить с цитированием
Старый 27.09.2009, 13:43   #8
ОДИНОЧЕСТВО В СЕТИ
Любопытная Вредина
Участник клуба
 
Аватар для ОДИНОЧЕСТВО В СЕТИ
 
Регистрация: 19.06.2009
Сообщений: 1,285
По умолчанию

вот с коментами правда чуть другой
Код:
function New_Power(x, y: FLOATTYPE): FLOATTYPE; //abs(y*log2(x))<990

asm

fld y

fld x

fldz             //Сравним основание степени

fcomip st,st(1)  // с 0 и соответственно установим  флаги процессора

je @Zero

FYL2X            //Стек: ST(0)=t=y*log2(x)

fldz

fcomip st,st(1)  //Флаги выставляем соответственно числу 0-y*log2(x)

ja @Reverse      //Если 0>y*log2(x), то сосчитаем 2**|y*log2(x)|, а после инвертируем

call Core_Exp2

jmp @Exit

@Zero:

fxch st(1)

fstp st         //Освобождаем ненужный регистр

jmp @Exit

@Reverse:

fabs             //Берем абсолютную величин

call Core_Exp2

fld1             //Считаем обратное значение:

fdivrp           //1/(2**|y*log2(x)|)

@Exit:

end;
Дурь - это особая форма материи, которая не возникает ниоткуда и не исчезает никуда, а лишь переходит из одной головы в другую.
ОДИНОЧЕСТВО В СЕТИ вне форума Ответить с цитированием
Старый 27.09.2009, 13:46   #9
Lord_Rufus
Пользователь
 
Аватар для Lord_Rufus
 
Регистрация: 02.10.2008
Сообщений: 13
По умолчанию

NSvirus
это ряд? дык вроде она для квадратных корней?
Lord_Rufus вне форума Ответить с цитированием
Старый 27.09.2009, 13:47   #10
ОДИНОЧЕСТВО В СЕТИ
Любопытная Вредина
Участник клуба
 
Аватар для ОДИНОЧЕСТВО В СЕТИ
 
Регистрация: 19.06.2009
Сообщений: 1,285
По умолчанию

Цитата:
по формуле Бинома Ньютона..
он для целых степеней!
Дурь - это особая форма материи, которая не возникает ниоткуда и не исчезает никуда, а лишь переходит из одной головы в другую.
ОДИНОЧЕСТВО В СЕТИ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычисление квадратного корня вручную 6AZblJlb Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 8 16.11.2011 04:02
Метод квадратного корня RrR007 Помощь студентам 0 10.06.2009 21:01
Длинная арифметика (Нахождение квадратного корня) 08ekhiv1 Помощь студентам 6 06.03.2009 15:48
Вычислить приближенное значение корня asd48 Помощь студентам 9 03.12.2008 21:16