
I have some code that checks to see if a number is a fibonacci number. It's not mine, I got it from somewhere and I need to credit it. I am pretty sure I got it from Stack Exchange but my search for it went nowhere. If this looks familiar to you, or you can tell me better ways to search, please let me know. isFib :: Integer -> Bool isFib n = n == a where (_, a, _) = unFib (1, 1) n unFib :: (Integer, Integer) -> Integer -> (Integer,Integer,Integer) unFib (a, b) n | n < a = (0, 0, 1) | n < e = (2*k, c, d) | otherwise = (2*k + 1, e, f) where (k, c, d) = unFib (fibPlus (a, b) (a, b)) n (e, f) = fibPlus (a, b) (c, d) fibPlus :: (Integer, Integer) -> (Integer, Integer) -> (Integer,Integer) fibPlus (a, b) (c, d) = (bd - (b - a)*(d - c), a*c + bd) where bd = b*d

On Mon, May 09, 2016 at 04:59:40PM -0700, Michael Litchard wrote:
I have some code that checks to see if a number is a fibonacci number. It's not mine, I got it from somewhere and I need to credit it. I am pretty sure I got it from Stack Exchange but my search for it went nowhere. If this looks familiar to you, or you can tell me better ways to search, please let me know.
[...]
This [1] leads to this [2] (whether it's original or was snatched from somewhere else, I don't know!) [1] https://duckduckgo.com/?q=isfib+unfib+fibplus&t=ffnt [2] https://www.quora.com/What-is-the-most-efficient-algorithm-to-check-if-a-num...

Hi Michael,
I suppose this is where you got the code from?
https://www.quora.com/What-is-the-most-efficient-algorithm-to-check-if-a-num...
It's the sixth result of the Google search "haskell: get if a number is a
fibonacci number"
On May 10, 2016 1:59 AM, "Michael Litchard"
I have some code that checks to see if a number is a fibonacci number. It's not mine, I got it from somewhere and I need to credit it. I am pretty sure I got it from Stack Exchange but my search for it went nowhere. If this looks familiar to you, or you can tell me better ways to search, please let me know.
isFib :: Integer -> Bool isFib n = n == a where (_, a, _) = unFib (1, 1) n
unFib :: (Integer, Integer) -> Integer -> (Integer,Integer,Integer) unFib (a, b) n | n < a = (0, 0, 1) | n < e = (2*k, c, d) | otherwise = (2*k + 1, e, f) where (k, c, d) = unFib (fibPlus (a, b) (a, b)) n (e, f) = fibPlus (a, b) (c, d)
fibPlus :: (Integer, Integer) -> (Integer, Integer) -> (Integer,Integer) fibPlus (a, b) (c, d) = (bd - (b - a)*(d - c), a*c + bd) where bd = b*d
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe

That's it thanks.
On Mon, May 9, 2016 at 5:08 PM, Jonne Ransijn
Hi Michael,
I suppose this is where you got the code from?
https://www.quora.com/What-is-the-most-efficient-algorithm-to-check-if-a-num...
It's the sixth result of the Google search "haskell: get if a number is a fibonacci number" On May 10, 2016 1:59 AM, "Michael Litchard"
wrote: I have some code that checks to see if a number is a fibonacci number. It's not mine, I got it from somewhere and I need to credit it. I am pretty sure I got it from Stack Exchange but my search for it went nowhere. If this looks familiar to you, or you can tell me better ways to search, please let me know.
isFib :: Integer -> Bool isFib n = n == a where (_, a, _) = unFib (1, 1) n
unFib :: (Integer, Integer) -> Integer -> (Integer,Integer,Integer) unFib (a, b) n | n < a = (0, 0, 1) | n < e = (2*k, c, d) | otherwise = (2*k + 1, e, f) where (k, c, d) = unFib (fibPlus (a, b) (a, b)) n (e, f) = fibPlus (a, b) (c, d)
fibPlus :: (Integer, Integer) -> (Integer, Integer) -> (Integer,Integer) fibPlus (a, b) (c, d) = (bd - (b - a)*(d - c), a*c + bd) where bd = b*d
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
participants (3)
-
Francesco Ariis
-
Jonne Ransijn
-
Michael Litchard