Math.log1p()

Статичний метод Math.log1p() повертає натуральний логарифм (логарифм за основою e) числа 1 + x, де x – аргумент методу. Тобто:

x>1,𝙼𝚊𝚝𝚑.𝚕𝚘𝚐𝟷𝚙(𝚡)=ln(1+x)\forall x > -1,;\mathtt{\operatorname{Math.log1p}(x)} = \ln(1 + x)

Спробуйте його в дії

Синтаксис

Math.log1p(x)

Параметри

x

Число, більше або рівне -1.

Повернене значення

Натуральний логарифм (логарифм за основою e) числа x + 1. Якщо x дорівнює -1, повертається -Infinity. Якщо x < -1, повертається NaN.

Опис

Для дуже малих значень x додавання 1 може зменшити точність. Числа з рухомою комою подвійної точності, які використовуються в JS, дають близько 15 розрядів точності. 1 + 1e-15 = 1.000000000000001, але 1 + 1e-16 = 1.000000000000000, або рівно 1.0 в такій арифметиці, оскільки цифри після 15 розряду зникають під час округлення.

Коли обчислювати log(1 + x), де x – мале додатне число, повинен вийти результат, дуже наближений до x, тому що limx0log(1+x)x=1\lim_{x \to 0} \frac{\log(1+x)}{x} = 1. Якщо обчислювати Math.log(1 + 1.1111111111e-15), то повинен вийти результат, наближений до 1.1111111111e-15. Замість цього доведеться брати логарифм від 1.00000000000000111022 (округлення – двійкове, тому іноді це має потворний вигляд), і вийде результат 1.11022…e-15, де будуть лише 3 коректні розряди. Якщо ж замість цього обчислити Math.log1p(1.1111111111e-15), то вийде куди точніший результат 1.1111111110999995e-15, з 15 коректними розрядами точності (в цьому випадку навіть 16).

Якщо значення x менше за -1, то повернене значення завжди NaN.

Оскільки log1p() — це статичний метод об'єкта Math – його потрібно завжди використовувати через Math.log1p(). Не слід звертатись до нього як до методу власноруч створеного екземпляра Math (Math не є конструктором).

Приклади

Застосування Math.log1p()

Math.log1p(-2); // NaN
Math.log1p(-1); // -Infinity
Math.log1p(-0); // -0
Math.log1p(0); // 0
Math.log1p(1); // 0.6931471805599453
Math.log1p(Infinity); // Infinity

Специфікації

Сумісність із браузерами

desktop mobile server
Chrome Edge Firefox Internet Explorer Opera Safari WebView Android Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet Deno Node.js
log1p
Chrome Full support 38
Edge Full support 12
Firefox Full support 25
Internet Explorer No support No
Opera Full support 25
Safari Full support 8
WebView Android Full support 38
Chrome Android Full support 38
Firefox for Android Full support 25
Opera Android Full support 25
Safari on iOS Full support 8
Samsung Internet Full support 3.0
Deno Full support 1.0
Node.js Full support 0.12.0

Дивіться також