Quadratwurzel

Montag, 04. Dezember 2006 @ 20:03 CET

Beitrag von: AndiElgeti

Im Heft zu Volksforth ist eine Funktion sqrt erwähnt.
Zum Ziehen einer Quadratwurzel kenne ich diese Formel:

neuer Schätzwert= Zahl/alter Schätzwert + alterSchltzwert /2

In C beispielsweise benötigt man also 3 Variablen( alterSchätzwert, neuer Schätzwert und Zahl) .

In Forth benötigt man einiges an Stackarithmetik, so daß mein Wort so aussieht:

: sqrt dup begin dup rot dup rot / rot dup rot + 2 / dup rot = until nip ;

und so arbeitet:

: sqrt (n -- sqrt)
dup | Schätzwert | Zahl
begin
dup |Schätzwert| Schätzwert | Zahl
rot | Zahl | Schätzwert | Schätzwert
dup | Zahl | Zahl | Schätzwert | Schätzwert
rot | Schätzwert | Zahl | Zahl | Schätzwert | Schätzwert
/ | Quotient| Zahl | Schätzwert
rot | Schätzwert | Quotient | Zahl
dup | Schätzwert | Schätzwert | Quotient | Zahl
rot | Quotient | Schätzwert | Schätzwert | Zahl
+ | summe | schätzwert | Zahl
2
/
dup |neuer Schätzwert | neuer Schätzwert | schätzwert | Zahl
rot | schätzwert | neuer Schätzwert| neuer Schätzwert | Zahl
=
until | flag | neuer Schätzwert | Zahl
nip ; | Ergebnis

Die senkrechten -|- Striche stellen das Stack-Diagramm dar, ein bei derForth-Programmierung unverzichtbares Hilfsmittel.

Kommentare (1)


Forth-Gesellschaft e.V.
/article.php/20061123200326450