| Autor |
Nachricht |
Eisflamme
Mitglied
Benutzerprofil
Anmeldungsdatum: 26.06.2009
Beiträge: 2875
|
Eisflamme Mitglied
17:46:13 26.07.2012 Titel: |
float-Vergleich mit sich selbst |
Zitieren |
Hallo,
wenn ich einen float mit sich selbst vergleiche, ergibt der Ausdruck dann true, wenn es sich um eine "normale" Zahl (also nicht NaN, +-inf, IND o.ä.) handelt?
Sind operator== und operator!= beide definiert für diese Operation? |
_________________ www.mihahome.de - Texte zu Englisch, Geographie sowie Präsentationen und Lesenswertes
|
|
 |
SeppJ
Moderator
Benutzerprofil
Anmeldungsdatum: 10.06.2008
Beiträge: 17956
|
SeppJ Moderator
17:49:06 26.07.2012 Titel: |
|
Zitieren |
|
 |
Eisflamme
Mitglied
Benutzerprofil
Anmeldungsdatum: 26.06.2009
Beiträge: 2875
|
Eisflamme Mitglied
17:51:10 26.07.2012 Titel: |
|
Zitieren |
Kann ich irgendwie prüfen, ob der float irgendwas Nicht-Zahliges (also nicht nur NaN sondern auch inf, IND usw.) ist? |
_________________ www.mihahome.de - Texte zu Englisch, Geographie sowie Präsentationen und Lesenswertes
|
|
 |
SeppJ
Moderator
Benutzerprofil
Anmeldungsdatum: 10.06.2008
Beiträge: 17956
|
SeppJ Moderator
17:55:52 26.07.2012 Titel: |
|
Zitieren |
|
 |
Eisflamme
Mitglied
Benutzerprofil
Anmeldungsdatum: 26.06.2009
Beiträge: 2875
|
Eisflamme Mitglied
18:02:05 26.07.2012 Titel: |
|
Zitieren |
Hab alles, stelle mich nur zu blöd an das zu finden. Habe mit numeric_limits rumgespielt, aber das hilft nicht. |
_________________ www.mihahome.de - Texte zu Englisch, Geographie sowie Präsentationen und Lesenswertes
|
|
 |
camper
Mitglied
Benutzerprofil
Anmeldungsdatum: 06.08.2004
Beiträge: 5794
|
camper Mitglied
18:03:24 26.07.2012 Titel: |
|
Zitieren |
| Eisflamme schrieb: | | Kann ich irgendwie prüfen, ob der float irgendwas Nicht-Zahliges (also nicht nur NaN sondern auch inf, IND usw.) ist? | aus <cmath> |
|
|
|
 |
Eisflamme
Mitglied
Benutzerprofil
Anmeldungsdatum: 26.06.2009
Beiträge: 2875
|
Eisflamme Mitglied
18:05:35 26.07.2012 Titel: |
|
Zitieren |
Dankesehr!
Sorry nochmal. Ich kriege gerade die einfachsten Dinge nicht gebacken (geschweige denn über Google gefunden). Ich gestatte euch Facepalms, Kopfschütteln und Augendrehen über mich. |
_________________ www.mihahome.de - Texte zu Englisch, Geographie sowie Präsentationen und Lesenswertes
Zuletzt bearbeitet von Eisflamme am 18:05:48 26.07.2012, insgesamt 1-mal bearbeitet |
|
 |
Bashar
Mitglied
Benutzerprofil
Anmeldungsdatum: 15.05.2001
Beiträge: 17749
|
Bashar Mitglied
18:16:28 26.07.2012 Titel: |
|
Zitieren |
| SeppJ schrieb: | | Aber Achtung: Ein solcher Vergleich könnte wegoptimiert werden |
Widerspricht das nicht der as-if-Regel? |
_________________ OSL♥
|
|
 |
SeppJ
Moderator
Benutzerprofil
Anmeldungsdatum: 10.06.2008
Beiträge: 17956
|
SeppJ Moderator
18:30:09 26.07.2012 Titel: |
|
Zitieren |
| Bashar schrieb: | | SeppJ schrieb: | | Aber Achtung: Ein solcher Vergleich könnte wegoptimiert werden |
Widerspricht das nicht der as-if-Regel? | Bei Fließkommaoperationen wird dies auf härteren Optimierungsstufen (GCC z.B. ffast-math, ffinite-math & Co, muss man aber alles händisch aktivieren) auch mal ignoriert. Dann funktioniert die volatile-Operation (hoffentlich, ich habe es nicht getestet) immer noch. Bei nicht so harten Optimierungen sollte (wieder nicht getestet, nur geschätzt, dass es da sowieso nicht viel zu optimieren gibt) es trotz volatile ungefähr gleich schnell sein (die Pipeline wird eventuell nicht perfekt ausgelastet, weil volatile strenger ist, was Umordnungen angeht).
Natürlich ist der ganze Punkt dieser Optimierungen, dass sie den Fließkommastandard brechen dürfen, insofern ist das volatile bei genauerem Nachdenken doch eher unnötig, da man diese Optimierungen sowieso nicht nutzen kann, wenn NaN vorkommen kann. |
_________________ Du brauchst Hilfe?, Buchempfehlungen für C++,
Wie man in Fragen den richtigen Code postet,
The Definitive C++ Book Guide and List
|
|
 |
camper
Mitglied
Benutzerprofil
Anmeldungsdatum: 06.08.2004
Beiträge: 5794
|
camper Mitglied
18:41:18 26.07.2012 Titel: |
|
Zitieren |
-ffast-math führt allerdings zu nicht konformen Programmen. Um ehrlich zu sein, verstehe ich sowieso nicht, wieso jemand diese Option benutzen würde. Entweder ist sie performanceirrelevant, weil kaum entsprechende Berechnungen durchgeführt werden, oder aber das resultierende Programm ist mit hoher Wahrscheinlichkeit defekt. |
|
|
|
 |