から始まるので注意 !!
--
-- ex : polyNumList 3 => [0,1,3,6,10,15,21,28,36,45,55 ..]
--
polyNumList :: Integral a => a -> [a]
polyNumList n = scanl (+) 0 [1, n - 1 ..]

--
--
fibonacci2 n = truncate . (* 2) . snd $ power f (1, 0) (1 % 2, 1 % 2) n
  where f (a1, b1) (a2, b2) = (a1 * a2 + 5 * b1 * b2, a1 * b2 + a2 * b1)

--
-- Lucas 数
--
fibonacci2 n = truncate . (* 2) . snd $ power f (1, 0) (1 % 2, 1 % 2) n
  where f (a1, b1) (a2, b2) = (a1 * a2 + 5 * b1 * b2, a1 * b2 + a2 * b1)

--
-- Lucas 数
--