Here's the algorithm I use; you can decide if it is suitable for your purpose.
First, if the number fits into a machine word, use a binary search to determine if it is a Fibonacci number.
Otherwise, reduce mod 17711. If the residue is not 0, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 15127, 16724, 17334, 17567, 17656, 17690, 17703, 17708, 17710, the number is not a Fibonacci number. (This excludes 99.8% of 'random' numbers.)
If it passes that test, calculate $k=5n^2+4$. If $k$ is a square, or if $n>0$ and $k-8$ is a square, then the number is a Fibonacci number; otherwise not.
Of course implementing these will require a way to work with numbers larger than wordsize; I leave that to you.
<cmath>
rate as an external library? If you have some esoteric requirements, it would be worth stating them explicitly. $\endgroup$