vak: (Default)
Serge Vakulenko ([personal profile] vak) wrote2024-12-11 07:02 pm

Глюк в BSD-шной библиотеке

Обнаружил ошибку в математической библиотеке под Chimera Linux на процессоре arm64.
  • log10l(1e444L) выдаёт inf, а должно быть 444
  • log10l(1e555L) выдаёт inf, а должно быть 555
  • log10l(1e-666L) выдаёт -inf, а должно быть -666
  • log10l(1e-777L) выдаёт -inf, а должно быть -777
  • log10l(-1e-999L) выдаёт -inf, а должно быть nan
На интеловском процессоре под той же Chimera Linux работает правильно.
archaicos: Шарж (Default)

[personal profile] archaicos 2024-12-12 03:17 am (UTC)(link)
А на 10 и 0.1 работает?

А, это ещё и long double... Может быть и ABI проблема.
Edited 2024-12-12 03:18 (UTC)
archaicos: Шарж (Default)

[personal profile] archaicos 2024-12-12 03:54 am (UTC)(link)
А прочие функции с long double? Типа fabsl(), hypotl(), sqrtl(), truncl(), fmodl()?
ircicq: (Default)

[personal profile] ircicq 2024-12-12 05:20 am (UTC)(link)
Это вроде особенность "Apple Silion":
The long double type is a double precision
https://developer.apple.com/documentation/xcode/writing-arm64-code-for-apple-platforms

С этими ARM каждый как хочет так и коверкает архитектуру
Edited 2024-12-12 05:22 (UTC)

[personal profile] chabapok 2024-12-12 09:11 am (UTC)(link)
у arm64 sizeof(long double) что выдает? 8, 10 или 16?

[personal profile] chabapok 2024-12-12 09:32 am (UTC)(link)
глюк же в макоси? или под линуксом на arm64 этот баг тоже имеет место?

Я не спец по ieee754, но помоему 64 бита это ничто для такого числа.

[personal profile] chabapok 2024-12-12 10:09 am (UTC)(link)
может старая и/или битая/неверно_собранная libm

ubuntu18.04 - нормально считает.
juan_gandhi: (Default)

[personal profile] juan_gandhi 2024-12-12 01:17 pm (UTC)(link)
Оппа, вот это да.