У меня есть подпрограмма Fortran, которая использует подпрограммы BLAS dgemm, dgemv и ddot, которые вычисляют матричную матрицу, матрицу * вектор и векторный вектор. У меня есть m * m матриц и m * 1 векторов. В некоторых случаях m = 1. Похоже, что эти подпрограммы не работают хорошо в этих случаях. Они не дают ошибок, но, по-видимому, существует некоторая численная нестабильность результатов. Так что я должен написать что-то вроде:Подпрограммы BLAS dgemm, dgemv и ddot не работают со скалярами?
if(m>1) then
vtuni(i,t) = yt(i,t) - ct(i,t) - ddot(m, zt(i,1:m,(t-1)*tvar(3)+1), 1, arec, 1)
else
vtuni(i,t) = yt(i,t) - ct(i,t) - zt(i,1,(t-1)*tvar(3)+1)*arec(1)
Так что мой фактический вопрос, я прав, что те, BLAS»Подпрограммы не работает должным образом, когда т = 1 или есть просто что-то не так в моем коде? Может ли компилятор повлиять на это? Я использую gfortran.