aboutsummaryrefslogtreecommitdiff
path: root/src/solvers/h48
diff options
context:
space:
mode:
Diffstat (limited to 'src/solvers/h48')
-rw-r--r--src/solvers/h48/solve.h13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/solvers/h48/solve.h b/src/solvers/h48/solve.h
index ce9f4c4..15ac6ea 100644
--- a/src/solvers/h48/solve.h
+++ b/src/solvers/h48/solve.h
@@ -8,6 +8,7 @@ typedef struct {
8 uint8_t moves[H48_STARTING_MOVES]; 8 uint8_t moves[H48_STARTING_MOVES];
9 int64_t rank; 9 int64_t rank;
10 uint64_t tmask[H48_STARTING_MOVES]; 10 uint64_t tmask[H48_STARTING_MOVES];
11 uint8_t pval;
11} solve_h48_task_t; 12} solve_h48_task_t;
12 13
13typedef struct { 14typedef struct {
@@ -124,6 +125,7 @@ h48_prune_lookup(
124{ 125{
125 uint8_t p, pmin, pe; 126 uint8_t p, pmin, pe;
126 127
128 arg->table_lookups++;
127 p = get_h48_pval_and_min(arg->h48data, coord, &pmin); 129 p = get_h48_pval_and_min(arg->h48data, coord, &pmin);
128 if (p == 0) { 130 if (p == 0) {
129 arg->table_fallbacks++; 131 arg->table_fallbacks++;
@@ -218,7 +220,6 @@ h48_prune_pipeline(
218 continue; 220 continue;
219 221
220 if (prune[m].pi == 0) { 222 if (prune[m].pi == 0) {
221 arg->table_lookups++;
222 prune[m].pi = h48_prune_lookup( 223 prune[m].pi = h48_prune_lookup(
223 prune[m].coord, prune[m].inverse, arg); 224 prune[m].coord, prune[m].inverse, arg);
224 if (prune[m].pi > target) { 225 if (prune[m].pi > target) {
@@ -243,7 +244,6 @@ h48_prune_pipeline(
243 if (prune[m].stop) 244 if (prune[m].stop)
244 continue; 245 continue;
245 246
246 arg->table_lookups++;
247 prune[m].pn = h48_prune_lookup( 247 prune[m].pn = h48_prune_lookup(
248 prune[m].coord, prune[m].cube, arg); 248 prune[m].coord, prune[m].cube, arg);
249 prune[m].stop = prune[m].pn > target; 249 prune[m].stop = prune[m].pn > target;
@@ -387,7 +387,7 @@ STATIC void *
387solve_h48_runthread(void *arg) 387solve_h48_runthread(void *arg)
388{ 388{
389 int i, j; 389 int i, j;
390 uint8_t lastmove, p; 390 uint8_t lastmove;
391 int64_t d, f, nprev; 391 int64_t d, f, nprev;
392 dfsarg_solve_h48_t *dfsarg; 392 dfsarg_solve_h48_t *dfsarg;
393 393
@@ -412,9 +412,8 @@ solve_h48_runthread(void *arg)
412 dfsarg->inverse = inverse(dfsarg->cube); 412 dfsarg->inverse = inverse(dfsarg->cube);
413 413
414 dfsarg->nodes_visited++; 414 dfsarg->nodes_visited++;
415 dfsarg->table_lookups++; 415 if (dfsarg->tasks[i].pval + H48_STARTING_MOVES
416 p = h48_prune_lookup_nocoord(dfsarg->cube, dfsarg); 416 > dfsarg->target_depth)
417 if (p + H48_STARTING_MOVES > dfsarg->target_depth)
418 continue; 417 continue;
419 418
420 dfsarg->lb_normal = 0; 419 dfsarg->lb_normal = 0;
@@ -482,6 +481,8 @@ solve_h48_maketasks(
482 481
483 if (mtarg->nmoves == H48_STARTING_MOVES) { 482 if (mtarg->nmoves == H48_STARTING_MOVES) {
484 tasks[*ntasks].cube = mtarg->cube; 483 tasks[*ntasks].cube = mtarg->cube;
484 tasks[*ntasks].pval =
485 h48_prune_lookup_nocoord(mtarg->cube, solve_arg);
485 memcpy(tasks[*ntasks].moves, mtarg->moves, 486 memcpy(tasks[*ntasks].moves, mtarg->moves,
486 H48_STARTING_MOVES * sizeof(uint8_t)); 487 H48_STARTING_MOVES * sizeof(uint8_t));
487 memcpy(tasks[*ntasks].tmask, mtarg->tmask, 488 memcpy(tasks[*ntasks].tmask, mtarg->tmask,

Generated with cgit - Back to sebastiano.tronto.net