Faulhaber's formula: Difference between revisions
Content added Content deleted
(Added c#) |
|||
Line 1,262: | Line 1,262: | ||
f(8) = 1/9 * (n^9 + (9/2)*n^8 + (6/1)*n^7 + (-21/5)*n^5 + (2/1)*n^3 + (-3/10)*n) |
f(8) = 1/9 * (n^9 + (9/2)*n^8 + (6/1)*n^7 + (-21/5)*n^5 + (2/1)*n^3 + (-3/10)*n) |
||
f(9) = 1/10 * (n^10 + (5/1)*n^9 + (15/2)*n^8 + (-7/1)*n^6 + (5/1)*n^4 + (-3/2)*n^2) |
f(9) = 1/10 * (n^10 + (5/1)*n^9 + (15/2)*n^8 + (-7/1)*n^6 + (5/1)*n^4 + (-3/2)*n^2) |
||
</pre> |
|||
=={{header|Phix}}== |
|||
{{trans|C#}} |
|||
<lang Phix>include builtins\pfrac.e -- (0.8.0+) |
|||
function bernoulli(integer n) |
|||
sequence a = {} |
|||
for m=0 to n do |
|||
a = append(a,{1,m+1}) |
|||
for j=m to 1 by -1 do |
|||
a[j] = frac_mul({j,1},frac_sub(a[j+1],a[j])) |
|||
end for |
|||
end for |
|||
if n!=1 then return a[1] end if |
|||
return frac_uminus(a[1]) |
|||
end function |
|||
function binomial(integer n, k) |
|||
if n<0 or k<0 or n<k then ?9/0 end if |
|||
if n=0 or k=0 then return 1 end if |
|||
integer num = 1, |
|||
denom = 1 |
|||
for i=k+1 to n do |
|||
num *= i |
|||
end for |
|||
for i=2 to n-k do |
|||
denom *= i |
|||
end for |
|||
return num / denom |
|||
end function |
|||
procedure faulhaber(integer p) |
|||
string res = sprintf("%d : ", p) |
|||
frac q = {1, p+1} |
|||
for j=0 to p do |
|||
frac bj = bernoulli(j) |
|||
if frac_ne(bj,frac_zero) then |
|||
frac coeff = frac_mul({binomial(p+1,j),p+1},bj) |
|||
string s = frac_sprint(coeff) |
|||
if j=0 then |
|||
if s="1" then |
|||
s = "" |
|||
end if |
|||
else |
|||
if s[1]='-' then |
|||
s[1..1] = " - " |
|||
else |
|||
s[1..0] = " + " |
|||
end if |
|||
end if |
|||
res &= s&"n" |
|||
integer pwr = p+1-j |
|||
if pwr>1 then |
|||
res &= sprintf("^%d", pwr) |
|||
end if |
|||
end if |
|||
end for |
|||
printf(1,"%s\n",{res}) |
|||
end procedure |
|||
for i=0 to 9 do |
|||
faulhaber(i) |
|||
end for</lang> |
|||
{{out}} |
|||
<pre> |
|||
0 : n |
|||
1 : 1/2n^2 + 1/2n |
|||
2 : 1/3n^3 + 1/2n^2 + 1/6n |
|||
3 : 1/4n^4 + 1/2n^3 + 1/4n^2 |
|||
4 : 1/5n^5 + 1/2n^4 + 1/3n^3 - 1/30n |
|||
5 : 1/6n^6 + 1/2n^5 + 5/12n^4 - 1/12n^2 |
|||
6 : 1/7n^7 + 1/2n^6 + 1/2n^5 - 1/6n^3 + 1/42n |
|||
7 : 1/8n^8 + 1/2n^7 + 7/12n^6 - 7/24n^4 + 1/12n^2 |
|||
8 : 1/9n^9 + 1/2n^8 + 2/3n^7 - 7/15n^5 + 2/9n^3 - 1/30n |
|||
9 : 1/10n^10 + 1/2n^9 + 3/4n^8 - 7/10n^6 + 1/2n^4 - 3/20n^2 |
|||
</pre> |
</pre> |
||