Felix,
Welcome to Maxima.
> Obviously the result is wrong if - as described in the
> documentation - "conjugate" is a function that returns the complex
> conjugate of its argument.
Well... there are several issues here.
First of all, Maxima is case-sensitive (except -- inconsistently -- for
built-in functions), so the function "conjugate" is not the same as the
function "CONJUGATE". (I hope we will be fixing this for Maxima 6.0.)
It turns out that the EIGEN package defines upper-case "CONJUGATE", not
lower-case "conjugate", which is undefined.
Secondly, the CONJUGATE function in the Eigen package is not a
mathematical function -- it is an expression transformation routine
(like Substitute or Part). That is, it takes an expression and
*syntactically* takes its complex conjugate.
Third, CONJUGATE is simple-minded, and doesn't know anything about the
behavior of functions, assuming that all functions F have the property
that conj(F(x))=F(conj(x)) -- which is true of analytic functions, but
not of all non-analytic functions. It also implicitly assumes that all
variables (*including* those declared as COMPLEX) are real. In fact, if
you look at its definition, you'll see that all it does is to substitute
-%I for %I in the expression.
Fourth, since CONJUGATE is not built-in, the rest of the system
(including Realpart, Imagpart, etc.) doesn't know anything about it. As
far as they're concerned, even a noun-form CONJUGATE is just a generic
unknown function. What's more, Maxima assumes that ALL unknown
functions are real-valued (even with complex arguments). To make
Conjugate into a first-class built-in function, the rest of the system
would have to know more about it....
What exactly is the problem you're trying to solve?
-s