min_max_macro implement