> I agree this odd/even eval() functionality is not special for sec and csc, but for ALL functions. This should be supported in Function base class.

Maybe, rename _is_reciprocal_even -> _is_even, etc (+ add some TODO commentary around)?