Я конвертирую код 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, поэтому ясно, что мой оператор не использует эту функцию.
Мы будем благодарны за любое понимание или помощь. Спасибо.