1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
program main
implicit none
call find_fit(expression)
contains
real function expression(x) result(y)
real, intent(in) :: x(3)
y = x(1) + x(2) + x(3)
end function expression
subroutine find_fit(expr)
real :: x(3)
real :: y
interface
real function expr(x) result(y)
real, intent(in) :: x(3)
end function expr
end interface
x(1) = 1.0
x(2) = 2.0
x(3) = 3.0
y = expr(x)
if (abs(y - 6.0) > 1e-7) error stop
print *, y
end subroutine find_fit
end program main
|