return l.elem() * transpose(r.elem());
typename BinaryReturn<RComplex<T1>, RComplex<T2>, OpMultiplyAdj>::Type_t  d;    d.real() = l.real()*transpose(r.real()) + l.imag()*transpose(r.imag()); d.imag() = l.imag()*transpose(r.real()) - l.real()*transpose(r.imag()); return d;
multiplyAdj(const RScalar<T1>& l, const RScalar<T2>& r){  return l.elem() * transpose(r.elem());}