Skip to content

Instantly share code, notes, and snippets.

@purushothblog
Forked from dhilipsiva/binet-fibonacci.js
Created December 4, 2013 07:15
Show Gist options
  • Save purushothblog/7783561 to your computer and use it in GitHub Desktop.
Save purushothblog/7783561 to your computer and use it in GitHub Desktop.
/*
* 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