bugfix: evalpoly macro should evaluate its arguments exactly once