27 #define M_PI 3.141592653589793
30 typedef unsigned char uchar;
32 typedef struct { uchar r, g, b; } rgb;
34 inline bool operator==(
const rgb &a,
const rgb &b) {
35 return ((a.r == b.r) && (a.g == b.g) && (a.b == b.b));
39 inline T abs(
const T &x) {
return (x > 0 ? x : -x); };
42 inline int sign(
const T &x) {
return (x >= 0 ? 1 : -1); };
45 inline T square(
const T &x) {
return x*x; };
48 inline T bound(
const T &x,
const T &min,
const T &max) {
49 return (x < min ? min : (x > max ? max : x));
53 inline bool check_bound(
const T &x,
const T&min,
const T &max) {
54 return ((x < min) || (x > max));
57 inline int vlib_round(
float x) {
return (
int)(x + 0.5F); }
59 inline int vlib_round(
double x) {
return (
int)(x + 0.5); }
61 inline double gaussian(
double val,
double sigma) {
62 return exp(-square(val/sigma)/2)/(sqrt(2*M_PI)*sigma);