#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-битной точностью.