Умножьте список с плавающей точкой, чтобы сохранить максимальную точность на современном процессоре - PullRequest
0 голосов
/ 14 октября 2018

У меня есть список многих чисел с плавающей точкой IEEE одинарной точности.Как можно пройти по списку и умножить все числа, чтобы обеспечить максимальную точность, а не переполнение / переполнение?Мы предполагаем, что не должно быть переполнений / переполнений с произвольным умножением точности с последующим усечением до числа с плавающей точкой.

Можно ли посмотреть список чисел с плавающей точкой и выяснить оптимальный порядок без фактического умножения чисел, или мы должны начать умножение, и только затем попытаться найти следующее число, на которое мы должны умножить, чтобы сохранить максимальную точность, в некотором роде алгоритма обратной связи (поиска следующего шага)?Можем ли мы ограничиться сортировкой, основанной на прохождении списка и просто добавлении показателей?

Для i равномерно распределенных чисел с плавающей запятой шириной m битов для мантиссы и n для показателя степени с процессором, в котором хранится умножениеприводит к регистру с r-битной мантиссой и показателем s-бита, а затем усекает обратно до m + n при чтении, предполагая, что умножение этих чисел с произвольной точностью и усечение до исходного формата бита m + n не приведут к переполнению / потере, Каковы шансы, что умножение на регистр конечных битов r + s не приведет к переполнению ?В случае отсутствия переполнения, какой точности я могу ожидать от этой операции в зависимости от i, n, m, r и s?

Отличный частичный ответ будет простоответьте на это для чисел с плавающей запятой, двойных чисел и различных общих размеров регистров, для маленьких, средних, больших и очень больших я.

...