Will
Will

Reputation: 233

Square root function in Forth using x86 Assembly?

I don't know much about assembly, but I am pretty sure that there are square root instructions on the x86? I am trying to get a square root function to work well in froth and the one that I have found gets bogged down somehow when I run it many times.

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

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

Upvotes: 7

Views: 3949

Answers (2)

Artelius
Artelius

Reputation: 49089

There is a floating-point square root instruction (FSQRT). This is quite fast, even if you only need an integer square root.

Upvotes: 6

Robert Harvey
Robert Harvey

Reputation: 180808

Look here:

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

Everything you ever wanted to know about square roots, but were afraid to ask. Contains an implementation in x86 assembly language.

Upvotes: 8

Related Questions