1. Matrix can handle complex numbers.
For example, you can define a complex matrix like this:
matrix<complex> mComplex = { 1+2i, 3+4i };
2. To multiply 2 matrices, you may use a member function of MatrixBase class--DotMultiply().
The following code shows how to multiply two complex matrix with this function.
void test4()
{
matrix<complex> m1 = { 1+2i, 3+4i };
matrix<complex> m2 = { {4+2i}, {5+4i} };
m2.DotMultiply( m1 );
complex cc=m2[0][0];
out_double("Real part = ", cc.m_re);
out_double("Imaginary part = ", cc.m_im);
cc=m2[0][1];
out_double("Real part = ", cc.m_re);
out_double("Imaginary part = ", cc.m_im);
}