Для небольших выражений фиксированного размера вы ничего не можете сохранить с помощью SelfAdjointView::rankUpdate
, это скорее добавляет накладные расходы, потому что нужно убедиться, что изменяются только элементы одной половины.В вашем случае простой
A.noalias() += w*w.adjoint();
должен дать почти оптимальный код (добавление .noalias()
позволяет избежать копирования во временную).