Fortran: умножение с матрицами, содержащими только +1 и -1 в качестве записей - PullRequest
1 голос
/ 27 августа 2011

Каким был бы эффективный способ (с точки зрения требований к времени процессора и / или памяти) умножения в fortran9x произвольной матрицы M x N, скажем, A, содержащей только +1 и -1 в качестве своих записей (и полностью заполненный!), с произвольным (плотным) N-мерным вектором, v?

Большое спасибо, Осмо

P.S. Размер A (то есть, M и N) не известен во время компиляции.

Ответы [ 2 ]

2 голосов
/ 27 августа 2011

Я предполагаю, что было бы быстрее просто сделать умножение, а не пытаться избежать умножения, проверяя знак элемента матрицы и добавляя / вычитая соответственно.Следовательно, просто используйте общую оптимизированную процедуру умножения матрицы на вектор.Например, xGEMV от BLAS.

0 голосов
/ 29 августа 2011

В зависимости от сценария использования, если вам придется применять одну и ту же матрицу несколько раз, вы можете разделить ее на две части, одну с положительными записями и одну с отрицательными. Благодаря этому вы можете избежать необходимости умножения, однако это приведет к косвенному направлению, которое может быть более дорогим, чем умножения. Таким образом, решение Яннеба может быть наиболее подходящим.

...