fibonacci.pl 436 B

12345678910111213141516171819202122232425
  1. #!/usr/bin/perl
  2. use 5.014;
  3. use warnings;
  4. use lib qw(../lib);
  5. use Math::AnyNum qw(:overload tau fibonacci);
  6. my $S = sqrt(5);
  7. my $T = (1 + $S) / 2;
  8. my $U = 2 / (1 + $S);
  9. sub fib_cf {
  10. my ($n) = @_;
  11. (($T**$n - ($U**$n * cos(tau * $n))) / $S)->round;
  12. }
  13. for (my $i = 10 ; $i <= 100 ; $i += 10) {
  14. my $f = fib_cf($i);
  15. print "F($i) = $f\n";
  16. if ($f != fibonacci($i)) {
  17. warn "However, this is incorrect!";
  18. }
  19. }