|Portability||Non-portable (GHC extensions)|
|Maintainer||Daniel Fischer <email@example.com>|
Efficient calculation of Lucas sequences.
k-th Fibonacci number in
log (abs k)) steps. The index may be negative. This
is efficient for calculating single Fibonacci numbers (with
large index), but for computing many Fibonacci numbers in
close proximity, it is better to use the simple addition
formula starting from an appropriate pair of successive
returns the pair
(F(k), F(k+1)) of the
Fibonacci number and its successor, thus it can be used to calculate
the Fibonacci numbers from some index on without needing to compute
the previous. The pair is efficiently calculated
log (abs k)) steps. The index may be negative.
calculates the quadruple
generalLucas p q k
(U(k), U(k+1), V(k), V(k+1))
U(i) is the Lucas sequence of the first kind and
V(i) the Lucas
sequence of the second kind for the parameters
p^2-4q /= 0.
Both sequences satisfy the recurrence relation
A(j+2) = p*A(j+1) - q*A(j),
the starting values are
U(0) = 0, U(1) = 1 and
V(0) = 2, V(1) = p.
The Fibonacci numbers form the Lucas sequence of the first kind for the
p = 1, q = -1 and the Lucas numbers form the Lucas sequence of
the second kind for these parameters.
Here, the index must be non-negative, since the terms of the sequence for
negative indices are in general not integers.