#!/usr/bin/perl # Runtime: 0.190s use 5.014; use lib qw(../lib); use Math::Bacovia qw(:all); use experimental qw(signatures); use Test::More; sub fibonacci ($t, $n) { my $a = Power($n**2 + 4, Fraction(1, 2)); my $b = Fraction($a + Power(Power($a, 2) - 4, Fraction(1, 2)), 2); Fraction(Power($b, $t) - Power(-$b, -$t), $a); } my $x = fibonacci(Symbol('n', 12), 1)->simple->simple; my $y = fibonacci(Symbol('n', 12), Symbol('m', 1))->simple->simple; say $x->pretty; say $y->pretty; plan tests => 4; #<<< #is($x->pretty, '((((1 + 5^(1/2))/2)^n - (-((1 + 5^(1/2))/2))^(-n))/5^(1/2))'); #is($y->pretty, '(((((4 + m^2)^(1/2) + ((4 + m^2) - 4)^(1/2))/2)^n - (-(((4 + m^2)^(1/2) + ((4 + m^2) - 4)^(1/2))/2))^(-n))/(4 + m^2)^(1/2))'); #>>> #<<< is($x->pretty, '((((5^(1/2) + ((5^(1/2))^2 - 4)^(1/2))/2)^n - (-((5^(1/2) + ((5^(1/2))^2 - 4)^(1/2))/2))^(-n))/5^(1/2))'); is($y->pretty, '(((((4 + m^2)^(1/2) + (((4 + m^2)^(1/2))^2 - 4)^(1/2))/2)^n - (-(((4 + m^2)^(1/2) + (((4 + m^2)^(1/2))^2 - 4)^(1/2))/2))^(-n))/(4 + m^2)^(1/2))'); #>>> #<<< is($x->numeric, 144); is($y->numeric, 144); #>>>