Функция квадратного корня в Forth используя сборку x86? - PullRequest
6 голосов
/ 16 января 2010

Я не очень разбираюсь в сборке, но я почти уверен, что на x86 есть инструкции с квадратным корнем? Я пытаюсь заставить функцию квадратного корня хорошо работать в пену, и та, которую я нашел, как-то застревает, когда я запускаю ее много раз.

: sqrt-closer ( square guess -- square guess adjustment)
2dup / over - 2 /
;

: sqrt ( square -- root )
1 begin
sqrt-closer dup
while + repeat
drop nip ;

Ответы [ 2 ]

6 голосов
/ 16 января 2010

Смотрите здесь:

http://www.azillionmonkeys.com/qed/sqroot.html

Все, что вы когда-либо хотели знать о квадратных корнях, но боялись спросить.Содержит реализацию на ассемблере x86.

4 голосов
/ 16 января 2010

Существует инструкция с квадратным корнем с плавающей точкой ( FSQRT ). Это довольно быстро, даже если вам нужен только целочисленный квадратный корень.

...