    //
    //  This version of MIN should not be used with expressions with side effects.
    //  Don't try:   min=MIN(x++,y++);
    //
    #define MIN(a,b) (((a) < (b)) ? (a) : (b))
    //
    //  Extra parentheses avoid possible precedence problems with things like
    //  MIN(r>s?5:1,t>u?6:t)
    //  Don't write ugly code like that.
    //  In general it is far safer to write a function.
    //