Это не ошибка. Эрланг имеет произвольные целые числа точности. (На практике это ограничено доступной памятью на машине, конечно ...)
Эти целые числа реализованы с использованием так называемых "fixnum" и "bignum". Фиксированные числа - это (целые) целые числа, соответствующие 28 битам в 32-битной архитектуре или 60 битам в 64-битной архитектуре. Дополнительные биты используются для маркировки типов (помните, что Erlang динамически строго типизирован и, следовательно, нуждается в тегах типа для своих значений). Виртуальная машина Erlang затем переключается на bignum выше этого размера. Это гораздо менее эффективно реализовано.
Добавьте компиляцию HiPE поверх того, чтобы оставаться в пределах диапазона фиксированных значений, и вы должны иметь «скорость, близкую к C» для арифметических частей программы.