Я прочитал статью об оптимизации вложенного произведения матриц, используя динамическое программирование, и хотел посмотреть, как это реализовано в boost :: uBLAS.
Я не уверен, что понял документацию (они говорят об этом в самом конце страницы), но, похоже, они решают эту проблему. Когда вы пишете R = prod(A, prod(B,C));
, библиотека вычисляет A x (B x C)
или (A x B) x C
в зависимости от размеров A
, B
и C
.
Как этого достичь? Как библиотека может «сдвинуть скобки»? При написании такой строки кода я думал, что аргументы prod
будут оценены, а затем будет запущена функция.
В FAQ упоминается понятие шаблонов выражений. Это связано?