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/)
が、私は、問題のFortranの文のように使用単語「製品」を見たことがありません。私は知っているベクトルまたは行列の乗算PRODUCTと呼ばれる本質的な関数がありますが、 "製品"は私が働いているコードの配列ではないintrisic関数の構文PRODUCTは非常に明確に私の文はこの関数を使用していません。
洞察または助けがあれば幸いです。ありがとうございました。
あなたはおそらく試してみてくださいコードが何をしているのかを理解し、それを盲目的に翻訳するだけではありません。 – svick
数学的には、上記は '-cos(π* m)* m!'です。したがって、最初のプロダクトは符号を反転し、2番目のプロダクトは 'm'の階乗を評価します。 'C#'では '1-2 *(m%2)'を使って 'm 'の記号を反転させることができます。 – ja72
ja72ありがとうございます。 – Zeos6