#include #include typedef double _Complex C; typedef double R; C dilog(C); static R const pi = 3.141592653589793238; static C c(R x, R y){C a; __real__ a = x; __imag__ a = y; return a;} static C w(C z){return z - 1/z;} R Vol(R th[6]){C a[6]; {int j=6; while(j--) a[j] = cexp(c(0, th[j]));} C a03 = a[0]*a[3], a14 = a[1]*a[4], a25 = a[2]*a[5]; C q0 = a03 + a14 + a25 + a03*a14*a25 + a[0]*a[1]*a[5] + a[0]*a[2]*a[4] + a[1]*a[2]*a[3] + a[3]*a[4]*a[5], q1 = - w(a[0])*w(a[3]) - w(a[1])*w(a[4]) - w(a[2])*w(a[5]), q2 = 1/a03 + 1/a14 + 1/a25 + 1/(a03*a14*a25) + 1/(a[0]*a[1]*a[5]) + 1/(a[0]*a[2]*a[4]) + 1/(a[1]*a[2]*a[3]) + 1/(a[3]*a[4]*a[5]); C z = (-q1 + csqrt(q1*q1 - 4*q0*q2))/(2*q2); R s = 0; {int j=6; while(j--) s += th[j];} C ll = 0; {int j=3; while(j--) ll += clog(a[j])*clog(a[j+3]);} C L = 0.5*(dilog(z) + dilog(a03*a14*z) + dilog(a03*a25*z) + dilog(a14*a25*z) - dilog(-z/(a[0]*a[1]*a[2])) - dilog(-z/(a[0]*a[4]*a[5])) - dilog(-z/(a[1]*a[3]*a[5])) - dilog(-z/(a[2]*a[3]*a[4])) + ll); return -creal(L) + pi*(cimag(clog(-q2)) + 0.5*s) - 1.5*pi*pi;} #include R a[6]; void s() {int y=6; while(y--) a[y] = pi/2;} void sj(R b){int j=6; while(j--){s(); a[j] = b; printf("one dim ang, %d %e\n%20.15f\n%20.15f\n", j, b, pi*b/4, Vol(a));}} int main(){ s(); printf("%20.15f\n%20.15f\n", pi*pi/8, Vol(a)); sj(1.); sj(1.5); sj(2.); return 0;} /* 1.233700550136170 1.233700550136168 one dim ang, 5 1.000000e+00 0.785398163397448 0.074716812240217 one dim ang, 4 1.000000e+00 0.785398163397448 0.074716812240219 one dim ang, 3 1.000000e+00 0.785398163397448 0.074716812240219 one dim ang, 2 1.000000e+00 0.785398163397448 0.074716812240219 one dim ang, 1 1.000000e+00 0.785398163397448 0.074716812240219 one dim ang, 0 1.000000e+00 0.785398163397448 0.074716812240219 one dim ang, 5 1.500000e+00 1.178097245096172 1.067022639087769 one dim ang, 4 1.500000e+00 1.178097245096172 1.067022639087769 one dim ang, 3 1.500000e+00 1.178097245096172 1.067022639087769 one dim ang, 2 1.500000e+00 1.178097245096172 1.067022639087769 one dim ang, 1 1.500000e+00 1.178097245096172 1.067022639087769 one dim ang, 0 1.500000e+00 1.178097245096172 1.067022639087769 one dim ang, 5 2.000000e+00 1.570796326794897 2.229864886519620 one dim ang, 4 2.000000e+00 1.570796326794897 2.229864886519620 one dim ang, 3 2.000000e+00 1.570796326794897 2.229864886519620 one dim ang, 2 2.000000e+00 1.570796326794897 2.229864886519620 one dim ang, 1 2.000000e+00 1.570796326794897 2.229864886519620 one dim ang, 0 2.000000e+00 1.570796326794897 2.229864886519620 */