log1p

関数の概要

PHPの log1p 関数は、与えられた数値に1を加えた後の自然対数(底がeの対数)を計算します。特に値が0に非常に近い場合でも高精度な計算が可能で、数値誤差を抑えたい場面に重宝されます。

パラメータの説明

  • float $number – 自然対数を計算したい値に対して「1を加える」前の数値を指定します。0以上の小さな値を取ることが多く、負の値を指定すると結果は NAN になる場合があります。

戻り値

引数に1を加えた値の自然対数を浮動小数点数で返します。計算できない場合は NAN を返します。

使用例

基本的な使い方

<?php
echo log1p(0.5);  // 約0.40546510810816
?>

ここでは0.5に1を足した値(1.5)の自然対数を計算しています。

0に近い値での高精度計算

<?php
$num = 0.00001;
echo log1p($num);        // 約0.00000999995
echo "n";
echo log(1 + $num);      // 約0.00001000005(直接計算時は誤差が生じやすい)
?>

数値が非常に小さい場合、log1p の方が誤差が小さく安定した結果を返します。

負の値を与えた場合の挙動

<?php
var_dump(log1p(-1));    // -INF(1 + (-1) = 0 の対数は負の無限大)
var_dump(log1p(-2));    // NAN(計算不可)
?>

1より小さい負の値を渡すと結果は適切に扱われないことがあります。1の和が正である必要があります。

関連する関数

  • log – 任意の値の自然対数を計算する
  • exp – 自然対数の逆演算で、指数関数を計算する
  • log10 – 底が10の対数計算

まとめ

log1p は数値に1を加えた値の自然対数を高精度で計算する便利な関数です。特に値が0に近い時の誤差を抑えるため、数値演算や数学的計算を扱うPHPプログラムでの利用が推奨されます。1を加えた後の自然対数が必要な場面で効率良く正確な結果を求めたい場合に活用しましょう。