89 xpos(x),
90 mean_sum(0.0),
91 sq_sum(0.0)
92{
93 int16_t best_fake;
95 int32_t dist;
96 double sq_dist;
97 double mean;
98 double total;
99 double factor;
100 FPSEGPT_IT pred_it = prev_list;
101
102 cost = FLT_MAX;
103 pred = nullptr;
106 best_fake = INT16_MAX;
107 mid_cuts = 0;
108 for (pred_it.mark_cycle_pt (); !pred_it.cycled_list (); pred_it.forward ()) {
109 segpt = pred_it.data ();
112 dist = x - segpt->xpos;
113 if (dist >= pitch - pitch_error && dist <= pitch + pitch_error
115 total = segpt->mean_sum + dist;
116 sq_dist = dist * dist + segpt->sq_sum + offset * offset;
117
118 mean = total / region_index;
119 factor = mean - pitch;
120 factor *= factor;
121 factor += sq_dist / (region_index) - mean * mean;
122 if (factor < cost) {
123 cost = factor;
124 pred = segpt;
125 mean_sum = total;
126 sq_sum = sq_dist;
128 }
129 }
130 }
132 pred = nullptr;
133}