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;
unsigned pj_math_stat_get_stddev(const pj_math_stat *stat)
Definition: math.h:171
void pj_math_stat_update(pj_math_stat *stat, int val)
Definition: math.h:121
#define PJ_END_DECL
Definition: config.h:1281
void pj_math_stat_init(pj_math_stat *stat)
Definition: math.h:110
unsigned pj_isqrt(unsigned i)
Definition: math.h:85
#define PJ_BEGIN_DECL
Definition: config.h:1280
#define PJ_INLINE(type)
Definition: config.h:1174
void pj_bzero(void *dst, pj_size_t size)
Definition: string.h:763
void pj_math_stat_set_stddev(pj_math_stat *stat, unsigned dev)
Definition: math.h:186
typedef int(PJ_THREAD_FUNC pj_thread_proc)(void *)