Недавно был раунд, на котором многие участники ловили проблемы из-за проблем с отсутствием 80-битной вещественной арифметики в Java. Меня интересует вопрос (ведь исследования наверняка проводились), как же правильно складывать положительные вещественные числа?
Для желающих проникнуться темой я написал несколько реализаций сложения и проверил их на нескольких известных примерах. Реализации следующие: сложение в порядке возрастания, сложение в порядке убывания (всегда самое плохое :) ), сложение случайной перестановкой с последующей рекурсией через сумму левой и правой половины и сложение по принципу построения кода Хаффмана (последнее в действительности очень хорошо, но медленно).
http://ideone.com/OZIvET сложение в 32-битных числах для ряда
http://ideone.com/3SG8qm сложение в 64-битных числах для ряда
http://ideone.com/cWAvck сложение в 64-битных числах с разбросом 10
http://ideone.com/TB0loz сложение в 64-битных числах с разбросом 10000