У меня есть очень специфический алгоритм, который требует выполнения множества вычислений (a * b)/c в Java, где: [list] [*][code]a[/code] и b имеют длину 64 бита. [*][code]a*b[/code] может переполниться до 128 бит (не всегда, но, по крайней мере, достаточно часто) [*][code]c[/code] имеет длину 64 бита. [*]Результат (a * b)/c должен умещаться в 64-битном формате. [*]Нам нужно определить, не происходит ли переполнение, но результат в этом случае не имеет значения. [/list] Существует ли для этого эффективный высокопроизводительный алгоритм своего рода объединенное умножение и деление, такое что: [list] [*]Нет выделения памяти (например, построение BigInteger не разрешено). [*]Он использует только простые/быстрые операции процессора [*]Выдает точные целочисленные результаты [*]Он работает в O(1) [*]Он работает в O(1) пробел (без рекурсии и т. д.) [/list]