V>Судя по всему, это все из за индус-стайла (копипаста и в прод). Замени long на что нибудь соразмерное float-y и все станет нормально.
Точно:
https://godbolt.org/z/M5bnnv1s4
Правда, в продакшин я бы такие хаки пихать все равно не стал.
Токое можно использовать только когда диапазон величин гарантированно укладывается в допустимый, и не страшна погрешность.
Собственно, пихнул я эту функцию на godbolt из любопытства -- будет ли компилятор входной float просто интерпретировать как целочисленный в регистре или полезет через память. и тут вдруг clang 14 выдал мне один ret.