#define D0(X) ((X)?1:0)
#define D1(X) ((X)?(1+D0((X)/10)):0)
#define D2(X) ((X)?(1+D1((X)/10)):0)
#define D3(X) ((X)?(1+D2((X)/10)):0)
#define D4(X) ((X)?(1+D3((X)/10)):0)
#define D5(X) ((X)?(1+D4((X)/10)):0)
#define D6(X) ((X)?(1+D4((X)/10)):0)
#define D(X) D6((int)(X))
#define N0(N,X) (((X)+N/(X))/2)
#define N1(N,X) (((N0(N,X))+N/N0(N,X))/2)
#define N2(N,X) (((N1(N,X))+N/N1(N,X))/2)
#define N3(N,X) (((N2(N,X))+N/N2(N,X))/2)
#define Q(X) N3(X, (X)/((5<<(D(X)))))
int main()
{
#define x 20001.153
printf("(%f)^2==%f", Q(x), Q(x)*Q(x));
return 0;
}