X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~yarrgweb/git?a=blobdiff_plain;f=yarrg%2Frssearch.c;fp=yarrg%2Frssearch.c;h=0286584dddaa5f5045ce392a2b3e2350f119b0f8;hb=39c06791f9cefbedf3438c2a661716142c889bee;hp=fa43d8939d26a250c61c3108c9b30194d79c058a;hpb=2d200537436a446c0fd7d62921f5a5fec231a696;p=ypp-sc-tools.web-live.git diff --git a/yarrg/rssearch.c b/yarrg/rssearch.c index fa43d89..0286584 100644 --- a/yarrg/rssearch.c +++ b/yarrg/rssearch.c @@ -39,6 +39,12 @@ static Neighbour *get_neighbours(int isle) { static PotentialResult ***strat_base; +static inline int isle2arch(int isle) { + int arch= islandid2arch[isle]; + assert(arch>=0); + return arch; +} + static double process_route(int nports, int totaldist, double overestimate_excepting_tail) { int i; @@ -51,11 +57,11 @@ static double process_route(int nports, int totaldist, debugf(" %d",ports[i]); debugf("\n"); - int finalisle= ports[nports-1]; - int midisle= ports[nports/2]; + int finisle= ports[nports-1]; int finarch= isle2arch(finisle); + int midisle= ports[nports/2]; int midarch= isle2arch(midisle); - PotentialResult **strat_fin= ONDEMAND(strat_base[finalisle], islandtablesz); - PotentialResult *strat= ONDEMAND(strat_fin[midisle], 1); + PotentialResult **strat_fin= ONDEMAND(strat_base[finarch], narches); + PotentialResult *strat= ONDEMAND(strat_fin[midarch], 1); if (nports>=2) { int pair[2], i; @@ -94,7 +100,7 @@ static double process_route(int nports, int totaldist, debugf(" SOMEHOW BEST\n"); - fildebugf("final %3d mid %3d ",finalisle,midisle); + fildebugf("final %d:%3d mid %d:%3d ",finarch,finisle,midarch,midisle); #define CHK(absperl) \ fildebugf(#absperl " %15f", absperl); \ @@ -136,7 +142,7 @@ static void recurse(int last_isle, } void search(int start_isle, PotentialResult ****strat_base_io) { - strat_base= ONDEMAND(*strat_base_io, islandtablesz); + strat_base= ONDEMAND(*strat_base_io, narches); recurse(start_isle,0,0,1e6); }