+ //printf("worker %d: area %d on gate type %d and depth %d larger then best area %d continueing\n",data->worker_id,current_circuit->area,i,depth,data->best_area);
int tautology = detect_tautology(current_circuit,in1,in2,i,data); //0: nothing found, 1: direct tautology, 2:unconnected device may still be connected.
if(tautology==1){
continue; //Found already unnecessary combo and should skip it
}
int valid = 0;
if(tautology!=2){ //There is an unconnected gate if this holds true
valid = 1;
for (int y=0; y < (1 << data->num_inputs); y++){ //CHECK IF IT IS VALID
if(evaluate_circuit(data->gate_types, current_circuit, &data->truth_table[y*data->num_inputs])!=data->target_outputs[y]){ //Check if it satisfies the equation
valid = 0;
}
}
}
//valid circuit add area
current_circuit->area += gate_types[i].area; // Example area increment (modify as needed)
+ if(data->num_circuit[0]%10000000 == 0){
+ data->num_circuit[1] += 1;
+ data->num_circuit[0] = 0;
+ printf("At circuit number %d M in worker %d current best_area %d and tested area %d\n",data->num_circuit[1],data->worker_id,data->best_area,current_circuit->area);