if (printing) printf("%15lld c>e |", evaluations);
- COST( 3e2, line_bending_cost(vs->a));
- COST( 1e3, edge_length_variation_cost(vs->a));
- COST( 0.2e3, rim_proximity_cost(vs->a));
- COST( 1e8, noncircular_rim_cost(vs->a));
+ if (XBITS==3) {
+ COST( 3e2, line_bending_cost(vs->a));
+ COST( 1e3, edge_length_variation_cost(vs->a));
+ COST( 0.2e3, rim_proximity_cost(vs->a));
+ COST( 1e8, noncircular_rim_cost(vs->a));
+ stop_epsilon= 1e-6;
+ } else if (XBITS==4) {
+ COST( 3e2, line_bending_cost(vs->a));
+ COST( 3e3, edge_length_variation_cost(vs->a));
+ COST( 3.8e1, rim_proximity_cost(vs->a)); // 5e1 is too much
+ // 2.5e1 is too little
+ // 0.2e1 grows compared to previous ?
+ // 0.6e0 shrinks compared to previous ?
+ COST( 1e12, noncircular_rim_cost(vs->a));
+ stop_epsilon= 1e-5;
+ } else {
+ abort();
+ }
if (printing) printf("| total %# e |", energy);
double delta= atan2(magnD(axb) + axb_epsilon, dotprod(a,b));
double cost= pow(delta,exponent_r);
- if (!e && !(qi & YMASK))
+ if (!e && !(qi & ~XMASK))
cost *= 10;
total_cost += cost;