#include <stdio.h>
/* This programme calculates the action density of the SU(3) caloron with
   the three constituents in the plane with z=0 such that the constituent
   coordinates add up to zero. */

main(argc,argv)
int argc;
char **argv;
{
        double dAdAlnpsi();
        double yx1,yx2,yx3,yy1,yy2,yy3,yz1,yz2,yz3,nu1,nu2,x,y,z,t;
        void message();

        if(argc != 11)message();
        if(sscanf(argv[1],"%le",&nu1)!= 1)message();
        if(sscanf(argv[2],"%le",&nu2)!= 1)message();
        if(sscanf(argv[3],"%le",&yx1)!= 1)message();
        if(sscanf(argv[4],"%le",&yx2)!= 1)message();
        if(sscanf(argv[5],"%le",&yy1)!= 1)message();
        if(sscanf(argv[6],"%le",&yy2)!= 1)message();
        if(sscanf(argv[7],"%le",&x)!= 1)message();
        if(sscanf(argv[8],"%le",&y)!= 1)message();
        if(sscanf(argv[9],"%le",&z)!= 1)message();
        if(sscanf(argv[10],"%le",&t)!= 1)message();
        if(nu1<0.0 || nu1>1.0 || nu2<0.0 || nu2>1.0 || nu1+nu2>1){
          printf("nu1=%lg or nu2=%lg or nu3=%lg not between 0 and 1\n",
                  nu1,nu2,1-nu1-nu2);
          exit();
        }
        yz1=yz2=yz3=0.0;
        yx3= -yx1-yx2;
        yy3= -yy1-yy2;

     	printf("nu1=%lg, r1=(%lg,%lg,%lg), ",nu1,yx1,yy1,yz1);
     	printf("nu2=%lg, r2=(%lg,%lg,%lg), ",nu2,yx2,yy2,yz2);
     	printf("nu3=%lg, r3=(%lg,%lg,%lg), \n",1-nu1-nu2,yx3,yy3,yz3);
     	printf("S(%lg,%lg,%lg,%lg)=%16.10E\n",x,y,z,t,(-0.5)*
          dAdAlnpsi(nu1,nu2,yx1,yx2,yx3,yy1,yy2,yy3,yz1,yz2,yz3,x,y,z,t));
        return(0);
}
     
void message(){
        fprintf(stderr,"usage: su3 nu1 nu2 x1 x2 y1 y2 x y z t\n");
        exit();
}

