Função da raiz quadrada em Forth usando a montagem x86?
-
21-09-2019 - |
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 ;
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