#ifndef __macros_h__ #define __macros_h__ static inline int max(int a, int b) {return (a < b) ? b : a;} static inline int min(int a, int b) {return (a > b) ? b : a;} static inline double dmax(double a, double b) {return (a < b) ? b : a;} static inline double dmin(double a, double b) {return (a > b) ? b : a;} static inline float fmax(float a, float b) {return (a < b) ? b : a;} static inline float fmin(float a, float b) {return (a > b) ? b : a;} static int clip(int x, int m, int M){return max(m, (min(M, x)));} static double dclip(double x, double m, double M){return dmax(m, (fmin(M, x)));} static float fclip(float x, float m, float M){return fmax(m, (fmin(M, x)));} static double dinterpolate(double left, double right, double fraction){ return left * (1.0 - fraction) + right * fraction; } #endif