Вопрос

Я искал приличную документацию по blas и нашел около 315 страниц плотного материала, с которым ctrl-f не работает.Он предоставляет всю информацию о том, какие входные аргументы принимают подпрограммы, но входных аргументов очень МНОГО, и я действительно мог бы использовать какой-нибудь пример кода.Я не могу найти ни одного из них.Я знаю, что они должны быть, иначе никто не смог бы использовать эти библиотеки!

В частности, я использую ATLAS, установленный через macports на mac osx 10.5.8, и я использую gfortran из gcc 4.4 (также установленный через macports).Я пишу на Fortran 90.Я все еще новичок в Fortran, но у меня есть изрядный опыт работы с mathematica, matlab, perl и сценариями shell.

Я хотел бы иметь возможность инициализировать и умножать плотный комплексный вектор на плотную симметричную (но не эрмитову) комплексную матрицу.Элементы матрицы определяются с помощью математической функции индексов - назовем ее f(i,j).

Кто-нибудь может предоставить какой-нибудь код или ссылку на какой-нибудь код?

Это было полезно?

Решение

Начиная с http://www.netlib.org/blas/, вы видите, что процедура, которую вы ищете, - это zgemv, здесь http://www.netlib.org/blas/zgemv.f --- это сложное ('z') умножение матрицы ('m') на вектор ('v').

Если ваши векторы представляют собой просто обычные массивы, т.е.они являются смежными в памяти, тогда аргументы INCX и INCY равны всего 1.Что касается параметра LDA, просто оставьте его равным размеру матрицы.Другие параметры просты.Например:

  implicit none

  integer, parameter :: N=2

  complex*16, parameter :: imag1 = cmplx(0.d0, 1.d0)
  complex*16 :: a(N,N), x(N), y(N)

  complex*16 :: alpha, beta

  a(:,:)=imag1;
  x(:)=1.d0
  y(:)=0.d0

  alpha=1.d0; beta=0.d0

  call zgemv('N',N,N,alpha,a,N,x,1,beta,y,1)


  print*, y


  end      

В общем, каждый раз, когда мне нужна процедура BLAS или LAPACK, я просматриваю параметры в netlib.

Редактировать:приведенный выше код не использует тот факт, что ваша матрица симметрична.Если вы хотите этого, то посмотрите на zsymv рутина.(Спасибо @MRocklin.)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top