Quadratwurzel
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.
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.