> geo:= proc(u,b) you may easily check that geo(u-1,u)=geo(u,u) for all u ...!
local R;

R:=2^((u-b)/2);

return(evalf[20](1/(1-2^(-b-1))/R^2*product(1+R/2^(i/2),i=0..300) ));

end;


george:= proc(u)

return(geo(u,ceil(u)));

end;


geoN:= proc(u)
=geo(u,u)
return(evalf[20](1/(1-2^(-u-1))*product(1+1/2^(i/2),i=0..300) ));

end;


geoM:= proc(u)
=geo(u,u+1)
return(evalf[25](2/(1-2^(-u-2))*product(1+1/2^(i/2),i=1..301) ));

end;

>

geo := proc (u, b) local R; R := 2^(1/2*u-1/2*b); return evalf[20]((product(1+R/2^(1/2*i), i = 0 .. 300))/((1-2^(-b-1))*R^2)) end proc

george := proc (u) return geo(u, ceil(u)) end proc

geoN := proc (u) return evalf[20]((product(1+1/2^(1/2*i), i = 0 .. 300))/(1-2^(-u-1))) end proc

geoM := proc (u) return evalf[25](2*(product(1+1/2^(1/2*i), i = 1 .. 301))/(1-2^(-u-2))) end proc

> geoN(0); geoN(10); geoN(20); geoN(30); geoN(40); geoN(50); geoN(60); geoN(70); geoN(80); geoN(90); geoN(100);

30.793374645650386310

15.404208909206641711

15.396694664541322716

15.396687329994834398

15.396687322832194758

15.396687322825199993

15.396687322825193162

15.396687322825193155

15.396687322825193155

15.396687322825193155

15.396687322825193155

> plot([george(x),geoN(x)],x=0..20); actual curve in RED, and upper bound in GREEN...

[Plot]

> plot(geoN(x),x=0..30);

[Plot]

> plot3d(geo(x,x+e),x=4..30,e=0..1); for each x, the max is reached at b=u+1. Remember geo(u,u+1)=geo(u+1,u+1). So the curse is essentially symmetric for large enough values of u (u>30).

[Plot]

>