#define main cli_entry_for_tests #include "slime_bench.cu" #undef main #include void check(bool ok,const char*msg){if(!ok)throw std::runtime_error(msg);} int main(){ uint64_t points=0,groups=0;std::mt19937_64 rng(123456); for(int r=0;r<=64;++r){Config c;c.x=-123;c.z=98;c.radius=r;std::set> actual; for(uint64_t i=0;i cells(count);terms(coord,n,cells.data());uint32_t root=rng()&262143,base=(rng()&131071)&~240U; std::vector prepared(count*2); for(int i=0;i>18;prepared[2*i+1]=((((a^sr::kCombinedXor)&262143)*sr::kJavaMultiplier+11)>>17); for(int j=0;j<16;++j)check(q(prepared.data(),i,base+16*j)==(sr::nextStateFromTerm(root+(uint64_t(base+16*j)<<18),cells[i].term)>>17),"prepared q mismatch");} uint32_t expected=0;for(int j=0;j<16;++j)if(fs::differenceFilter(root+(uint64_t(base+16*j)<<18),cells.data(),count))expected|=1U<