In einem CUDA-Programm, wechselte ich vor kurzem von Tests für inifinityTesting für die Unendlichkeit in CUDA
return x==INFINITY || x==-INFINITY;
mit dem INFINITY
aus math.h ist, zu
return !isfinite(x);
und war ziemlich überrascht zu bekommen verschiedene Ergebnisse. gnu.org schlägt vor, dass sie sich tatsächlich ähnlich verhalten sollten. Fehle ich etwas? Ist es nicht erlaubt INFINITY
in einem CUDA Kernel zu verwenden?
Edit: ich isinf
gerade entdeckt, und bemerkte, dass
return isinf(x);
gibt das gleiche Ergebnis wie die INFINITY Prüfung mit Kontrolle. Warum ist isfinite(x)==!isinf(x)
nicht?
Für welche Werte unterschieden sich die Ergebnisse? Was waren die Ergebnisse? Was waren die erwarteten Ergebnisse? –
Ich bin mir noch nicht sicher, aber es scheint, dass isfinite strenger ist als der INFINITY-Test. – hannes
@stephen canon: gewährt, aber die Cg-Dokumente erwähnen nicht das INFINITY-Makro von math.h, der Unterschied, nach dem ich frage. Anscheinend funktioniert das INFINITY-Makro wie isinf (siehe meine Bearbeitung), also hat es einige Relevanz. – hannes