일부 Fortran90 코드를 C#으로 변환 중입니다. Fortran77에 대한 지식이 있지만 Fortran90에 익숙하지 않습니다. 다음 코드 줄을 가로 질러서 번역 할 방법이 확실하지 않습니다. 나는이를 생각하고Fortran90에서 C# 로의 변환 문제
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);
내 불확실성이 묵시적가 배열을 초기화 루프 건설을가 존재한다는 사실에서 유래; 즉
A = (/2*I, I = 1,5/)
그러나 나는 제품의 단어를 본 적이 없다. 나는 벡터 또는 행렬 곱셈에 대한 PRODUCT라는 내장 함수가 있음을 알고 있지만 "제품"은 내가 작업중인 코드의 배열이 아니며 intrisic 함수의 구문을 사용합니다. PRODUCT은 마스크를 사용하여 명확하게 내 문장에서이 함수를 사용하지 않습니다.
모든 통찰력이나 도움을 주시면 감사하겠습니다. 고맙습니다. 당신은 부품을 분해하고이를 인쇄 할 경우
당신은 아마 시도해야 코드가하는 일을 이해하고 그것을 맹목적으로 번역하는 것이 아닙니다. – svick
수학적으로 위의 것은'-cos (π * m) * m!'입니다. 따라서 첫 번째 제품은 부호를 반전시키고 두 번째 제품은'm'의 계승을 평가합니다. 'C#'에서는'1-2 * (m % 2)'를 사용하여 각'm'에 대한 부호를 뒤집을 수 있습니다. – ja72
감사합니다. ja72. – Zeos6