#include <boost/math/special_functions/sqrt1pm1.hpp>
namespace boost{ namespace math{
template <class T>
calculated-result-type sqrt1pm1(T x);
template <class T, class Policy>
calculated-result-type sqrt1pm1(T x, const Policy&);
}}
Возвращение<sqrt(1+x)-1>.
Тип возврата этой функции вычисляется с использованием правил расчета типа результата.: Возвращение<double>, когдаxявляется целым типом, а T иначе.
Окончательный аргументПолитикаявляется необязательным и может быть использован для контроля поведения функции: как она обрабатывает ошибки, какой уровень точности использовать и т. д. См. документациюдля более подробной информации.
Эта функция полезна, когда вам нужна разница между sqrt(x) и 1, когда x сам близок к 1.
Они были выполнены в<log1p>и<expm1>.
Следующий график иллюстрирует поведение sqrt1pm1:

Для встроенных в плавающие точки типов<sqrt1pm1>должно быть примерно 3 эпсилоновых точности.
Table 6.81. Error rates for sqrt1pm1
|
|
Microsoft Visual C++ версия 12.0 Win32 двойная
|
GNU C++ версия 5.1.0 Linux Double
|
GNU C++ версия 5.1.0 Linux длинный двойной
|
Солнечный компилятор версии 0x5130 Солнечный солярис
|
sqrt1pm1 |
Макс = 1.36ε (Средний = 0.44ε) |
Макс = 1.3ε (Средний = 0.404ε) |
Макс = 1.33ε (Средний = 0.409ε) |
Макс = 1,54ε (Средний = 0,568ε) |
Выбор случайных высокоточных тестовых значений, рассчитанных с использованием NTL::RR с 1000-битной точностью.