Ошибки действительно перечислены здесь , но ИМХО предположение, что «-» означает «правильно округлено» (т. Е. 1/2 ulp ) почти наверняка опровергнуто утверждением вначало страницы
[T] Он Библиотека GNU C не предназначена для правильно округленных результатов для функций в математической библиотеке ... Вместо этого цели для точности функций без полностью определенных результатов являютсяследующее;некоторые функции имеют ошибки, означающие, что они не соответствуют этим целям во всех случаях.В будущем библиотека GNU C может предоставлять некоторые другие функции правильного округления под такими именами, как crsin, предложенный для расширения до ISO C.
После небольшого исследования исходного кода я нашел то, что кажетсяbe результаты теста ulp (для x86-64).Похоже, что для режима округления по умолчанию (округление до ближайшего, связи идут на четное) они явно проверяют double
только тогда, когда ulp из long double
(80-битный IEEE) хуже, чем float
.Предполагается, что неявное предположение состоит в том, что double
не может быть хуже, чем long double
.Для режимов направленного округления они, кажется, всегда проверяют и float
, и double
явно.
Однако есть некоторая странность.
- Там нет результатов теста для
exp
. - Для
cos
и tan
они тестируют только реальные / сложные long double
.