// Radix exchange sort; in memory. // sorts words from b to e inclussive. #define C const void rdx(int *b, int *e, unsigned int C bit){ if(b>1); rdx(E, e, bit>>1); } } #define R double R sq(R x){return x*x;} #define ss 10000000 #include #include R sqrt(R); static R v(int j){return j<2 ? j+1 : 3.1415926535897932*v(j-2)*2/j;} static R fac(int m){return m == 0 ? 1 : m*fac(m-1);} static R ttmno2(int m){return m < 2 ? (m ? 1/sqrt(2) : 1) : ttmno2(m-2)/2;} static R pow(R x, int m){return m ? x*pow(x, m-1) : 1;} int main(){R sc = 1/(R)0x7fffffff; int n=25; while(n--) {int in = 0, s = ss; R C th = 1+1/(R)n; R C r = sqrt(th/2); while (s--){int a[n+2]; {int j = n; while(j--) a[j+1] = random();} rdx(a+1, a+n, 1<<30); a[0] = 0; a[n+1] = 0x7fffffff; if(1){int j=n+1; while(j--) if(a[j+1]