Skip to content

Instantly share code, notes, and snippets.

@ehmo
Created December 31, 2016 00:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ehmo/79a5f78644b561520b70fa8cbf1c9b95 to your computer and use it in GitHub Desktop.
Save ehmo/79a5f78644b561520b70fa8cbf1c9b95 to your computer and use it in GitHub Desktop.
-- Super fast quasi fibonacci function for postgresql
-- Returns rounded big integer
CREATE OR REPLACE FUNCTION fib (
n integer
) RETURNS bigint AS $$
BEGIN
IF n > 91 THEN
RAISE EXCEPTION 'Bigint overflow past fib(91) [%]', n;
END IF;
RETURN (1.618^n)/ (|/ 2);
END;
$$ LANGUAGE plpgsql;
-- Returns double precission number
CREATE OR REPLACE FUNCTION fib (
n integer
) RETURNS double precision AS $$
BEGIN
IF n > 1475 THEN
RAISE EXCEPTION 'Double precision overflow past fib(1475) [%]', n;
END IF;
RETURN (1.618^n)/ (|/ 2);
END;
$$ LANGUAGE plpgsql;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment