Skip to content

Fibonacci ​

The nth Fibonacci number, with F0=0F_0 = 0 and F1=1F_1 = 1, extended to negative n by the same recurrence.

✓ checked against that system · ! checked, with disagreements (hover a chip)WikipediaFibonacci sequenceFibonacci numberMathWorldFibonacciNumberWikidataQ47577Britannicatopic/Fibonacci-numberDLMF26.11.p4FungrimFibonacci✓Fungrim entryOEISA000045Wolfram LanguageFibonacci✓Rosetta CodeFibonacci sequence
Fibonacci(n)the nth Fibonacci number FnF_n.
SageMathfibonacci(n)✓SymPyfibonacci(n)mpmathfib(n)Oscarfibonacci(n)JuliaBigInt(fibonacci(ZZ(n)))
Fibonacci(nu)a real (non-integer) index via Binet's formula, Fν=φν−cos⁡(πν)φ−ν5F_\nu = \frac{\varphi^\nu - \cos(\pi\nu)\varphi^{-\nu}}{\sqrt5}.
SageMathfibonacci(nu)✓SymPyfibonacci(nu)mpmathfib(nu)Oscarfibonacci(nu)JuliaBigInt(fibonacci(ZZ(nu)))
Fibonacci(n, x)the Fibonacci polynomial Fn(x)F_n(x), from Fn(x)=xFn−1(x)+Fn−2(x)F_n(x) = xF_{n-1}(x) + F_{n-2}(x), exact for a nonnegative integer n and numeric via the two-variable Binet formula for a real order.
Typed signatures
TypePackageApplies
(integer) -> integercompute-enginealways
(number, any?) -> anynumber-theoryreplaces compute-enginealways
(value) -> valueadelesreplaces number-theoryon ProfiniteNumber

Domain: Sequences

Details
  • Defined by the recurrence Fn=Fn−1+Fn−2F_n = F_{n-1} + F_{n-2} with F0=0F_0 = 0, F1=1F_1 = 1.
  • Closed form (Binet's formula): Fn=φn−ψn5F_n = \frac{\varphi^n - \psi^n}{\sqrt5}, where φ=1+52\varphi = \frac{1+\sqrt5}{2} and ψ=1−52\psi = \frac{1-\sqrt5}{2}.
  • Consecutive ratios Fn+1/FnF_{n+1}/F_n converge to the golden ratio φ\varphi. See LucasL.
  • GCD identity: gcd⁡(Fm,Fn)=Fgcd⁡(m,n)\gcd(F_m, F_n) = F_{\gcd(m,n)}.
  • Extends to negative n via F−n=(−1)n+1FnF_{-n} = (-1)^{n+1} F_n.
  • A list of indices is threaded over element-wise; a real (non-integer) index evaluates numerically via Binet's formula, and a symbolic second argument gives the Fibonacci polynomial.

Examples

Basic #
live ↗
InFibonacci(0)\mathrm{Fibonacci}(0)Out00
live ↗
InFibonacci(1)\mathrm{Fibonacci}(1)Out11
live ↗
InFibonacci(10)\mathrm{Fibonacci}(10)Out5555
live ↗
InFibonacci(20)\mathrm{Fibonacci}(20)Out6 7656\,765
live ↗
InFibonacci(8)\mathrm{Fibonacci}(8)Out2121
Scope #

Exact at any size: F100F_{100} has 21 digits

live ↗
InFibonacci(100)\mathrm{Fibonacci}(100)Out354 224 848 179 261 915 075354\,224\,848\,179\,261\,915\,075

A real index uses Fν=φν−cos⁡(πν) φ−ν5F_\nu = \frac{\varphi^\nu - \cos(\pi\nu)\,\varphi^{-\nu}}{\sqrt5}

live ↗
InFibonacci(1.5)\mathrm{Fibonacci}(1.5)Out0.920 442 065 259 9260.920\,442\,065\,259\,926

The two-argument Fibonacci polynomial F7(x)F_7(x), from Fn(x)=xFn−1(x)+Fn−2(x)F_n(x) = x F_{n-1}(x) + F_{n-2}(x)

live ↗
InFibonacci(7,x)\mathrm{Fibonacci}(7, x)Outx6+5x4+6x2+1x^6+5x^4+6x^2+1

The Fibonacci polynomial at a real order and argument, via the two-variable Binet formula

live ↗
InFibonacci(5.8,3)\mathrm{Fibonacci}(5.8, 3)Out283.482 730 832 949 9283.482\,730\,832\,949\,9

Special value of the Fibonacci polynomial: F1(0)=1F_1(0) = 1

live ↗
InFibonacci(1,0)\mathrm{Fibonacci}(1, 0)Out11

Special value of the Fibonacci polynomial: F0(0)=0F_0(0) = 0

live ↗
InFibonacci(0,0)\mathrm{Fibonacci}(0, 0)Out00

F3(x)=x2+1F_3(x) = x^2 + 1 threads element-wise over a matrix argument

live ↗
InFibonacci(3,[[−1,0],[0,5]])\mathrm{Fibonacci}(3, \bigl\lbrack\bigl\lbrack-1, 0\bigr\rbrack, \bigl\lbrack0, 5\bigr\rbrack\bigr\rbrack)Out[[2,1],[1,26]]\bigl\lbrack\bigl\lbrack2, 1\bigr\rbrack, \bigl\lbrack1, 26\bigr\rbrack\bigr\rbrack

Threads element-wise over a list, as Wolfram's Listable heads do

live ↗
InFibonacci([1,2,3,4])\mathrm{Fibonacci}(\bigl\lbrack1, 2, 3, 4\bigr\rbrack)Out[1,1,2,3]\bigl\lbrack1, 1, 2, 3\bigr\rbrack

A fully symbolic order stays exact -- the two-variable Binet formula, with π\pi, cos⁡\cos and x2+4\sqrt{x^2+4} left symbolic rather than rounded to a float (Wolfram's FunctionExpand[Fibonacci[n, x]] gives the same closed form)

live ↗
InFibonacci(n,x)\mathrm{Fibonacci}(n, x)Out(12(x+(x2+4)1/2))n−cos⁡(πn)((x+(x2+4)1/2)/2)nx2+4\frac{(\frac{1}{2}(x+(x^2+4)^{1/2}))^{n}-\frac{\cos(πn)}{((x+(x^2+4)^{1/2})/2)^{n}}}{\sqrt{x^2+4}}

F1/2(x)F_{1/2}(x) at an exact half-integer order: cos⁡(π/2)=0\cos(\pi/2) = 0 vanishes exactly, leaving a bare radical -- not a 25-digit decimal approximation of π\pi (Wolfram's FunctionExpand[Fibonacci[1/2, x]] agrees)

live ↗
InFibonacci(12,x)\mathrm{Fibonacci}(\frac{1}{2}, x)Out2x+x2+42x2+4\frac{\sqrt{2}\sqrt{x+\sqrt{x^2+4}}}{2\sqrt{x^2+4}}

Fractional index evaluated to 50 digits

live ↗
InN(Fibonacci(1517),50)N(\mathrm{Fibonacci}(\frac{15}{17}), 50)Out0.956 519 913 924 311 225 085 822 634 276 922 986 486 069 690 120 610.956\,519\,913\,924\,311\,225\,085\,822\,634\,276\,922\,986\,486\,069\,690\,120\,61

A Fibonacci polynomial at a complex point gives a Gaussian integer

live ↗
InN(Fibonacci(5,8−i))N(\mathrm{Fibonacci}(5, 8-i))Out3 903.0−2 064.0i3\,903.0-2\,064.0i

Closed form of the Fibonacci polynomial in terms of x2+4\sqrt{x^2+4}

live ↗
InFunctionExpand(Fibonacci(n,x))\mathrm{FunctionExpand}(\mathrm{Fibonacci}(n, x))Out(12(x+(x2+4)1/2))n−cos⁡(πn)((x+(x2+4)1/2)/2)nx2+4\frac{(\frac{1}{2}(x+(x^2+4)^{1/2}))^{n}-\frac{\cos(πn)}{((x+(x^2+4)^{1/2})/2)^{n}}}{\sqrt{x^2+4}}

A half-integer index reduces to a square-root form

live ↗
InFunctionExpand(Fibonacci(12,x))\mathrm{FunctionExpand}(\mathrm{Fibonacci}(\frac{1}{2}, x))Out2x+x2+42x2+4\frac{\sqrt{2}\sqrt{x+\sqrt{x^2+4}}}{2\sqrt{x^2+4}}

Even index gives an odd polynomial in xx

live ↗
InFibonacci(2,−x)=−Fibonacci(2,x)\mathrm{Fibonacci}(2, -x)=-\mathrm{Fibonacci}(2, x)OutTrue\mathrm{True}

Odd index gives an even polynomial in xx

live ↗
InFibonacci(1,−x)=Fibonacci(1,x)\mathrm{Fibonacci}(1, -x)=\mathrm{Fibonacci}(1, x)OutTrue\mathrm{True}

Threads over a list of indices

live ↗
InFibonacci([1,2,3,4,5])\mathrm{Fibonacci}(\bigl\lbrack1, 2, 3, 4, 5\bigr\rbrack)Out[1,1,2,3,5]\bigl\lbrack1, 1, 2, 3, 5\bigr\rbrack

Generating function is x/(1−x−x2)x/(1-x-x^2)

live ↗
InGeneratingFunction(Fibonacci(n),n,x)\mathrm{GeneratingFunction}(\mathrm{Fibonacci}(n), n, x)Outx−x2−x+1\frac{x}{-x^2-x+1}

Commutes with complex conjugation

live ↗
InFibonacci(1,z‾)=Fibonacci(1,z)‾\mathrm{Fibonacci}(1, \overline{z})=\overline{\mathrm{Fibonacci}(1, z)}OutTrue\mathrm{True}

Applied to a diagonal matrix, acts on each eigenvalue

live ↗
InMatrixFunction(_1⁡↦Fibonacci(3,_1⁡),[[−1,0],[0,5]])\mathrm{MatrixFunction}(\operatorname{\_1}↦\mathrm{Fibonacci}(3, \operatorname{\_1}), \bigl\lbrack\bigl\lbrack-1, 0\bigr\rbrack, \bigl\lbrack0, 5\bigr\rbrack\bigr\rbrack)Out[[2,0],[0,26]]\bigl\lbrack\bigl\lbrack2, 0\bigr\rbrack, \bigl\lbrack0, 26\bigr\rbrack\bigr\rbrack
Applications #

Consecutive ratios Fn+1/FnF_{n+1}/F_n converge to the golden ratio φ≈1.618\varphi \approx 1.618. See LucasL

live ↗
InFibonacci(20)Fibonacci(19)\frac{\mathrm{Fibonacci}(20)}{\mathrm{Fibonacci}(19)}Out6 7654 181\frac{6\,765}{4\,181}
Properties #

∑k=1nFk=Fn+2−1\sum_{k=1}^{n} F_k = F_{n+2} - 1, here F12−1=143F_{12} - 1 = 143

live ↗
In∑k=110Fibonacci(k)\sum_{k=1}^{10}\mathrm{Fibonacci}(k)Out143143

The doubling identity F2n=FnLnF_{2n} = F_n L_n. See LucasL

live ↗
InFibonacci(20)=Fibonacci(10)LucasL(10)\mathrm{Fibonacci}(20)=\mathrm{Fibonacci}(10)\mathrm{LucasL}(10)OutTrue\mathrm{True}

The defining recurrence F10=F9+F8F_{10} = F_9 + F_8

live ↗
InFibonacci(10)=Fibonacci(9)+Fibonacci(8)\mathrm{Fibonacci}(10)=\mathrm{Fibonacci}(9)+\mathrm{Fibonacci}(8)OutTrue\mathrm{True}

Cassini's identity Fn−1Fn+1−Fn2=(−1)nF_{n-1}F_{n+1} - F_n^2 = (-1)^n, here at n=6n = 6

live ↗
InFibonacci(5)Fibonacci(7)−Fibonacci(6)2\mathrm{Fibonacci}(5)\mathrm{Fibonacci}(7)-\mathrm{Fibonacci}(6)^2Out11

gcd⁡(F12,F18)=Fgcd⁡(12,18)\gcd(F_{12}, F_{18}) = F_{\gcd(12, 18)}

live ↗
Ingcd⁡(Fibonacci(12),Fibonacci(18))=Fibonacci(gcd⁡(12,18))\gcd(\mathrm{Fibonacci}(12), \mathrm{Fibonacci}(18))=\mathrm{Fibonacci}(\gcd(12, 18))OutTrue\mathrm{True}

Negative indices are supported via F−n=(−1)n+1FnF_{-n} = (-1)^{n+1} F_n

live ↗
InFibonacci(−5)\mathrm{Fibonacci}(-5)Out55

F2=1F_2=1

live ↗
InFibonacci(2)\mathrm{Fibonacci}(2)Out11

Known value · Wolfram MathematicalFunctionData, Fibonacci

F3=2F_3=2

live ↗
InFibonacci(3)\mathrm{Fibonacci}(3)Out22

Known value · Wolfram MathematicalFunctionData, Fibonacci

F4=3F_4=3

live ↗
InFibonacci(4)\mathrm{Fibonacci}(4)Out33

Known value · Wolfram MathematicalFunctionData, Fibonacci

F5=5F_5=5

live ↗
InFibonacci(5)\mathrm{Fibonacci}(5)Out55

Known value · Wolfram MathematicalFunctionData, Fibonacci

F6=8F_6=8

live ↗
InFibonacci(6)\mathrm{Fibonacci}(6)Out88

Known value · Wolfram MathematicalFunctionData, Fibonacci

F7=13F_7=13

live ↗
InFibonacci(7)\mathrm{Fibonacci}(7)Out1313

Known value · Wolfram MathematicalFunctionData, Fibonacci

F9=34F_9=34

live ↗
InFibonacci(9)\mathrm{Fibonacci}(9)Out3434

Known value · Wolfram MathematicalFunctionData, Fibonacci

Negative index reflects: F−n=(−1)n+1FnF_{-n}=(-1)^{n+1}F_n, so F−1=1F_{-1}=1

live ↗
InFibonacci(−1)\mathrm{Fibonacci}(-1)Out11

Known value · Wolfram MathematicalFunctionData, Fibonacci

live ↗
InFibonacci(1)Fibonacci(3)−Fibonacci(2)2\mathrm{Fibonacci}(1)\mathrm{Fibonacci}(3)-\mathrm{Fibonacci}(2)^2Out11

Known value · Wolfram MathematicalFunctionData, Fibonacci, Cassini's formula

live ↗
InFibonacci(2)2−Fibonacci(0)Fibonacci(4)\mathrm{Fibonacci}(2)^2-\mathrm{Fibonacci}(0)\mathrm{Fibonacci}(4)Out11

Known value · Wolfram MathematicalFunctionData, Fibonacci, Catalan's identity

live ↗
InFibonacci(2)Fibonacci(3)Fibonacci(4)Fibonacci(6)Fibonacci(7)Fibonacci(8)+LucasL(5)2\mathrm{Fibonacci}(2)\mathrm{Fibonacci}(3)\mathrm{Fibonacci}(4)\mathrm{Fibonacci}(6)\mathrm{Fibonacci}(7)\mathrm{Fibonacci}(8)+\mathrm{LucasL}(5)^2Out13 22513\,225

Known value · Wolfram MathematicalFunctionData, Fibonacci, Morgado identity

live ↗
InFibonacci(0)Fibonacci(1)Fibonacci(3)Fibonacci(4)\mathrm{Fibonacci}(0)\mathrm{Fibonacci}(1)\mathrm{Fibonacci}(3)\mathrm{Fibonacci}(4)Out00

Known value · Wolfram MathematicalFunctionData, Fibonacci, Gelin‐Cesàro identity

Neat examples #

F1000F_{1000} has 209 digits. See IntegerDigits

live ↗
InLength(IntegerDigits(Fibonacci(1 000)))\mathrm{Length}(\mathrm{IntegerDigits}(\mathrm{Fibonacci}(1\,000)))Out209209

They grow fast: F50F_{50} already exceeds twelve billion

live ↗
InFibonacci(50)\mathrm{Fibonacci}(50)Out12 586 269 02512\,586\,269\,025
About
Examples46
Checked againstWolfram Language 46 agreeSageMath 28 agree3 errorSymPy 39 agree2 unevaluated2 errormpmath 28 agreemathlib4 11 agree2 errorOscar 11 agree3 errorJulia 27 agree2 error
CrosswalkWikipedia ×2MathWorldWikidataBritannicaDLMFFungrimFungrim entry ×40OEISWolfram LanguageSageMathSymPy ×2mpmathOscarJuliaRosetta Code

Implementation

mappedwolframpackages/oracle/src/mappings.ts

Julia's bare fibonacci(::Int) overflows past F(92); Nemo's ZZ makes it arbitrary-precision, and the BigInt conversion keeps the result a type Julia's own big() and arithmetic still know (other templates wrap operands in big(...)), unlike the bare ZZRingElem.

mappedsympypackages/oracle/src/mappings.ts

Julia's bare fibonacci(::Int) overflows past F(92); Nemo's ZZ makes it arbitrary-precision, and the BigInt conversion keeps the result a type Julia's own big() and arithmetic still know (other templates wrap operands in big(...)), unlike the bare ZZRingElem.

mappedsagepackages/oracle/src/mappings.ts

Julia's bare fibonacci(::Int) overflows past F(92); Nemo's ZZ makes it arbitrary-precision, and the BigInt conversion keeps the result a type Julia's own big() and arithmetic still know (other templates wrap operands in big(...)), unlike the bare ZZRingElem.

mappedoscarpackages/oracle/src/mappings.ts

Julia's bare fibonacci(::Int) overflows past F(92); Nemo's ZZ makes it arbitrary-precision, and the BigInt conversion keeps the result a type Julia's own big() and arithmetic still know (other templates wrap operands in big(...)), unlike the bare ZZRingElem.

mappedjuliapackages/oracle/src/mappings.ts

Julia's bare fibonacci(::Int) overflows past F(92); Nemo's ZZ makes it arbitrary-precision, and the BigInt conversion keeps the result a type Julia's own big() and arithmetic still know (other templates wrap operands in big(...)), unlike the bare ZZRingElem.

mappedmathlib4packages/oracle/src/mappings.ts

Julia's bare fibonacci(::Int) overflows past F(92); Nemo's ZZ makes it arbitrary-precision, and the BigInt conversion keeps the result a type Julia's own big() and arithmetic still know (other templates wrap operands in big(...)), unlike the bare ZZRingElem.

mappedsympypackages/oracle/src/mappings.ts
mappedmpmathpackages/oracle/src/mappings.ts

See also: LucasL