Позволяет всем специальным функциональным кодам корректно работать с типами, точность которых может изменяться во время выполнения: например, тип<mpfr_float>от Boost.Multiprecision.
Патчи:
Исправьте tgamma_delta_ratio для случаев, когда дельта мала по сравнению с основанием.
Продвигать код поиска корней и минимизации функций для первоклассных граждан - теперь они официально поддерживаются как часть библиотеки.
Разрешить использовать и тестировать библиотеку с отключенной поддержкой обработки исключений компилятора. Чтобы облегчить эту задачу, политики обработки ошибок по умолчанию были изменены наerrno_on_error., но только тогда, когда компилятор не имеет поддержки обработки.
Патчи:
Исправить поведение нецентрального ци-квадратного распределения, когда параметр нецентральности равен нулю, чтобы соответствовать ци-квадрату, см.11557.
Исправьте комментарии в коде, чтобы гипергеометрия соответствовала тому, что она на самом деле делает, а также исправьте функции доступа к параметрам, чтобы вернуть правильные значения.11556.
Прекращается использование скрытой библиотеки видимости с компилятором Oracle, поскольку это приводит к неразрешенным внешним сторонам из стандартной библиотеки C++.11547.
Исправьте непреднамеренное использование __declspec при создании с помощью Oracle C++. См.11546.
Исправьте ошибку углового регистра в корневом коде скобки, см.11532.
Добавьте несколько недостающих наборов в аргументы для std::max в коде Бернулли.11453.
Исправить ошибочные предположения о возможных значениях для FLT_EVAL_METHOD. См.11429.
Полностью обновленный тест производительности и код измерения частоты ошибок, чтобы мы могли легче документировать, насколько хорошо (или нет!) мы делаем. Надеемся, что эта информация будет чаще обновляться в будущем, поскольку она генерируется более или менее автоматически - см. подкаталогдля получения дополнительной информации.
Исправьте некоторые угловые случаи в бета-версии, неполной бета-версии и неполной бета-производной. Спасибо Рокко Ромео.
Реорганизовал функции Бесселя, чтобы улучшить производительность Jn и Yn.
Фиксированная формула смещения для треугольного распределения см.#11768.
Зафиксированы некоторые примеры, поэтому они компилируются на платформах Unix, которые имеют:: заявленную структуру исключения, см.#11827.
Правильная ошибка в формуле треугольного распределения смещения11768, сообщал Хуан Лени.
Константы пространства имен с фиксированной константой так, чтобы они были constexpr на соответствующих компиляторах, см. https://svn.boost.org/trac/boost/ticket/10901.
Исправлены различные случаи ложного недо/перетока в неполных бета- и гамма-функциях, плюс эллиптические интегралы, благодаря Рокко Ромео.
Исправьте функции 3-arglegendre_pиLegendre_q, чтобы не называть перегрузку, основанную на политике, если окончательный аргумент на самом деле не является политикой.
Очищен некоторый мертвый код в неполной бета-функции см.#10985.
Fixed extreme-value pdf for large valued inputs, see#10938.
Большое обновление интегрального кода Elliptic для использования новейших алгоритмов Карлсона — они должны быть более стабильными, более точными и немного быстрее, чем раньше. Также добавлена поддержка RG-интеграла Карлсона.
Перелом: Перенес в<libs/math/include_private>ряд непрофильных заголовков, которые преимущественно используются для внутреннего обслуживания. На них изображены:<boost/math/tools/test_data.hpp>,<boost/math/tools/remez.hpp>,<boost/math/constants/generate.hpp>,<boost/math/tools/solve.hpp>,<boost/math/tools/test.hpp>. Вы можете продолжать использовать эти заголовки, добавив<libs/math/include_private>к пути включения компилятора.
Исправлена проблема инициализации постоянного значения PGI, которая заставила эрфа генерировать неправильные результаты#8621.
Предотвратить макрорасширение некоторых макросов C99, которые также являются функциями C++#8732и#8733.
Распределение T фиксированного студента ведет себя правильно с огромными степенями свободы (больше, чем наибольшее представляемое целое число)#8837.
Сделайте некоторые основные функции удобными для использования с<longdouble>, даже если платформа не имеет поддержки стандартной библиотеки<longdouble>#8940.
Исправьте ошибку обработки распределений, чтобы поймать неверные параметры масштаба и местоположения, когда случайная величина бесконечна#9042и#9126.
Добавьте обходной путь для сломанныхв Intel C++ 14#9087.
Улучшить согласованность снижения аргумента в эллиптических интегралах#9104.
Исправьте ошибку в обратной неполной бета-версии, которая приводит к ошибкам отмены, когда бета-функция на самом деле является дистрибутивом T.
Исправление проблемы в функциях Бесселя I и К продолжается фракциями, которые вызывают ложный переток/переток.
Большая реорганизация для включения других элементов. Математика, такая как целые коммунальные услуги (величайший общий делитель и наименьшее общее множество), кватернионы и октонионы. Создание новых заголовков глав.
Добавлено много ссылок на Boost.Multiprecision и<cpp_dec_float_50>в качестве примера пользовательского типа (UDT).
Добавлен Clang в список поддерживаемых компиляторов.
Фиксированные константы для использования резьбово-безопасного кэша вычисленных значений при использовании с произвольной точностью.
Добавлено нахождение нулей функций Бесселя<cyl_bessel_j_zero>,<cyl_neumann_zero>,<airy_ai_zero>и<airy_bi_zero>(Кристофор Корманос).
Более точные улучшения функций Bessel J и Y от Rocco Romeo.
Исправленная неприятная ошибка циклической зависимости, которая заставила некоторые заголовки не компилировать#7999.
Исправленная ошибка вtgamma, которая вызвала ложный переполнение для аргументов между 142,5 и 143.
Исправленная ошибка в raise_rounding_error, которая заставила его вернуть неправильный результат при броске исключения, выключена#7905.
Добавлена минимальная поддержка __float128
Фиксированный баг в крайних футлярах poisson quantile#8308.
Скорректированная эвристика, используемая в итерации Галлея, чтобы справиться с инвертированием неполной бета-версии в сложных областях, где производная плоская. Примером является вычисление квантиля распределения Фишера F для вероятностей, меньших, чем машинный эпсилон. Билет#8314.
Исправлена ошибка обнаружения плохих параметров во многих дистрибутивах#6934(сообщается Флорианом Шоппманом) путем добавления функции check_out_of_range для проверки многих возможных плохих параметров. Этот тест выявил несколько дистрибутивов, где проверки на плохие параметры были неэффективными, и они были исправлены.
Исправленная проблема в функциях Hankel, которая вызывает возврат неправильных значений дляx< 0и ν нечетный, см.#7135.
Разрешенные бесконечные степени свободы#7259реализованы с использованием нормального распределения (запрошено Томасом Мангом).
Значительно улучшенная точность для больших степеней свободы ν и/или большой нецентральности δ путем переключения на использование распределения Students t (или нормального распределения для бесконечных степеней свободы), сосредоточенного в дельте, когда δ / (4 * ν)< эпсилон для типа плавающей точки в использовании.#7259. Было обнаружено, что неполная бета-версия страдала от серьезных ошибок отмены, когда степени свободы были очень большими. (В настоящее время это исправлено в нашем коде, но любой код, основанный на исходных документах Дидонато и Морриса (вероятно, каждая реализация там на самом деле) будет иметь одинаковую проблему).
Продвигались математические константы, чтобы быть гражданами 1-го класса, включая удобный доступ к наиболее широко используемому встроенному поплавку, двойному, длинному двойному через три пространства имен.
Добавлена функция T Оуэна и распределение Skew Normal, написанное Бенджамином Соботтой: см.Owens Tи skew_normal_distrib.
Изменен механизм постоянной инициализации так, что он безопасен даже для определяемых пользователем типов, а также так, что определяемые пользователем типы получают полную точность постоянной, даже когда<longdouble>нет. Так, например, 128-битные рациональные приближения будут работать с UDT и делать правильные вещи, хотя<longdouble>может быть только 64 или 80 бит.
Исправленная проблема в<bessel_jy>, которая заставляет Y8,5(4π) давать NaN.
Ошибочно названный<twothirds>математический констант в пользу<two_thirds>(с выделением сепаратора). (выпуск#6199).
Рефакторированные тестовые данные и некоторый специальный функциональный код для улучшения поддержки типов с произвольной точностью и/или с поддержкой экспрессии.
Добавлен новый более быстрый метод оценки дзета-функции.
Исправленные вопросы:
Исправленное дополнение CDF для распределения Laplace (выпуск#6151).
Исправлены разрезы ветвей на сложных обратных триговых функциях, для обработки подписанных нулей (выпуск#6171).
Исправленная ошибка<bessel_yn>, которая вызвала неправильные ошибки переполнения для отрицательногоn(выпуск#6367).
Добавлены новые методы оценки серии к циклическим функциям Бесселя I, J, K и Y. Кроме того, мы позаботились о том, чтобы избежать ложных и недооцененных функций. Проблема исправлений#5560
Добавлен пример использования распределения Inverse Chi-Squared для байесовской статистики, предоставленный Томасом Мангом.
Добавлены тесты для использования улучшенной версии lexical_cast, которая обрабатывает нефиниты C99 без использования глобальных аспектов.
Исправлены неправильные несвязанные однородные значения комплемента CDF распределения#5733.
Включена длинная двойная поддержка на OpenBSD (выпуск#6014).
Измененные далее и связанные с ними функции ведут себя так же, как и другие реализации, — так что следующая (+INF, 0) является конечным значением (выпуск#5832).
Измененный кортеж включает в себя конфигурацию для исправления проблемы при использовании в сочетании с Boost.Tr1 (выпуск#5934).
Измененный класс eps_tolerance ведет себя корректно, когда оба конца диапазона равны нулю (выпуск#6001).
Исправлено отсутствие охранников на prime.hpp (выпуск#5927).
Удалены неиспользуемые/недокументированные константы из Constants.hpp (выпуск#5982).
Исправлен недостающий std:: префикс в nonfinite_num_facets.hpp (выпуск#5914).
Небольшие патчи для совместимости компилятора Cray.
Исправлен неправильный диапазон и поддержка дистрибутива Рэлея.
Фиксированная численная ошибка в квантиле распределения T Студента: функция возвращала значения мусора для нецелочисленных степеней свободы между 2 и 3.
Добавлены некоторые полные специализации классы политики, чтобы сократить время компиляции.
Добавлены логистические и гипергеометрические дистрибутивы из проекта Gautam Sewani Google Summer of Code.
Добавлен дистрибутив Laplace, представленный Thijs van den Berg.
Обновленный код тестирования производительности для включения новых дистрибутивов и улучшения производительности нецентральных дистрибутивов.
Добавлен оптимизированный код SSE2Lanczosиз проекта Google Summer of Code Гаутама Сувани.
Исправленная ошибка в cyl_bessel_i, которая использовала неправильное приближение для ν = 0,5, также влияет на нецентральное распределение площади Чи, когда ν = 3, см. отчет об ошибке#2877.
Добавленная структура, основанная на политике, которая позволяет точно контролировать поведение функций.
Преодоление изменений:Изменилось поведение по умолчанию для ошибок домена, полюса и переполнения, чтобы бросить исключение (на основе обратной связи обзора), это поведение может быть настроено с использованиемПолитики.
Переломные изменения:Изменилось исключение, выброшенное при возникновении внутренней ошибки оценки для повышения::math::evaluation_error.
Переломные изменения:Измененные дискретные квантили возвращают целочисленный результат: это все в 20 раз быстрее, чем найти истинный корень, такое поведение можно настроить с помощьюПолитики.
Оценка полиномиальной/рациональной функции теперь настраивается и, надеюсь, быстрее, чем раньше.
Добавлена программа тестирования производительности.
Осуществлять предварительный выпуск статистических распределений.
Добавлен учебник по статистическим распределениям.
Реализованы алгоритмы поиска корней.
Реализованы обратные стороны неполных гамма- и бета-функций.
Переписать erf/erfc как рациональные приближения (с точностью до 128 бит).
Интеграция статистических результатов, полученных из тестовых данных, с Boost. Тест: использует базу данных ожидаемых результатов, индексируемую тестом, тип плавающей точки, платформу и компилятор.
Улучшенная гамма около 1 и 2 (рациональные приближения).
Реализуйте функции гамма/бета/эрф вместе с их неполными аналогами.
Создание высококачественных тестовых данных, по которым можно судить о будущих улучшениях.
Предоставьте инструменты для оценки бесконечных рядов, непрерывных дробей и рациональных функций.
Предоставить инструменты для тестирования на основе табулированных тестовых данных и сбора статистики по показателям ошибок.
Предоставьте достаточно документов, чтобы люди могли найти свой путь вокруг библиотеки.
СВН Пересмотры:
Песочница и багажник в последний раз синхронизировались при доработке:
Статья History and What's New раздела Math Toolkit 2.5.0 Chapter 1. Overview может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.