Вниз
Скачать: CL | DM;

Более быстрая формулы вычисления квадратного корня   Найти похожие ветки 

← →
KAA ©   (2003-04-16 18:58) [0]

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


← →
alxx ©   (2003-04-16 19:10) [1]

Табличку сделай. Или рядами Тейлора.


← →
KAA ©   (2003-04-16 19:11) [2]

А нет ли у кого готовой и отлаженной функции?


← →
Serginio   (2003-04-16 19:41) [3]

Смотри сходящиеся ряды. Все нелинейные функции так вычисляются.


← →
neuro ©   (2003-04-16 20:09) [4]

Учебник по "Численным Методам" спасет отца русской демократии.


← →
KAA ©   (2003-04-16 20:11) [5]

Учебник по численным методам еще где-то найти надо, у меня его нет. Вот если в инете это где-нибудь НОРМАЛЬНО описывается?


← →
Marser ©   (2003-04-17 13:19) [6]

Биномиальный ряд.Ищи в справочниках по матану.Реализется элементарно


← →
Radionov Alexey ©   (2003-04-17 13:41) [7]

fsqrt сопроцессора неужто такая медленная?


← →
KAA ©   (2003-04-17 14:37) [8]

А что за функция fsqrt? Где она? Как вызвать?

Вообще первоначальный вопрос можно немного изменить, нужна более быстрая функция вычисления растояния между двумя точками, чем n=sqrt(sqr(x1-x2)+sqr(y1-y2)) ?


← →
Radionov Alexey ©   (2003-04-17 14:58) [9]

>KAA © (17.04.03 14:37)
В D6 есть расстояние (шустрое):

function Hypot(const X, Y: Extended): Extended;
{ formula: Sqrt(X*X + Y*Y)
implemented as: |Y|*Sqrt(1+Sqr(X/Y)), |X| < |Y| for greater precision
var
Temp: Extended;
begin
X := Abs(X);
Y := Abs(Y);
if X > Y then
begin
Temp := X;
X := Y;
Y := Temp;
end;
if X = 0 then
Result := Y
else // Y > X, X <> 0, so Y > 0
Result := Y * Sqrt(1 + Sqr(X/Y));
end;
}
asm
FLD Y
FABS
FLD X
FABS
FCOM
FNSTSW AX
TEST AH,$45
JNZ @@1 // if ST > ST(1) then swap
FXCH ST(1) // put larger number in ST(1)
@@1: FLDZ
FCOMP
FNSTSW AX
TEST AH,$40 // if ST = 0, return ST(1)
JZ @@2
FSTP ST // eat ST(0)
JMP @@3
@@2: FDIV ST,ST(1) // ST := ST / ST(1)
FMUL ST,ST // ST := ST * ST
FLD1
FADD // ST := ST + 1
FSQRT // ST := Sqrt(ST)
FMUL // ST(1) := ST * ST(1); Pop ST
@@3: FWAIT
end;



fsqrt - команда сопроцессора, которую компилятор вставляет при обработке вызова sqrt


← →
KAA ©   (2003-04-17 15:32) [10]

А чем этот способ быстрее, все равно есть вычисление квадратного корня.
И еще, требуется растояние не на плоскости, а в объеме, т.е. с тремя координатами.


← →
Radionov Alexey ©   (2003-04-17 15:51) [11]

Тогда таблица с интерполяцией. Но имхо это будет вряд ли быстрее, чем fsqrt



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.008 c
7-12953
BPK
2003-02-17 23:00
2003.05.05
Как узнать состояние лотка CD-ROM?


1-12818
AAC
2003-04-22 14:18
2003.05.05
Как получить имя файла с перетаскиванием на форму


14-12875
wnew
2003-04-16 13:35
2003.05.05
Translation Manager


1-12763
Carmen
2003-04-22 08:02
2003.05.05
Как полностью изменить внешний вид DBLookupComboBox


3-12631
Avreliy
2003-04-15 21:02
2003.05.05
Отмена Post!




   Наверх