#!/usr/bin/perl
use utf8;
use 5.014;
use lib qw(../lib);
use Math::Bacovia qw(:all);
use Math::AnyNum qw(bernfrac binomial);
sub faulhaber_s_formula {
my ($p, $n) = @_;
my $sum = Sum();
foreach my $j (0 .. $p) {
$sum += Number(binomial($p + 1, $j) * bernfrac($j)) * $n**($p + 1 - $j);
}
$sum * Fraction(1, ($p + 1));
}
my $n = Symbol('n');
foreach my $p (0 .. 10) {
say "F($p) = ", faulhaber_s_formula($p, $n)->simple->pretty;
}