В качестве личного проекта я работаю над реализацией числового типа с произвольной точностью для моего любимого проекта.
Я уже знаю обо всех популярных, протестированных и надежных библиотеках, которые это делают. Я хочу работать над решением в рамках образовательного проекта по самосовершенствованию.
Я исследую область и пытаюсь выяснить, есть ли способ приблизительно предсказать, вызовет ли операция переполнение, до того, как я фактически выполню вычисления. Меня тоже не особо беспокоят ложные срабатывания.
Я хочу иметь возможность использовать наименьшее пространство, подходящее для вычислений. Если расчет останется в пределах его родных границ, я оставлю его там.
Например: Умножение двух 64-битных целых чисел, если каждое из них достаточно велико, вызовет переполнение.
Я хочу обнаружить это и преобразовать числа в мой числовой тип с повышением частоты, только если результат может превышать разрешение 64 бита. В этом эксперименте я буду работать с подписанными числами.
Каков наиболее разумный и эффективный способ обнаружения переполнения / потери значимости?