If you add a &quot;round to integer&quot; step at the end, it doesn&#x27;t require arbitrary precision arithmetic. Careful numerical analysis can tell you how many digits of precision you need to compute fib(n).<p>I would guess the end result would be similar to that of this method (2n bits being more than sufficient), the difference being that this method puts all the digits before the decimal point.<p>Also, for large n, you may be able to assume ψ = 0 to speed up computations (given ψ &lt; n, its nth power will get vanishingly small)<p>But the matrix method is the easiest fast method one can write and prove robust.<p>(It is not fastest because the trivial binary approach doesn&#x27;t product optimal addition chains. See <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Addition_chain" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Addition_chain</a> or (dense writing, as is normal in HAKMEM) <a href="http:&#x2F;&#x2F;www.inwap.com&#x2F;pdp10&#x2F;hbaker&#x2F;hakmem&#x2F;recurrence.html" rel="nofollow">http:&#x2F;&#x2F;www.inwap.com&#x2F;pdp10&#x2F;hbaker&#x2F;hakmem&#x2F;recurrence.html</a>)<p>Also, there is a very simple method for implementing &quot;isFib&quot;:<p><pre><code>  isFib(n) := isSquare(5n^2+4) or isSquare(5n^2-4)</code></pre>