||
<== : [en] : [E4] : [L4] : [Forth] : [mail] | [Glossar], [Referenz] | F.I.G.RU : F.I.G.UK : FORTH e.V. : tutorial |
|
"f4a" (jüngste Änderungen). fig-Forth-1.0 Variante,
[oben] :
liegen als Quotienten von un/echten Brüchen aus Paaren von 'doubles' (64-bit) vor, besonders oft
u.a. in internen Zwischenrechnungen benötigte Operationen der Genauigkeit halber auch in Paaren aus
128-Bit-Posten. Neben den Grundrechenarten und einigen üblichen Hilfsdefinitionen, z.B. {1/F}
für das Reziproke, sind Quadratwurzel, gebrochene Potenzen und Natürlicher Logarithmus
sowie die grundlegenden Winkelfunktionen in (möglichst) effizienten berechnenden Algorithmen ausgeführt.
Damit können die 'höheren' Rechenoperationen sämtlich relativ leicht zusammengesetzt werden -
Algorithmen u.a. zu den im F4 nicht gegebenen Hyperbelfunktionen sind in f4f.scr kurz angerissen rsp. finden sich
in ausgearbeiteter Form in der lib4th.
Die Ausführung von Fließkommazahlen in dieser Form zeichnet sich vor allem durch lückenlos
kontrollierbare Rechengenauigkeit aus, wie sie etwa für kaufmännische Anwendungen unabdingbar
ist. Die Genauigkeit der als Quotient zweier ganzer Zahlen notierten reellen Zahlen ist der Bruch-Schreibweise
beliebiger Ziffernsysteme (innerhalb vernünftiger Grenzen) überlegen, da dort ein großer Teil
Reeller Zahlen nicht darstellbar ist, in Dezimalschreibweise z.B. Drittel, Siebentel, etc, im IEEE-Format
(binaer) auch Zehntel und Hundertstel - wodurch jede in Währungseinheiten zählende Berechnung
unzuverlässig wird! Als Ganzzahlen-Quotient steht derartiges dagegen ohne Rest, d.h. mit absoluter
Genauigkeit da. Irrationale Zahlen (nicht-periodische unendliche Brüche wie etwa Wurzel 2) werden
soweit genau übernommen, wie ihr Wert z.B. dezimal mit jeweils bis zu 19 Ziffern in Zähler und
Nenner hingeschrieben werden kann.
Rundungsfehler pflegen sich, da sie ähnlich sowohl im Zähler als auch im Nenner
anfallen, eher auszugleichen, statt sich, wie bei anderen Darstellungsformen, stetig anzusammeln.
Viele Operationen werden enorm vereinfacht. Z.B. erhält man ohne Verlust an Rechengenauigkeit das Reziproke
durch Vertauschen der Zahlenposten von Zähler und Nenner. Division und Multiplikation verursachen identischen
Aufwand, geringer als für Subtraktion oder Addition; die Quadratwurzel ist reine Ganzzahlenoperation je an
skaliertem Zähler und Nenner. Rechnen und Ausgabe in anderen Ziffernsystemen ist aufgrund der
Darstellung als Quotient Ganzer Zahlen völlig problemlos, d.h. mit den üblichen Forth-Worten handhabbar
und ohne jeden zusätzlichen Aufwand nur vom Wert der {base} abhängig.
U.a. die kleine nachrichtentechnische Formelsammlung f4o.scr zur (zunächst nur)
Berechnung von Detektorempfängern basiert auf den in f4f ausgeführten 'Reellen Zahlen'. Die der Umwandlung
geschriebener Zahlen in ganzzahlige Brüche zugrundeliegende Kettenbruchzerlegung hilft für sich allein
schon bei der Bildung ganzzahliger Verhältniszahlen, wie sie etwa zur Darstellung von Räderübersetzungen
(Kettenräder, Zahnräder, Getriebe, Riemenantrieb &c - s.u.) benötigt werden; erste
Ergebnisse liegen bereits unmittelbar nach Hinschreiben vor! Die Darstellung von Vergeichsergebnissen wird
besonders leicht: Man schreibt das Verhältnis { a : b } genau so hin und erhält mit
{f.} direkt das Ergebnis:
: min->sec 60 u* ; ( n1 -- d2 )
: KBytes 1K udm* drop ; ( d1 -- d2 )
: KB/sec 0 swap min->sec KBytes ; ( n1 n2 -- d,zaehler d,nenner )
: .KB/sec KB/sec f. ; ( n1 n2 -- )
damit schreibt
{ 33240033 77 .KB/sec } das Ergebnis { 7,026183923498 } hin.
: HH->Inch split 04 * swap 10 * + 2,54 * ;
[oben] :