-static inline int bclip(int &iv, int imn, int imx) {
- return iv < imn ? imn : iv > imx ? imx : iv;
+#define bc_always_inline __attribute__ ((__always_inline__)) inline
+
+static bc_always_inline int bmin(int a, int b) { return a < b ? a : b; }
+static bc_always_inline float bmin(float a, float b) { return a < b ? a : b; }
+static bc_always_inline double bmin(double a, double b) { return a < b ? a : b; }
+static bc_always_inline int bmax(int a, int b) { return a > b ? a : b; }
+static bc_always_inline float bmax(float a, float b) { return a > b ? a : b; }
+static bc_always_inline double bmax(double a, double b) { return a > b ? a : b; }
+
+static bc_always_inline int iclip(int iv, int imn, int imx) {
+ return iv < imn ? imn : iv > imx ? imx : iv;