2012-03-24 7 views
0

Рассмотрев скомпилированный код sinf() на нашей реализации GCC, я вижу, что он вызывает встроенную функцию ___ieee754_rem_pio2f. Я попытался найти ключ к этой функции, но все, что я нашел, это сообщения, ссылающиеся на ошибку с функцией rem_pio2f (no __ieee754) без объяснений.Какова функция rem_pio2f(), используемая GCC?

Может ли кто-нибудь пролить свет на эту функцию?

(звучит как «остальная часть ПИ-над-2-поплавком или СТГ подобными - но зачем нужна функция для постоянная?)

EDIT: Благодаря @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 является стандартом для чисел с плавающей запятой, поэтому, вероятно, это функция, которая работает с этим форматом, префикс с 'iee754_' подчеркивает этот факт; если вы его нашли, вы нашли страницы, где ясно, что это не константа, как это http://lists.freebsd.org/pipermail/freebsd-i386/2005-February/002103.html – ShinTakezou

+0

Спасибо , @ShinTakezou. Да, я хорошо знаю, что такое IEEE754. И я видел эту страницу на похожих страницах, но, к сожалению, она больше похожа на отчет о различиях SVN, чем полный код функции. – ysap

ответ

3

sinf принимает поплавком и возвращает поплавок. поддержка арифметики с плавающей точкой была добавлена ​​в C99. прежние стандарты C did't имеют sinf, но только грех (который для двойной). по ieee_754 указывает что функция добавлена ​​для поддержки поддержки с плавающей запятой. Вот ссылка source code для этого файл, если заинтересованы.

+1

Спасибо, @Thiruvalluvar. Ответ заключается в встроенной документации функции: '/ * __ieee754_rem_pio2f (x, y) * * вернуть остаток x rem pi/2 в y [0] + y [1] * использовать __kernel_rem_pio2f() */ ' – ysap