`DOT_PRODUCT` — 벡터 내적
DOT_PRODUCT — 벡터 내적
두 벡터의 내적(dot product)을 구하고 싶을 때가 있어요. 물리 계산이나 선형대수에서 빠질 수 없는 연산이죠. DOT_PRODUCT는 크기가 같은 두 1차원 배열(벡터)의 내적을 계산해 주는 내장 함수예요.
본문
시그니처
RESULT = DOT_PRODUCT(VECTOR_A, VECTOR_B)
설명
DOT_PRODUCT(VECTOR_A, VECTOR_B)는 두 벡터 VECTOR_A와 VECTOR_B의 내적 곱을 계산해요. 두 벡터는 수치형 또는 논리형일 수 있고, 랭크 1 배열이어야 하며 크기가 같아야 해요.
- 벡터가
INTEGER,REAL또는UNSIGNED이면 결과는SUM(VECTOR_A*VECTOR_B)예요. - 벡터가
COMPLEX이면 결과는SUM(CONJG(VECTOR_A)*VECTOR_B)예요. - 벡터가
LOGICAL이면 결과는ANY(VECTOR_A .AND. VECTOR_B)예요. VECTOR_A나VECTOR_B중 하나가UNSIGNED이면 다른 쪽도 반드시UNSIGNED여야 해요.
클래스
변형 함수(Transformational function)
인자
VECTOR_A— 타입이 수치형 또는LOGICAL, 랭크 1.VECTOR_B가UNSIGNED이면VECTOR_A도 부호 없는(unsigned) 타입이어야 해요.VECTOR_B—VECTOR_A가 수치형이면 수치형,LOGICAL이면LOGICAL. 랭크 1 배열.VECTOR_A가UNSIGNED이면VECTOR_B도 부호 없는 타입이어야 해요.
반환값
인자가 수치형이면 반환값은 INTEGER, REAL, COMPLEX 또는 UNSIGNED인 수치형 스칼라예요. 인자가 LOGICAL이면 반환값은 .TRUE. 또는 .FALSE.예요.
예제
program test_dot_prod
integer, dimension(3) :: a, b
a = (/ 1, 2, 3 /)
b = (/ 4, 5, 6 /)
print '(3i3)', a
print *
print '(3i3)', b
print *
print *, dot_product(a,b)
end program test_dot_prod
두 배열의 각 원소를 곱해 모두 더한 결과를 돌려줘요. 즉 1*4 + 2*5 + 3*6 = 32가 출력돼요.
표준
Fortran 90 이상이며, UNSIGNED에 대한 지원은 GNU 확장이에요.