Function nekolib::math::sqrt_fraction
source · pub fn sqrt_fraction(n: i128) -> impl Iterator<Item = i128>
Expand description
平方根の連分数展開。
$\sqrt{n}$ の連分数展開を $[a_0; a_1, a_2, \dots]$ とする。 このとき、$a_\bullet$ を生成するイテレータを返す。
Examples
use nekolib::math::sqrt_fraction;
let a: Vec<_> = sqrt_fraction(3).take(30).map(|x| x as f64).collect();
let r = a.into_iter().rev().reduce(|a1, a0| a0 + 1.0 / a1).unwrap();
assert!((r - 3.0_f64.sqrt()).abs() < 1.0e-16);