9 int num_points[2],
int total_num_procs,
int * num_procs) {
14 int prev_num_procs[2];
16 prev_num_procs[!
flag] = total_num_procs;
17 prev_num_procs[
flag] = 1;
19 float prev_proc_ratio = (float)total_num_procs;
21 for (
int i = total_num_procs-1; i > 0; --i) {
23 if (total_num_procs%i == 0) {
25 float curr_proc_ratio = (float)(i) / (float)(total_num_procs/i);
27 double temp_a = fabs(ratio - curr_proc_ratio);
28 double temp_b = fabs(ratio - prev_proc_ratio);
29 if (temp_a < temp_b) {
30 prev_num_procs[!
flag] = i;
31 prev_num_procs[
flag] = total_num_procs/i;
32 prev_proc_ratio = curr_proc_ratio;
37 num_procs[0] = prev_num_procs[0];
38 num_procs[1] = prev_num_procs[1];