matmul multiplies a rank-2 matrix by a rank-1 vector when their shapes line up.

Program

Play the program to scale a vector before multiplying it by a small matrix.

matrix_vector_product.f90
program matrix_vector_product_demo
    implicit none
    integer :: matrix(2, 2)
    integer :: vector(2)
    integer :: scale
    integer :: result(2)

    matrix = reshape([2, 1, 3, 4], [2, 2])
    vector = [1, 2]
    scale = 
    result = matmul(matrix, vector * scale)
    print '(I0, 1X, I0)', result(1), result(2)
end program matrix_vector_product_demo
program matrix_vector_product_demo
    implicit none
    integer :: matrix(2, 2)
    integer :: vector(2)
    integer :: scale
    integer :: result(2)

    matrix = reshape([2, 1, 3, 4], [2, 2])
    vector = [1, 2]
    scale = 
    result = matmul(matrix, vector * scale)
    print '(I0, 1X, I0)', result(1), result(2)
end program matrix_vector_product_demo
program matrix_vector_product_demo
    implicit none
    integer :: matrix(2, 2)
    integer :: vector(2)
    integer :: scale
    integer :: result(2)

    matrix = reshape([2, 1, 3, 4], [2, 2])
    vector = [1, 2]
    scale = 
    result = matmul(matrix, vector * scale)
    print '(I0, 1X, I0)', result(1), result(2)
end program matrix_vector_product_demo
matmul `matmul(matrix, vector)` performs a matrix-vector product.
shape match The vector length must match the matrix column count.
scaled vector Whole-array arithmetic can prepare inputs before the matrix calculation.