Вы должны использовать встроенную функцию sum
, которая принимает массив и уменьшает его путем сложения.Встроенные функции довольно оптимизированы, поэтому обычно их рекомендуется применять.
Существует множество синтаксических способов достижения этого, и многие из них имеют встроенный sum
.Вот некоторые из них (я использую ту же запись, что и ваше изображение, а не из вашего образца):
implicit none
integer, parameter :: m=5,n=3
integer :: i, j, x(0:n), f(0:n), b(0:m)
x = [0,1,2,3]
f = [0,1,2,3]
! using array implied-do construction inside sum
do i = 0,m
b(i) = sum([(x(j)**i * f(j), j=0,n)])
end do
print *, b ! output: 6 14 36 98 276 794
! using Fortran's whole array operations
do i = 0,m
b(i) = sum(x**i * f)
end do
print *, b ! output: 6 14 36 98 276 794
! using implied-do constructor outside, without explicit do
b = [(sum(x**i * f), i=0,m)]
print *, b ! output: 6 14 36 98 276 794
end