Pergunta

Não sei muito sobre montagem, mas tenho certeza de que existem instruções quadradas da raiz no x86? Estou tentando fazer com que uma função raiz quadrada funcione bem em espuma e a que eu encontrei é atolada de alguma forma quando a corro muitas vezes.

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

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

Solução

Há uma instrução raiz quadrada de ponto flutuante (Fsqrt). Isso é bastante rápido, mesmo se você precisar apenas de uma raiz quadrada inteira.

Outras dicas

Olhe aqui:

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

Tudo o que você sempre quis saber sobre raízes quadradas, mas tinha medo de perguntar. Contém uma implementação no idioma de montagem x86.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top