Новый инструмент из Вашингтонского университета возьмет ваши выражения с плавающей запятой и преобразует их во что-то, что выполняет те же вычисления, но более точно. Об этом стоит знать.
Арифметика с плавающей запятой лежит в основе многих вычислений, особенно в науке и технике. В большинстве случаев плавающая точка делает хорошую работу, но из-за того, как она работает, она обычно влечет за собой некоторые неточности из-за ошибок округления.
Например, если вы попытаетесь добавить очень маленькое число к очень большому числу, то возможно, что небольшое число будет округлено до нуля, и ваш расчет станет+0, а не+что-то маленькое. Такого рода проблемы могут даже привести к сбою алгоритмов. Например, если вы добавляете небольшие значения к большому значению в цикле, который останавливается, когда большое значение превышает установленный предел, то цикл может никогда не закончиться, если ошибки округления приведут к фактическому нулю малых значений.
Однако, если вы организуете сложение всех малых значений вместе, а затем добавите большее значение, которое приведет к большему значению, вы получите гораздо меньшую общую ошибку. С помощью арифметики с плавающей запятой вы часто можете повысить точность, изменив способ записи выражения.
Если вы программист, который иногда работает со значениями с плавающей запятой, которые являются проблематичными, то вы, в лучшем случае, изучите несколько простых правил, чтобы защитить себя от такого рода вещей. Например, никогда не проверяйте равенство значений, используйте только больше и меньше. Не добавляйте мелочи к большим вещам и так далее. Проблема в том, что для любого конкретного выражения с плавающей запятой вы не можете быть уверены, что ваши домашние правила будут достаточно хороши.
Теперь вы можете попросить ХЕРБИ попытаться найти альтернативное выражение, которое уменьшает ошибку округления. Вы предоставляете выражение, и ХЕРБИ затем использует ряд методов эвристического поиска, чтобы найти перезаписи, которые уменьшают ошибку. Он проверяет выражение с диапазоном значений с плавающей запятой и эмпирически определяет ошибку. Он может найти перезаписи, которые имеют хорошие эффекты в разных числовых диапазонах, и объединить их, чтобы получить единый результат, который хорошо работает.
Чтобы продемонстрировать, насколько хорош Херби, разработчики применили его к 28 тестовым случаям из численных методов Ричарда Хэмминга для ученых и инженеров с впечатляющими улучшениями:
Более длинные стрелы лучше. Каждая стрела измеряет повышение точности благодаря Херби. Каждая стрелка указывает на точность исходной программы и на точность выходных данных Херби, в каждом случае на случайных входах с двойной точностью.
Если вы просто хотите попробовать, есть веб-демонстрация, но у нее много недостатков по сравнению с полной программой, которую вы можете скачать и установить.