Проблема преобразования Fortran90 в C #

Я конвертирую код Fortran90 в C #. У меня есть некоторые знания Fortran77, но я не знаком с Fortran90. Я наткнулся на следующую строку кода, которую не знаю, как ее перевести.

C1 = real(product((/(-1,i1=1,m-1)/))*product((/(i1,i1=2,m)/)))

Я думаю, это должно быть преобразовано как:

int product1 = -1; int product2 = 1;
for (int i1 = 1 ; i1 <= (m-1); i1++)
{
    product1 *= -1;
}
for (int i2 = 2, i2 <= m; i2++)
{
    product2 *= i2;
}
float C1 = (float)(product1 * product2);

Моя неуверенность проистекает из того факта, что существует подразумеваемая конструкция цикла do для инициализации массивов; то есть

A = (/2*I, I = 1,5/)

, но я никогда не видел, чтобы слово «продукт» использовалось в рассматриваемом выражении Fortran. Я знаю, что существует внутренняя функция для векторного или матричного умножения, называемая PRODUCT, но "product" не является массивом в коде, с которым я работаю, а синтаксис внутренней функции PRODUCT использует MASK, поэтому ясно, что мой оператор не использует эту функцию.

Мы будем благодарны за любое понимание или помощь. Спасибо.

5
задан David Heffernan 14 February 2012 в 00:50
поделиться