30 #include <pj/compat/high_precision.h>
48 #define PJ_PI 3.14159265358979323846
49 #define PJ_1_PI 0.318309886183790671538
54 #define PJ_ABS(x) ((x) > 0 ? (x) : -(x))
55 #define PJ_MAX(x, y) ((x) > (y)? (x) : (y))
56 #define PJ_MIN(x, y) ((x) < (y)? (x) : (y))
70 #if PJ_HAS_FLOATING_POINT
87 unsigned res = 1, prev;
99 res = (prev + i/prev) >> 1;
100 }
while ((prev+res)>>1 != res);
123 #if PJ_HAS_FLOATING_POINT
137 stat->min = stat->max = val;
140 #if PJ_HAS_FLOATING_POINT
141 delta = val - stat->fmean_;
142 stat->fmean_ += delta/stat->n;
145 stat->mean = (
int) (stat->fmean_ + 0.5);
147 stat->m2_ += (
int)(delta * (val-stat->fmean_));
149 delta = val - stat->mean;
150 stat->mean += delta/stat->n;
151 stat->mean_res_ += delta % stat->n;
152 if (stat->mean_res_ >= stat->n) {
154 stat->mean_res_ -= stat->n;
155 }
else if (stat->mean_res_ <= -stat->n) {
157 stat->mean_res_ += stat->n;
160 stat->m2_ += delta * (val-stat->mean);
173 if (stat->n == 0)
return 0;
174 return (
pj_isqrt((
unsigned)(stat->m2_/stat->n)));
190 stat->m2_ = dev*dev*stat->n;