! 例題 8-8 スカラ三重積・ベクトル三重積 [内部手続き関数 ] PROGRAM ex8_8 IMPLICIT NONE REAL, DIMENSION ( 1 : 3 ) :: a, b, c, bc PRINT *, "Input three vector's components:" READ *, a READ *, b READ *, c bc = vector_prod( b, c ) PRINT '( " SP3 =", F10.3 )', scalar_prod( a, bc ) PRINT '( " VP3 = (", 3F10.3, ")" )', vector_prod( a, bc ) CONTAINS FUNCTION vector_prod( x, y ) RESULT ( z ) IMPLICIT NONE REAL, DIMENSION ( 1 : 3 ), INTENT ( IN ) :: x, y REAL, DIMENSION ( 1 : 3 ) :: z z( 1 ) = x( 2 ) * y( 3 ) - x( 3 ) * y( 2 ) z( 2 ) = x( 3 ) * y( 1 ) - x( 1 ) * y( 3 ) z( 3 ) = x( 1 ) * y( 2 ) - x( 2 ) * y( 1 ) END FUNCTION vector_prod FUNCTION scalar_prod( x, y ) RESULT ( sp ) IMPLICIT NONE REAL, DIMENSION( 1 : 3 ), INTENT ( IN ) :: x, y REAL :: sp sp = x( 1 ) * y( 1 ) + x( 2 ) * y( 2 ) + x( 3 ) * y( 3 ) END FUNCTION scalar_prod END PROGRAM ex8_8