MODULE fun USE de_opt, ONLY : prec CONTAINS REAL(KIND=prec) FUNCTION f(x) IMPLICIT NONE REAL(KIND=prec), DIMENSION(:), INTENT(IN) :: x REAL(KIND=prec), PARAMETER :: d = 4000.0 INTEGER :: i, n REAL(KIND=prec), DIMENSION(SIZE(x)) :: ival n = SIZE(x) ival = (/ (i, i = 1, n) /) f = SUM((x - 100.0)**2)/d f = f - PRODUCT(COS((x - 100.0)/SQRT(ival))) + 1.0 END FUNCTION f END MODULE fun