2013-10-07 6 views
10

Der IEEE-754-Standard definiert die Quadratwurzel des negativen Null als negative Null. Diese Auswahl ist leicht genug zu rationalisieren, aber andere Möglichkeiten, wie zum Beispiel sqrt(-0.0) als NaN zu definieren, können ebenfalls rationalisiert werden und sind einfacher in Hardware zu implementieren. Wenn die Befürchtung bestand, dass Programmierer if (x >= 0.0) then sqrt(x) else 0.0 schreiben und von diesem Ausdruck zu NaNx-0.0 gebissen werden, dann könnte sqrt(-0.0) als +0.0 definiert worden sein (tatsächlich wären für diesen bestimmten Ausdruck die Ergebnisse noch konsistenter).Welcher numerische Algorithmus wird vereinfacht, indem sqrt (-0.0) als -0.0 definiert wird?

Gibt es insbesondere einen numerischen Algorithmus, bei dem sqrt(-0.0) definiert als -0.0 die Logik des Algorithmus selbst vereinfacht?

+0

Der [Wikipedia Artikel] (http://en.wikipedia.org/wiki/Negative_zero) ist anständig. Sie sollten das wahrscheinlich bei math.se fragen –

Antwort

0

Das einzige mathematisch vernünftige Ergebnis ist 0. Es ist eine vernünftige Frage, ob es +0 oder -0 sein sollte. Für die meisten Berechnungen macht es überhaupt keinen Unterschied, aber es gibt einige spezifische komplexe Ausdrücke, für die das Ergebnis unter der -0-Konvention mehr Sinn macht. Die genauen Details sind außerhalb des Umfangs dieser Website, aber das ist das Wesentliche davon.

Ich kann etwas mehr erklären, wenn ich nicht im Urlaub bin, wenn mich jemand anderes nicht dazu schlägt.

+3

Das ist wirklich eine Nicht-Antwort. Was sind Ausdrücke, wo die -0 Konvention mehr Sinn macht? – pburka

+3

@pburka Beispiele sind in dem Artikel "Elementare Funktionen oder viel Lärm um nichts ist Zeichen Bit", der maßgebliche Verweis, auf den Stephen vor dieser Frage hingewiesen hat, war eine StackOverflow-Frage: http://people.freebsd.org/~das/kahan86branch. pdf. Wie er sagt, liegen die genauen Details nicht im Bereich der "Programmierung". Der Programmierer sollte, zumindest im Fall von 'sqrt (-0.0)', "anstatt an +0 und -0 als verschiedene numerische Werte zu denken, sein Vorzeichenbit als eine Hilfsvariable betrachten, die ein Bit Information (oder Fehlinformation) ", und vertraue dem Mathematiker, dass es Sinn macht –

+2

@PascalCuoq: Seltsamerweise ist Kahans Artikel über den Zeichensatz derjenige, der mich davon überzeugt hat, dass' sqrt (-0.0) '' 0.0' 'aus Konsistenzgründen sinnvoller wäre die Art, wie Kahan die komplexe Quadratwurzel definiert. Wenn ich es richtig lese, hat das Ergebnis eines CSQRT-Aufrufs (an einer endlichen Eingabe) immer einen reellen Teil, dessen Vorzeichenbit nicht gesetzt ist. (Und ich glaube, das ist das Verhalten, das auch C99 Annex G empfiehlt.) IOW, CSQRT bildet immer Quadranten 1 und 2 auf Quadrant 1 und Quadranten 3 und 4 auf Quadrant 4 ab. (Mit dem Vorzeichen der Null zur Bestimmung der Quadrantenzugehörigkeit in der offensichtlicher Weg.) –

Verwandte Themen