static int nbit( int x ) {
int n = 0;
while(x) { if(x&1) ++n; x >>= 1; }
return n;
}
void main() {
const int D = 5; const int NV = 16; const int NE = 80;
double vNV][D]; int eNE][2];
double pxNV]; double pyNV];
// Magic numbers
const double x1 = -.1464466094; const double y1 = .3535533906;
const double x2 = -.1464466094; const double y2 = -.3535533906;
const double x3 = -.3535533906; const double y3 = .1464466094;
const double y4 = -.1464466094; const double x4 = -.3535533906;
const double x5 = 0; const double y5 = 0;
const double PXD = {x1,x2,x3,x4,x5};
const double PYD = {y1,y2,y3,y4,y5};
int i,j,k,l;
for(k=0,i=0;i<(1<<D);++i) if(nbit(i)%2==0){
for(j=0;j<D;++j) vk][j = (i>>j)&1 ? 1.0 : -1.0;
++k;
}
assert(k==NV);
for(k=0,i=0;i<NV-1;++i) for(j=i+1;j<NV;++j) {
double d = 0;
for(l=0;l<D;++l) { double t = vi][l-vj][l]; d += t*t; }
if(d==8) { ek][0=i; ek][1=j; ++k; }
}
for(i=0;i<NV;++i){
pxi = 0; for(l=0;l<D;++l) pxi += vi][l*PXl];
pyi = 0; for(l=0;l<D;++l) pyi += vi][l*PYl];
}
const double SX = 800; const double SY = 800;
const double B = 64; const double R = 12;
const double sca = std::min((SX-2*B)/2,(SY-2*B)/2);
for(i=0;i<NV;++i) { pxi = B+(pxi+1)*sca; pyi = B+(pyi+1)*sca; }
FILE * fp = fopen("c:\\temp\\Demipenteract_Graph2.svg","w");
fprintf(fp,
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n"
"<svg\n"
"xmlns:svg=\"http://www.w3.org/2000/svg\"\n"
"xmlns=\"http://www.w3.org/2000/svg\"\n"
"version=\"1.0\"\n"
"width=\"%g\"\n" "height=\"%g\"\n"
"id=\"Demipenteract_Graph2\">\n"
,SX,SY
);
fprintf(fp,"<g style=\"stroke:#000000;stroke-width:3;stroke-opacity:1.0;\">\n");
for(i=0;i<NE;++i)
fprintf(fp,
"<line x1=\"%5.1lf\" y1=\"%5.1lf\" x2=\"%5.1lf\" y2=\"%5.1lf\"/>\n"
,pxei][0]],pyei][0]], pxei][1]],pyei][1]]
);
fprintf(fp,"</g>\n");
fprintf(fp,"<g style=\"stroke:#000000;stroke-width:2;fill:#0000E0\">\n");
for(i=0;i<NV;++i)
fprintf(fp,"<circle cx=\"%5.1lf\" cy=\"%5.1lf\" r=\"%5.1lf\"/>\n",pxi],pyi],R);
fprintf(fp,"</g>\n");
fprintf(fp,"</svg>\n");
fclose(fp);
}