gmp_sqrtremをつかって平方根を小数点までちゃんと出す用メモ。
前提として、gmp_sqrtremの戻り値をa 余り bとする。
x = a^2 + b
√x = a + γ
x = (a + γ)^2
a^2 + b = (a + γ)^2
a^2 + b = a^2 + 2aγ + γ^2
b = 2aγ + γ^2
2aγ + γ^2 - b = 0
γ = -a + √(a^2 + b)
プログラム的には…
$x = 平方根にする対象の数値; list($a, $b) = gmp_sqrtrem($x); $a = gmp_strval($a); $b = gmp_strval($b); $c = sqrt(pow($a, 2) + $b) - $a; $p = $a + $c;
いぢょ。真剣にタダのmemo。