- くだすれFORTRAN(超初心者用)その6
519 :デフォルトの名無しさん[sage]:2014/06/29(日) 12:46:18.15 ID:eLJ+YA5h - > C++なら行列演算クラスライブラリ作って、演算子オーバーロード使えば終わりじゃん。
> まさか、行列積が「・」でできると言うんじゃないだろな? 冗長だけど、〜すれば終わり、程度には書けますぜセンセー。 function dotp_r8(A, x) result(y) double precision, intent(in) :: A(:,:), x(:,:) double precision :: y( size(A,1), size(A,2) ) y = matmul(A, x) end function !----====----====----====----====----====----====----==== program test interface operator(.dot.) function dotp_r8(A, x) result(y) double precision, intent(in) :: A(:,:), x(:,:) double precision :: y( size(A,1), size(A,2) ) end function end interface double precision :: A(2,2), x(2,2), y(2,2) A = reshape( (/1.D0, 1.D0, 1.D0, 1.D0/), (/2,2/) ) x = reshape( (/1.D0, 3.D0, 2.D0, 4.D0/), (/2,2/) ) y = A .dot. x write (*, '(2F8.3)'), transpose(A); print * write (*, '(2F8.3)'), transpose(x); print * write (*, '(2F8.3)'), transpose(y) end
|