This page (revision-5) was last changed on 08-May-2024 02:57 by Roland B. Wassenberg 

This page was created on 08-May-2024 00:09 by Roland B. Wassenberg

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Page revision history

Version Date Modified Size Author Changes ... Change note
5 08-May-2024 02:57 7 KB Roland B. Wassenberg to previous
4 08-May-2024 01:18 7 KB Roland B. Wassenberg to previous | to last
3 08-May-2024 01:06 7 KB Roland B. Wassenberg to previous | to last
2 08-May-2024 01:00 7 KB Roland B. Wassenberg to previous | to last
1 08-May-2024 00:09 6 KB Roland B. Wassenberg to last

Page References

Incoming links Outgoing links
Logarithmen...nobody

Version management

Difference between version and

At line 3 changed one line
Der Logarithmus ist eine der wichtigsten elementaren Funktionen in der Mathematik, daher hat dessen Berechnung immer eine sehr hohe Priorität. Umso wichtiger ist es daher, diese Berechnung möglichst korrekt durchzuführen. Früher mussten dazu sogenannte Logarithmen-Tafeln herhalten, dann Rechenschieber und später sogenannte Rechenautomaten mit manueller Bedienung. Computer, die ganze Räume füllten, konnten das natürlich, waren jedoch für den normalen Bürger nicht erschwinglich. Mit dem Aufkommen der Taschenrechner Anfang der 1970er-Jahre eröffnete sich nunmehr eine elegante Möglichkeit solche Berechnungen durchführen zu können. Das digitale Rechner korrekt mit Nullen und Einsen rechnen können, sollte als vorausgesetzt betrachtet werden. Nur handelt es sich hier dann um ganze Zahlen, während Logarithmen meist rationale Zahlen sind, also einen Nachkommaanteil haben. Daher ist ein Algorithmus erforderlich, der hier schnell, aber auch präzise Abhilfe schafft.
Der Logarithmus ist eine der wichtigsten elementaren Funktionen in der Mathematik, daher hat dessen Berechnung immer eine sehr hohe Priorität. Umso wichtiger ist es daher, diese Berechnung möglichst korrekt durchzuführen. Früher mussten dazu sogenannte Logarithmen-Tafeln herhalten, dann Rechenschieber und später sogenannte Rechenautomaten mit manueller Bedienung. Computer, die ganze Räume füllten, konnten das natürlich, waren jedoch für den normalen Bürger nicht erschwinglich. Mit dem Aufkommen der Taschenrechner Anfang der 1970er-Jahre eröffnete sich nunmehr eine elegante Möglichkeit solche Berechnungen durchführen zu können. Das digitale Rechner korrekt mit Nullen und Einsen rechnen können, sollte als vorausgesetzt betrachtet werden. Nur handelt es sich hier dann um ganze Zahlen, während Logarithmen meist rationale Zahlen sind, also einen Nachkommaanteil haben. Daher ist ein Algorithmus erforderlich, der hier schnell, aber auch präzise Abhilfe schafft.\\
\\
In der Vergangenheit kam dabei meist der sogenannte [CORDIC-Algorithmus|https://de.wikipedia.org/wiki/CORDIC] zum Einsatz. Er zählt zu den sogenannten „Shift-and-add-Algorithmen“, die auf bitweiser Verschiebung und ganzzahliger Additionen in Addierwerken basieren.\\
\\
Erst im Jahre 1994 wurde der [BKM-Algorithmus|https://de.wikipedia.org/wiki/BKM-Algorithmus] vorgestellt. Hier erfolgt die Berechnung mittels eines Iterationsverfahrens mit einer Konvergenzrate von ungefähr einem Bit pro Durchlauf. Aufgrund dieses Umstandes wird der Algorithmus manchmal auch als Bitalgorithmus bezeichnet.\\
\\
Kern beider Algorithmen ist die Tatsache, dass sich alle höheren Funktionen in der Mathematik auf die vier Grundrechenarten: +, -, * und / zurückführen lassen. Genau das ist der Trick, den man nutzen kann, wenn ein Berechnungsfehler im ROM vorliegt, der nicht behoben werden kann. Auf diese Weise bekommt man genaue Ergebnisse ohne(!) das ROM tauschen zu müssen.\\
\\
Auf einen weiteren Trick hatte mich Stefan Dorndorf aufmerksam gemacht. Für den Computer ist die Ermittlung des dekadischen Logarithmus einfacher. Hinzu kommt noch die Periodizität, welche sich gut nutzen lässt und einer einfacheren Berechnung entgegenkommt. Daher wird im Folgenden nur der dekadische Logarithmus berechnet und alle anderen Logarithmen dann aus den ermittelten Werten davon. Schließlich kann man mittels einer Konstanten jeden beliebigen Logarithmus in einen anderen umwandeln:\\
\\
LOG(zur Basis 10)(x) = LOG(zur Basis e)(x) / LOG(zur Basis e)(10)\\
\\
mit:\\
\\
LOG(zur Basis e)(10)=2.30258509 als Konstante\\
\\
und\\
\\
LOG = Logarithmus (allgemein) im Beispiel oben bzw. LOG(zur Basis e) (LN auf den Taschenrechnern) als natürlicher Logarithmus.\\
\\
Diese Gleichung zeigt den Zusammenhang und die Umrechnung vom dekadischen Logarithmus zum natürlichen Logarithmus auf. CLOG zu LOG bei Atari BASIC bzw. LOG zu LN bei den Taschenrechnern.\\
\\
Das Atari BASIC ist 1979 von SMI hergestellt worden. 3 Jahre später gab es dazu von dann OSS eine Korrektur in:\\
\\
Atari Basic Reference Manual-Product Update-C061038 Rev. A-©1982 Atari, Inc.\\
\\
Hierin wird beschrieben, dass die ermittelten Werte von 0 bis 1 in CLOG bzw. LOG inakkurat seien. Nach 42 Jahren können wir aber sagen, dass dies aus Bescheidenheit erfolgte und heute eher als eine Korrektur von der Korrektur betrachtet werden kann.\\
Eine forensische Analyse ergab nämlich, dass ein Fehler frühestens ab der 7. Nachkommastelle anzutreffen ist! Daher sollte die Näherung für einfache Berechnungen den meisten Anwendern genügen. Vorsicht ist nach wie vor bei Berechnungsketten zu walten, da sich hier der „Fehler“ ggf. weiter auswirken kann.\\
\\
Der Leser kann die Werte auch selber überprüfen, vorausgesetzt er verwendet keinen Taschenrechner, der ebenfalls den Logarithmus nicht richtig berechnen kann, so wie das z. B. bei Texas Instruments über Jahrzehnte(!) der Fall war:\\
\\
[Logarithmus-Bug in Taschenrechnern|http://www.datamath.org/Story/LogarithmBug.htm] ; Darstellung der Näherungsfehler bei Taschenrechnern\\
\\
Hier ist der Atari deutlich flexibler. :-)\\
\\
Alternativ kann man in den XL- und XE-Rechnern auch das ganze Fließkommapaket austauschen, gegen eines, das fehlerfrei funktioniert:\\
\\
[Fließkommaberechnung für den Atari|https://atariwiki.org/wiki/Wiki.jsp?page=FAST%20FLOATING%20POINT%20source%20code%20for%20the%20ATARI] ; Schnelle und korrekte Fließkommaberechnung für den Atari\\
\\
Unser großer Dank geht hier an: Newell Industries & Charles W. Marslett für die Bereitstellung des Quelltextes und Konrad M. Kokoszkiewicz für die Korrektur.\\
\\
Peter Dell war so nett und erstellte fertige Lösungen auf der Fujiama für uns:\\
\\
[Fließkommapakete für den Atari|https://atariwiki.org/wiki/attach/Articles/Atari_OS_Rev._A_%26_B_%281979%29_Rev_2_%281983%29_%28Atari%29_%28NTSC_%26_PAL%29_%28400-800-XL-XE%29_with_FastFP.zip] ; Fließkommapakete für den Atari bereits in das OS integriert\\
\\
so dass die User nach nunmehr 45 Jahren korrekte Berechnungen mit dem Atari durchführen können, wahlweise mit oder ohne Austausch der ROMs.\\
\\
Ihr denkt, das war es jetzt? Weit gefehlt! Wir wären nicht der ABBUC, wenn wir da nicht noch einen drauf setzen könnten. Die WWK macht Werbung dafür, dass sie eine starke Gemeinschaft sei, der ABBUC hat das nicht nötig, er ist(!) eine starke Gemeinschaft.\\
\\
Der Algorithmus kann bzgl. der Präzision eingestellt werden. Hier habe ich 8 Stellen Genauigkeit eingerichtet, die in den meisten Fällen auch reichen. Wer nun mehr Ziffern verwenden möchte, sei auf die Arbeiten von Dieter Gretzschel (Old-Man-Tower) verwiesen. Bzgl. des dekadischen Logarithmus kann dazu folgendes Bild verwendet werden:
At line 5 removed 50 lines
In der Vergangenheit kam dabei meist der sogenannte CORDIC-Algorithmus:
https://de.wikipedia.org/wiki/CORDIC
zum Einsatz. Er zählt zu den sogenannten „Shift-and-add-Algorithmen“, die auf bitweiser Verschiebung und ganzzahliger Additionen in Addierwerken basieren.
Erst im Jahre 1994 wurde der BKM-Algorithmus:
https://de.wikipedia.org/wiki/BKM-Algorithmus
vorgestellt. Hier erfolgt die Berechnung mittels eines Iterationsverfahrens mit einer Konvergenzrate von ungefähr einem Bit pro Durchlauf. Aufgrund dieses Umstandes wird der Algorithmus manchmal auch als Bitalgorithmus bezeichnet.
Kern beider Algorithmen ist die Tatsache, dass sich alle höheren Funktionen in der Mathematik auf die vier Grundrechenarten: +, -, * und / zurückführen lassen. Genau das ist der Trick, den man nutzen kann, wenn ein Berechnungsfehler im ROM vorliegt, der nicht behoben werden kann. Man integriert einfach nachstehenden Quelltext in Atari BASIC, s. Anhang, in das gewünschte Programm und bekommt genaue Ergebnisse ohne(!) das ROM tauschen zu müssen.
Auf einen weiteren Trick hatte mich Stefan Dorndorf aufmerksam gemacht. Für den Computer ist die Ermittlung des dekadischen Logarithmus einfacher. Hinzu kommt noch die Periodizität, welche sich gut nutzen lässt und einer einfacheren Berechnung entgegenkommt. Daher wird im Folgenden nur der dekadische Logarithmus berechnet und alle anderen Logarithmen dann aus den ermittelten Werten davon. Schließlich kann man mittels einer Konstanten jeden beliebigen Logarithmus in einen anderen umwandeln:
LOG(zur Basis 10)(x) = LOG(zur Basis e)(x) / LOG(zur Basis e)(10) ; mit LOG(zur Basis e)(10)=2.30258509 als Konstante
mit LOG = Logarithmus (allgemein) im Beispiel oben und LOG(zur Basis e) (LN auf den Taschenrechnern) als natürlicher Logarithmus. Diese Gleichung zeigt den Zusammenhang und die Umrechnung vom dekadischen Logarithmus zum natürlichen Logarithmus auf. CLOG zu LOG bei Atari BASIC bzw. LOG zu LN bei den Taschenrechnern.
Das Atari BASIC ist 1979 von SMI hergestellt worden. 3 Jahre später gab es dazu von dann OSS eine Korrektur in:
Atari Basic Reference Manual-Product Update-C061038 Rev. A-©1982 Atari, Inc
Hierin wird beschrieben, dass die ermittelten Werte von 0 bis 1 in CLOG bzw. LOG inakkurat seien. Nach 42 Jahren können wir aber sagen, dass dies aus Bescheidenheit erfolgte und heute eher als eine Korrektur von der Korrektur betrachtet werden kann. Eine forensische Analyse ergab nämlich, dass ein Fehler frühestens ab der 7. Nachkommastelle anzutreffen ist! Daher sollte die Näherung für einfache Berechnungen den meisten Anwendern genügen. Vorsicht ist nach wie vor bei Berechnungsketten zu walten, da sich hier der „Fehler“ ggf. weiter auswirken kann.
Der Leser kann die Werte auch selber überprüfen, vorausgesetzt er verwendet keinen Taschenrechner, der ebenfalls den Logarithmus nicht richtig berechnen kann, so wie das z. B. bei Texas Instruments über Jahrzehnte(!) der Fall war:
http://www.datamath.org/Story/LogarithmBug.htm
Hier ist der Atari deutlich flexibler. :-)
Alternativ kann man in den XL- und XE-Rechnern auch das ganze Fließkommapaket austauschen, gegen eines, das fehlerfrei funktioniert:
https://tinyurl.com/5de42jpm
Unser großer Dank gilt hier an: Newell Industries & Charles W. Marslett für die Bereitstellung des Quelltextes und Konrad M. Kokoszkiewicz für die Korrektur.
Peter Dell war so nett und erstellte fertige Lösungen auf der Fujiama für uns:
https://tinyurl.com/bddmr6cb
so dass die User nach nunmehr 45 Jahren korrekte Berechnungen mit dem Atari durchführen können, wahlweise mit oder ohne Austausch der ROMs.
Ihr denkt, das war es jetzt? Weit gefehlt! Wir wären nicht der ABBUC, wenn wir da nicht noch einen drauf setzen könnten. Die WWK macht Werbung dafür, dass sie eine starke Gemeinschaft sei, der ABBUC hat das nicht nötig, er ist(!) eine starke Gemeinschaft.
Der Algorithmus im Anhang, kann bzgl. der Präzision eingestellt werden. Hier habe ich 8 Stellen Genauigkeit eingerichtet, die in den meisten Fällen auch reichen. Wer nun mehr Ziffern verwenden möchte, sei auf die Arbeiten von Dieter Gretzschel (Old-Man-Tower) verwiesen. Bzgl. des dekadischen Logarithmus kann dazu folgendes Bild verwendet werden: