когда вы делаете сумму, как:
A=A+B
Эйгена можно непосредственно использовать переменную A, чтобы выполнить операцию, так как каждая ячейка матрицы может быть вычислена без ущерба для расчета других клеток Ai,j=Ai,j+Bi,j
когда вы делаете продукт, как:
A=A*B
вы не можете сделать то же самое, так как если вы начнете рассчет й заменить A0,0
- то вы не можете вычислить другой A0,j
так по умолчанию - при выполнении присваивания работы продукта, временная структура создаются и назначение сделано позже (см noalias).
Когда вы используете noalias
в терминах источника задания, вы «гарантируете», что назначенная переменная не является частью условий продукта и что безопасно не использовать временную структуру.
Это происходит из-за того, что Eigen «ленится» при выполнении операций (что означает, что он делает это только тогда, когда это необходимо, а не мгновенно, как мы привыкли в стандартном C++) - noalias
- это способ сказать Eigen что это также безопасно делать при выполнении операции с продуктом и присвоении его переменной.