2010-01-16 6 views
6

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

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

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

's" froth "obfuscated-forth count str = .' –

ответ

4

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

6

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

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

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