Есть ли быстрый метод для получения модуля числа с плавающей запятой?
С целыми числами есть приемы для простых чисел Мерсенна, так что можно вычислить y = x MOD 2 ^ 31-1 без деления. целочисленный трюк
Можно ли применить подобные трюки для чисел с плавающей запятой?
Предпочтительно таким образом, чтобы его можно было преобразовать в векторные/SIMD-операции или перенести в код GPGPU. Это исключает использование целочисленных вычислений для данных с плавающей запятой.
Простые числа, которые меня интересуют, будут 2 ^ 7-1 и 2 ^ 31-1, хотя, если есть более эффективные для чисел с плавающей запятой, они будут приветствоваться.
Одним из предполагаемых применений этого алгоритма было бы вычисление текущей «контрольной суммы» входных чисел с плавающей запятой по мере их считывания в алгоритм. Чтобы не занимать слишком много вычислительных возможностей, я хотел бы сохранить этот легкий вес.
По-видимому, аналогичный метод используется для больших чисел, в частности 2^127 - 1. К сожалению, математика в статье мне недоступна, и я не смог понять, как преобразовать ее в меньшие простые числа.
Пример MOD 2^127 - 1 - HASH127 с плавающей запятой
2^7 - 1
и2^31 - 1
. - person Stephen Canon   schedule 16.03.2010