Prüfen ob double == inf



  • CStoll schrieb:

    Für NaN:

    if(x!=x) cout<<"Not a Number";
    

    (wenn du NaN mit irgendwas vergleichst, kommt immer false raus)

    Ich mag mich irren, aber war es nicht so, dass der Standard nur sagt, dass == mit NaN false ergibt? Impliziert das, dass != true ergibt?



  • Sorry, mein Fehler - ich hab' zu intensiv optimiert:

    if(!(x==x)) cout<<"Not a Number";
    

    So müsste es jetzt stimmen (hoffe ich).



  • CStoll schrieb:

    Sorry, mein Fehler - ich hab' zu intensiv optimiert:

    if(!(x==x)) cout<<"Not a Number";
    

    So müsste es jetzt stimmen (hoffe ich).

    Nicht zwingend. Sofern du Signaling NaNs hast, kann die erste arithmethische Operation darauf eine Floating Point Exception loslassen. C99 hat eine isNAN-Funktion. C++(98) hat aber meines Wissens nach kein Äquivalent.



  • 7H3 N4C3R schrieb:

    Sofern du Signaling NaNs hast, kann die erste arithmethische Operation darauf eine Floating Point Exception loslassen.

    Ist ein Vergleich eine arithmetische Operation?



  • fabs(double1)-fabs(double2) == 0
    


  • Davor halt noch prüfen ob beide pos oder neg sind.



  • @Arithmetiker: Wer sagt dir, daß C++ so einen Aufwand für dne Vergleich betreibt?

    @N4C3R: Wenn alle Stricke reißen, bleibt immer noch Variante b von oben 😉 (binärer Vergleich mit den numeric_limits<>-Membern)



  • CStoll schrieb:

    @Arithmetiker: Wer sagt dir, daß C++ so einen Aufwand für dne Vergleich betreibt?

    @N4C3R: Wenn alle Stricke reißen, bleibt immer noch Variante b von oben 😉 (binärer Vergleich mit den numeric_limits<>-Membern)

    Wer sagt dir, dass C++ diesen Aufwand nicht betreibt?



  • Arithmetiker schrieb:

    CStoll schrieb:

    @Arithmetiker: Wer sagt dir, daß C++ so einen Aufwand für dne Vergleich betreibt?

    @N4C3R: Wenn alle Stricke reißen, bleibt immer noch Variante b von oben 😉 (binärer Vergleich mit den numeric_limits<>-Membern)

    Wer sagt dir, dass C++ diesen Aufwand nicht betreibt?

    A signaling NAN can be copied, assigned, and compared without causing an exception

    (aus dem Link, den GPC oben gepostet hat)



  • CStoll schrieb:

    A signaling NAN can be copied, assigned, and compared without causing an exception

    (aus dem Link, den GPC oben gepostet hat)

    Hm habe ich auch gerade zeitgleich gesehen. 🙂

    Zumindest die Alpha-Maschine hier sieht das aber nicht ganz so und triggert schon beim Vergleich eine FPE. Im Standard wird das mit dem Vergleichen soweit ich das gesehen habe nicht explizit erwähnt.


Anmelden zum Antworten