-
-
Save purushothblog/7783561 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* fibbonacci.js | |
* Copyright (C) 2013 dhilipsiva <dhilipsiva@gmail.com> | |
* | |
* Distributed under terms of the MIT license. | |
*/ | |
function isDigit(val) { | |
/* | |
* Find if given value is a digit or not. | |
* If the ceil (or floor) of a given value is | |
* equal to itself, then it is digit, obviously. | |
*/ | |
return val == Math.ceil(val); | |
} | |
function isPerfectSquare(num) { | |
// Test if a number is perfect square or not. | |
var numSqrt = Math.sqrt(num); | |
// If numSqrt is a digit, then num is a perfect square. | |
return isDigit(numSqrt) | |
} | |
function calcBinetNumber(num) { | |
//Calcualte the binet number. | |
return 5 * Math.pow(num, 2); | |
} | |
function calcInverseBinetNumber(num){ | |
return Math.sqrt(num / 5); | |
} | |
function isFibbonacciNumber(num) { | |
// Function to find if a number is a fibbonacci number. | |
var binetNumber = calcBinetNumber(num); | |
if (isPerfectSquare(binetNumber + 4)) | |
return true; | |
if (isPerfectSquare(binetNumber - 4)) | |
return true; | |
/* | |
* If none of the above calculations returned true, | |
* then it is obviously not a fibbonacci number. | |
*/ | |
return false; | |
} | |
// Sorry, I couldnt get nextSmallestFibonacciNumber to working. | |
function nextSmallestFibonacciNumber(num) { | |
// Function to calcualte the next smallest fibonacci number in the series. | |
var binetFactor = Math.sqrt(calcBinetNumber(num)); | |
var binetNumber = Math.pow(Math.ceil(binetFactor), 2); | |
var inverseBinetNumber; | |
inverseBinetNumber = calcInverseBinetNumber(binetNumber + 4); | |
if (isDigit(inverseBinetNumber)) | |
return inverseBinetNumber; | |
inverseBinetNumber = calcInverseBinetNumber(binetNumber - 4); | |
if (isDigit(inverseBinetNumber)) | |
return inverseBinetNumber; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment