For a declared even function, I think Maxima uses
mminusp to decide when to apply the even function
rule. This scheme sometimes fails:
(%i9) f(matrix([-a])) - f(matrix([a]));
(%o9) f(matrix([-a]))-f(matrix([a])) <-- should be 0.
The trig functions use a different scheme. This method works for matrix arguments
I think Maxima should uniformly use the even / odd
function rule code that is in trigi.lisp.