# Fibonacci number

(definition)

Definition: A member of the sequence of numbers such that each number is the sum of the preceding two. The first seven numbers are 1, 1, 2, 3, 5, 8, and 13. F(n) ≈ round(Φn/√ 5), where Φ=(1+√ 5)/2.

Formal Definition: The nth Fibonacci number is

• F(n) = F(n-1) + F(n-2), where F(1)=1 and F(2)=1, or
• F(n) = (Φn - φn)/√ 5, where Φ=(1+√ 5)/2 and φ=(1-√ 5)/2.

Aggregate parent (I am a part of or used in ...)
Fibonacci tree, Fibonaccian search.

Note: Fibonacci, or more correctly Leonardo of Pisa, discovered the series in 1202 when he was studying how fast rabbits could breed in ideal circumstances.

Computing Fibonacci numbers with the recursive formula is an example in the notes for memoization. The Nth Fibonacci number can be computed in log N steps. The following method is by Bill Gosper & Gene Salamin, Hakmem Item 12, M.I.T.

Let pair-wise multiplication be

` 	(A,B)(C,D) = (AC+AD+BC,AC+BD) `
This is just (AX+B)*(CX+D) mod X²-X-1, and so is associative and commutative. Note that (A,B)(1,0) = (A+B,A) which is the Fibonacci recurrence. Thus,
` 	(1,0)^N = (F(N),F(N-1)) `
which can be computed in log N steps by repeated squaring.

As an example, here is a table of pair-wise Fibonacci numbers:

` 		       b^pow   pow	 		       (1,0)	1	 	 (1,0)(1,0) =  (1,1)	2	 	 (1,1)(1,0) =  (2,1)	3	 	 (2,1)(1,0) =  (3,2)	4	 	 (3,2)(1,0) =  (5,3)	5	 	 (5,3)(1,0) =  (8,5)	6	 	 (8,5)(1,0) = (13,8)	7	 	(13,8)(1,0) = (21,13)	8 `
and here are some "Fibonacci" multiplications
` 	(1,1)(1,1) = (3,2)			b^2 * b^2 = b^4	 	(3,2)(3,2) = (9+6+6,9+4) = (21,13)	b^4 * b^4 = b^8	 	(1,1)(5,3) = (5+3+5,5+3) = (13,8)	b^2 * b^5 = b^7	 `

They also note that for general second order recurrences

` 	G(N+1) = XG(N) + YG(N-1) `
we have the rule
` 	(A,B)(C,D) = (AD+BC+XAC,BD+YAC) `

Inverses and fractional powers are given also.

Author: PR

## Implementation

Worst-case behavior to generate nth number, annotated for real time (WOOP/ADA).