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);