Konwertuję niektóre kody Fortran90 na C#. Mam trochę wiedzy o Fortran77, ale nie znam Fortran90. Przeszukałem poniższy wiersz kodu, którego nie jestem pewien, jak tłumaczyć.Konwersja Fortran90 do C#
C1 = real(product((/(-1,i1=1,m-1)/))*product((/(i1,i1=2,m)/)))
myślę to powinno zostać przekształcone jako:
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);
Moja niepewność wynika z faktu, że istnieje dorozumiana zrobić budowę pętli do inicjalizacji tablic; tj
A = (/2*I, I = 1,5/)
ale nigdy nie widziałem słowo „produkt” używane jak w Fortran oświadczenia o którym mowa. Wiem, że istnieje wewnętrzna funkcja mnożenia wektorów lub macierzy o nazwie PRODUCT, ale "produkt" nie jest tablicą w kodzie, z którym pracuję, a składnia funkcji intrisic PRODUCT używa MASK, więc wyraźnie moja instrukcja nie używa tej funkcji.
Każdy wgląd lub pomoc byłaby bardzo doceniana. Dziękuję Ci.
Należy prawdopodobnie spróbować zrozumieć, co robi kod, a nie tylko tłumaczyć go na ślepo. – svick
Matematycznie powyższe jest '-cos (π * m) * m!' Tak więc pierwszy produkt odwraca znak, a drugi ocenia silnię 'm'. W 'C#' możesz użyć '1-2 * (m% 2)', aby odwrócić znak dla każdego 'm'. – ja72
Dziękuję ja72. – Zeos6