2012-03-24 4 views
0

Untersucht man den kompilierten Code der sinf() auf unserer GCC-Implementierung, sehe ich, dass es eine eingebaute Funktion ___ieee754_rem_pio2f aufruft. Ich habe versucht, nach einem Hinweis auf diese Funktion zu suchen, aber alles, was ich gefunden habe, waren Beiträge, die sich auf einen Fehler mit der rem_pio2f (keine __ieee754) Funktion ohne Erklärung beziehen.Was ist die von GCC verwendete Funktion rem_pio2f()?

Kann jemand diese Funktion beleuchten?

(klingt wie „Rest von PI-over-2-float oder etw ähnlich - aber warum eine Funktion für eine konstante brauchen?)

EDIT: Vielen Dank für die Bereitstellung des Quellcodes @Thiruvalluvar:

/* __ieee754_rem_pio2f(x,y)
*
* return the remainder of x rem pi/2 in y[0]+y[1]
* use __kernel_rem_pio2f()
*/

+0

ieee 754 ist der Standard für Fließkommazahlen, daher ist es wahrscheinlich eine Funktion, die mit diesem Format arbeitet, wobei "iee754_" vorangestellt wird; wenn Sie es gegoogelt haben, haben Sie Seiten gefunden, wo es klar ist, dass es keine Konstante ist, wie diese http://lists.freebsd.org/pipermail/freebsd-i386/2005-February/002103.html – ShinTakezou

+0

Danke , @ShinTakezou. Ja, mir ist klar, was IEEE754 ist. Und ich habe diese Seite ähnlich wie andere Seiten gesehen, aber leider sieht es eher wie ein SVN-Diff-Bericht aus als der vollständige Funktionscode. – ysap

Antwort

3

sinf einen Schwimmer nimmt und einen Schwimmer. Die Unterstützung für arithmetische Gleitkomma in C99 wurde hinzugefügt. Die früheren C-Normen haben did't sinf aber nur Sünde (die doppelt so hoch ist). Die ieee_754 zeigt dass die Funktion hinzugefügt wird, um Gleitkommaunterstützung zu unterstützen.Hier ist ein source code Link für das Datei, wenn Sie interessiert sind.

+1

Danke, @Thiruvalluvar. Die Antwort ist in der Inline-Dokumentation der Funktion - '/ * __ieee754_rem_pio2f (x, y) * * Rückkehr der Rest von x rem pi/2 in y [0] + y [1] * verwenden __kernel_rem_pio2f() */ ' – ysap

Verwandte Themen