Есть ли в Fortran эквивалент распаковки списка аргументов в Python? - PullRequest
1 голос
/ 20 марта 2020

Я пишу свою первую программу численной оптимизации (метод Ньютона) и мою первую программу на Фортране. Я начал с Python, чтобы понять первую проблему, и теперь я портирую на Фортран для работы над другой. (По одной за раз, верно?)

В Python есть удобный способ передачи аргументов функции: распаковка списка , например:

def f(x_1, x_2):
    """Just a function with two arguments."""
    return math.sqrt(x_1 ** 2 + x_2 ** 2)

...
f(*[4, 3])  # calls f with parameters 4 and 3
# output: 5

Есть ли в Фортране нечто похожее на этого звездного оператора? Я помещаю свои двумерные точки в матрицу, и я пытаюсь выучить самый обычный способ передачи одного из моих двухточечных «векторов» в функцию для оценки. Это выглядит примерно так:

! "double precision", using SELECTED_REAL_KIND
REAL(KIND=dp), DIMENSION(100, 2) :: iterates = 0.0_dp

! f expects two REALs
REAL(KIND=dp) :: first_value = f(iterates(1, :))

1 Ответ

2 голосов
/ 20 марта 2020

Нет.

Вы можете заставить свою функцию принимать вектор. Если функция из зависимости, вы можете написать оболочку:

function f_array_input(x)
  real(kind=dp), intent(in) :: x(2)
  real(kind=dp) :: f_array_input
  f_array_input = f(x(1), x(2))
end function

(

...