the problem with the "distinct functions" case is if end up doing this:
if is_gain: calc_formula_is_gain(a, b)
else: calc_formula(a, b)
However a completly agree it makes sense with sin/cos functions.