Size: a a a

Compiler Development

2020 February 09

E

EgorBo in Compiler Development
ожидается что оба вернут одинаковый каноничный
источник

M

MaxGraey in Compiler Development
Вообще то NaN это целый диапазон, а еще у него может быть знак, а еще бит в позиции 1 << 53 (для double) означает сигнальный это sNaN или qNaN
источник

E

EgorBo in Compiler Development
так я про это же)
источник

M

MaxGraey in Compiler Development
Обычно в тестах ожидают NaN (любой) + могут еще чекнуть статусный регистр FPU (overflow, underflow, inexact и т д)
источник

E

EgorBo in Compiler Development
у нас тут перенесли все исходники в монорепу новую и я потиху переношу свои микрооптимизации старые, которые не замержили в старых репах
источник

E

EgorBo in Compiler Development
и вот ща переносил Math.Pow(x, 2)
источник

M

MaxGraey in Compiler Development
EgorBo
и вот ща переносил Math.Pow(x, 2)
Ну тот же LLVM переписывает это на x * x не взирая на NaN
источник

E

EgorBo in Compiler Development
ну да, я обычно так и отмазываюсь)
источник

FO

FORTRAN ONE LOVE in Compiler Development
MaxGraey
Ну тот же LLVM переписывает это на x * x не взирая на NaN
А x ** 2E+00?
источник

E

EgorBo in Compiler Development
https://github.com/dotnet/runtime/pull/31978 вот пр в новой репе мой :)
источник

FO

FORTRAN ONE LOVE in Compiler Development
MaxGraey
Ну тот же LLVM переписывает это на x * x не взирая на NaN
А 2.718281828459045 ** ( expr ) переводит в exp( expr )?
источник

M

MaxGraey in Compiler Development
источник

M

MaxGraey in Compiler Development
FORTRAN ONE LOVE
А 2.718281828459045 ** ( expr ) переводит в exp( expr )?
да
источник

FO

FORTRAN ONE LOVE in Compiler Development
MaxGraey
да
😳
источник

FO

FORTRAN ONE LOVE in Compiler Development
А как? 😳
источник

FO

FORTRAN ONE LOVE in Compiler Development
И какой там трешхолд на "правильную" экспоненту?
источник

M

MaxGraey in Compiler Development
у LLVM есть спечиальный pass для этого, который переписывает вызовы стандартной библиотеки
источник

E

EgorBo in Compiler Development
не факт кстати
источник

E

EgorBo in Compiler Development
вернее Макс прав, а вот то что оно распознает самописанную константу с каким-то отклонением - не факт)
источник

M

MaxGraey in Compiler Development
он там много чего умеет, например log(sqrt(x)) —> 0.5 * log(x)
источник