generalized_fibonacci.sf 616 B

123456789101112131415161718
  1. #!/usr/bin/ruby
  2. # Runtime: 2.587s
  3. include('../lib/bacovia.sf')
  4. func fibonacci(t, n) {
  5. var a = Power(n**2 + 4, Fraction(1, 2))
  6. var b = Fraction(a + Power(Power(a, 2) - 4, Fraction(1, 2)), 2)
  7. Fraction(Power(b, t) - Power(-b, -t), a)
  8. }
  9. say var a = fibonacci(Symbol('n', 12), 1).simple.pretty
  10. say var b = fibonacci(Symbol('n', 12), Symbol('m')).simple.pretty
  11. assert_eq(a, '((((5^(1/2) + (5 - 4)^(1/2))/2)^n - ((-(5^(1/2) + (5 - 4)^(1/2)))/2)^(-n))/5^(1/2))')
  12. assert_eq(b, '(((((4 + m^2)^(1/2) + ((4 + m^2)^1 - 4)^(1/2))/2)^n - ((-((4 + m^2)^(1/2) + ((4 + m^2)^1 - 4)^(1/2)))/2)^(-n))/(4 + m^2)^(1/2))')