Spacerat hat geschrieben:Natürlich sind meine Beispiele korrekt - Ausgaben von Testprogrammen kann ich wohl noch abschreiben, auch wenn du dies von mir nicht erwarten würdest.
Hallo Hartmut,
dann schreib sie bitte richtig ab. Das fängt schon damit an, dass man die Null als "0" schreibt und nicht als "o".
Und "unendlich" multipliziert mit "0" wird kaum wieder "unendlich" ergeben, wie das Gegenbeispiel (lim
x*n in IN n) * (lim
n in IN 1/n) unschwer zeigt.
Spacerat hat geschrieben:Über die Intention der IEEE 754 bist du allerdings gründlich im Irrtum. Es ging dabei nicht darum, irgendwelche Fehler abzufangen, sondern darum überhaupt mit Gleitkommazahlen rechnen zu können.
Kann man sich tatsächlich darüber streiten, vielleicht war historisch tatsächlich beides die Intention. In der englischen Wikipedia findest Du dazu das folgende:
The standard defines five exceptions, each of which returns a default value and has a corresponding status flag that (except in certain cases of underflow) is raised when the exception occurs. No other exception handling is required, but additional non-default alternatives are recommended (see below).
Allerdings macht es in den meisten Fällen wenig Sinn, mit diesen Ausnahmewerten weiterzurechnen, denn was hast Du davon, wenn Du "jede Zahl ist möglich" zu "jede Zahl ist möglich" addierst, also "NaN"+"NaN" machst. So etwas deutet auf einen Programmfehler hin und nicht auf eine physikalische oder technische Realität.
Spacerat hat geschrieben:DivisionByZeroExceptions gibt es auch heute noch und wenn nicht diese, dann landet man über eine Division durch 0 beim höchstmöglichen Wert des verwendeten Datentyps und im nächsten Schritt wenn man Glück hat in einer OverflowException.
Nicht jeder Compiler hat das in der Vergangenheit erkannt und wie Du völlig korrekt bemerkst ist es eine Glückssache, ob man eine Overflow-Meldung bekommt oder nicht.
Spacerat hat geschrieben:In der IEEE 754 hingegen wird nur an solchen Stellen eine Ausnahme geworfen, wenn man z.B. versucht, eine gerade bzw. eine gebrochene Wurzel aus negativen Zahlen zu ziehen
Nein und das wird in der IEEE 754 bei den "The five possible exceptions" auch anders beschrieben.
Spacerat hat geschrieben:, also wenn eine Rechnung von vorne herein definitiv kein (und das ist jetzt extrem wichtig!!!
) zählbares Ergebnis liefern kann.
Vorsicht: kein
eindeutig zählbares Ergebnis liefern kann. Das sind ja gerade die "NaN"-Situationen.
Spacerat hat geschrieben:Alles Andere wird geprüft, ob besagte spezielle Regeln anwendbar sind und zutreffen und erst wenn keine zutrifft, wird gerechnet - und dabei möglicherweise zum letzten mal festgestellt, ob das Ergebnis in den vorgegebenen Bereich passt oder nicht. Passt es nicht, wird eben +-oo zurückgegeben - und dieses unendlich interpretiere ich dort nicht hinein
Behauptet ja auch niemand, aber es ist einer der 5 zusätzlich-definierten Werte eines
endlichen Elementebereiches.
Spacerat hat geschrieben:, ebenso wenig die Mächtigkeit einer solchen Ausgabe, denn solange dort +-oo zurückgegeben wird, darfst du davon ausgehen, dass das Ergebnis auf einen beliebigen Zahlenstrahl passt und damit abzählbar unendlich ist.
Hartmut, hör bitte endlich auf mit dem Unsinn: ein Zahlenstrahl ist
immer überabzählbar unendlich. Das ist doch gerade der Grund, das man da unterscheiden muss. Ok, natürlich kann man das auch von der Logik herkommend über Teilmenegen-Relationen tun, aber historisch war es das Kontinuum des Zahlenstrahles, welches alle diese Probleme erst verursacht hat ! Aber eben: in der IEEE 754 sind Mächtigkeiten
kein Thema und man braucht diese dort auch nicht.
Spacerat hat geschrieben:Bei NaN aber ist genau dieses nicht mehr gegeben. Erst NaN beinhaltet jede nur vorstellbare Kardinalität. Egal was du mir über Mächtigkeiten berichten willst, es ist und bleibt so.
Nein, das ist leider falsch. Und zwar genau aus dem Grund, den ich Dir schon seit Wochen zu erklären versuche ! Eine NaN kann (muss nicht !!!) die Menge alle darstellbaren Zahlen vereinigt mit +oo und "-oo" sein. Aber "überabzählbar unendlich" ist beispielsweise eine Kardinalität und diese wird durch NaN eben gerade
nicht dargestellt ! Verzichte einfach auf Worte, die Du nicht verstehst. - Kardinalität ist ein so schwerer Begriff, dass sogar ich ihn vermeide. Und in diesem Zusammenhang findest Du auch noch zahlreiche bis heute unbewiesene/unwiderlegte Vermutungen der Mathematik !
Spacerat hat geschrieben:Das wusste man btw. schon lange bevor es die IEEE 754 oder gar FPUs gab. Z.B. gab es im Amiga ein ganzes Bibliotheken-Paket mathieeesing.... und mathieeedoub.... und sogar schon im guten alten C64-Rom oder jedem anderen beliebigen Basic-Kern Routinen mit denen mit Fließkommazahlen gerechnet werden konnte, die jedoch teilweise noch gar nicht mit unendlich umgehen konnten und deswegen grundsätzlich einen Fehler warfen.
Wenn eine Exception geworfen wird ist es ohnehin kein Problem - die Probleme treten dann auf, wenn
keine Exception geworfen wird, wo eine geworfen werden sollte. Wenn also beispielsweise aufgrund eines Programmierfehlers durch 0 dividiert wird, der Compiler diese aber zu einer Zahl rundet, so dass der Quotient nur absolut sehr gross wird und das Program dann weiterrechnet und ein falsches Ergebnis bekommt. Fatal bei AKW oder Space Shuttles. FORTRAN IV beispielsweise war gegen solche Situationen nicht gefeit und nun kannst Du einmal nachschauen, in welcher Sprache früher solche Programme geschrieben wurden.
Spacerat hat geschrieben:Was das mit den Mächtigkeiten bzw. Unendlichkeiten aufsich hat, weißt du ja selber, also kennst du sicher auch die Situation, in welcher man bei gut nachvollziehbaren +-oo oder NaNs selbst entscheiden möchte, wie es im Programm weiter gehen soll.
Nein, sowas ist
sehr schlechter Programmierstil, der in der Privatwirtschaft zum Glück auch kein Code-Review übersteht.
Spacerat hat geschrieben:Z.B. wäre es ratsam, ein AKW softwaretechnisch gepflegt herunterzufahren, wenn die Kerntemperatur nicht mehr erfasst werden kann. Ein Fehler, der zum Absturz führt, ist da nicht brauchbar, wohl aber ein Signal - also etwas, was eine Bereichsüberschreitung anzeigt.
Darum geht es doch gar nicht, es geht beispielsweise darum, dass man in hochbeanspruchten Teilen einen zu billigen Werkstoff einsetzt, weil ein Programm versehentlich eine zu hohe Lebensdauer berechnet hat. Also um "high-cycle-fatigues" und "low-cycle-fatigues" !
Spacerat hat geschrieben:Was die IEEE 754 an Ergebnissen liefert, sind keinesfalls denormalisierte Zahlen, ganz im Gegenteil. In Bits sind ausschließlich normalisierte Zahlen untergebracht, bei denen obendrein noch der Vorkommateil der Mantisse ausgespart wurde, weil er ohnehin immer 1 ist.
Da hast Du mich nur falsch verstanden. Zusätzlich dazu werden in der IEEE 754 aber auch denormalisierte Zahlen definiert, die dann eigene Rechenregeln aufweisen.
Spacerat hat geschrieben:Allerdings ist das, was du über die Werte schreibst - wenn auch nicht vollkommen korrekt, genau der Knackpunkt, von dem ich hier die ganze Zeit schreibe. +oo, -oo, qNaN, sNaN, -0 und (!!!) +0 sind definierte Ausnahmewerte, denen eine Sonderbehandlung zukommt
Wieso ist "+0" ein Ausnahmewert ? Ich meine: es gibt doch hoffentlich nicht drei verschiedene Nullen, also eine "normale" Null, die den normalen Rechenregeln gehorcht, sowie eine zusätzliche "+0" und eine weitere zusätzliche "-0", die Sonderbehandlungen erfahren ?
Spacerat hat geschrieben:- ändert aber gar nichts an der Tatsache, dass all dies, außer NaN ein Ergebnis liefert, welches auf beliebigen Skalen auffindbar wäre, wenn es in den Bereich gepasst hätte.
... und nicht zuvor aufgrund von beispielsweise Auslöschungseffekten verfälscht worden ist !
Spacerat hat geschrieben:Überabzählbar unendlich findet man aber nunmal auf keiner Skala
Abzählbar unendlich auch nicht, denn das ist
keine Zahl, sondern eine Mächtigkeit. Was Du meinst ist die "Ausnahmezahl" unendlich, von denen es noch eine zweite, nämlich die "minus unendlich" gibt, wegen der man auch noch die Ausnahmezahl "-0" benötigt.
Das alles hat mit Mächtigkeiten, mit "abzählbar unendlich" und mit "überabzählbar unendlich"
nichts zu tun !
Spacerat hat geschrieben:und NaN eventuell
Begreife endlich das Konzept der NaN, dann sprechen wir hierüber weiter.
Spacerat hat geschrieben: - was btw. nur wieder meine Aussage stützt, gegen die du hier so planlos vorpreschst. +0 gehört im Übrigen deswegen auch zu den definierten Werten, weil da ohne diese Sonderbehandlung 0^0 stehen würde - N-Flag 0, Mantisse 0 und Exponent 0.
Das ist ein technisches Detail, aber ja - danke: das ist ein sehr guter Hinweis, den ich als Theoretiker übersehen hätte.
Spacerat hat geschrieben:0^0 ergäbe natürlich NaN, sNaN um genau zu sein, denn die Situation ist ähnlich (nicht identisch) wie bei Wurzel aus Negativ.
Aber warum ? Ich will nicht wissen, wozu es ähnlich ist. Im Übrigen ist die Analogie zur Wurzel aus negative Zahlen falsch, denn der Grund, dass diese nicht darstellbar sind, ist
keineswegs die fehlende Eindeutigkeit, sondern
ausschliesslich der Umstand, dass diese nicht-reelle komplexe Zahlen sind. Passiert beispielsweise, wenn man bei der Berechnung der Standardabweichung nicht aufpasst, sondern für die Varianz die einfache Formel implementiert, die aber numerisch sehr instabil ist. Das kann dann also aufgrund vonAuslöschungsphänomenen zu negative Varianzen führen und stürzt dann bei der Ermittlung der Standardabweichung ab, weil man die Quadratwurzel einer negative Zahl zu ermitteln versucht.
Wie man aber in der Mathematik ganz einfach zeigen kann können Varianzen
niemals negativ werden.
Spacerat hat geschrieben:Und nun kann ich dir nur raten, dich nicht mehr über IEEE irgendwas zu faseln, denn das, was du bisher geraten hast, war äußerst schwach.
Deine Arroganz ist unerträglich und Deine Bereitsschaft, selbst offensichtliche Fehler einzuräumen, weitaus geringer als 0. Das ist alles. Wobei Du Dir mit dieser "Strategie" nur ins eigene Fleisch schneidest, denn mit dieser Einstellung kann man keine qualifizierte Naturwissenschaft betreiben. Da hilft es auch nicht, dass Du die Fehler konsequent bei anderen Leuten suchst.
Wer einen Anderen unterschätzt, ist erst entzückt und dann entsetzt.
Nach all Deinen Fehlern, die ich Dir allein in diesem Beitrag aufgelistet habe, zeugt dieser Abschnitt von Dir von Realitätsverlust.
Freundliche Grüsse, Ralf