On Wed, Nov 20, 2013 at 09:06:25AM -0800, Pablo Puente wrote:
>  > +    _reciprocal_of = None       # mandatory, to be defined in subclass
>  > +    _is_reciprocal_even = None  # optional, to be defined in subclass
>  > +    _is_reciprocal_odd = None   # optional, to be defined in subclass
> 
>    I needed even and odd properties for
>    ReciprocalTrigonometricFunction.eval() to correctly convert sec(-x) into
>    sec(x).

The question here is why both _is_reciprocal_even/odd.  For example,
_is_reciprocal_even = False means _is_reciprocal_odd=True and vice versa.
If _is_even is None, then _is_odd is None too...

There is a something redundant here.

Second, reciprocal functions share even/odd properties with
sin/cos/etc.  I think, it's better to imlement these properties
in the TrigonometricFunction.