Fortran到C的翻译-神秘的一分法
我在FORTRAN77中遇到了以下代码 (): 我想知道除以1的情况。!原因是什么 我已经翻译成C语言如下:Fortran到C的翻译-神秘的一分法,c,fortran,C,Fortran,我在FORTRAN77中遇到了以下代码 (): 我想知道除以1的情况。!原因是什么 我已经翻译成C语言如下: double Update = 1.; for ( int k = 0; k < 12; ++k ) Update += alpha(i+1, k+1, x, effN) * (R[k]-1.) /*/ 1.*/; // CHECK! Y *= Update; double Update=1。; 对于(int k=0;k
double Update = 1.;
for ( int k = 0; k < 12; ++k )
Update += alpha(i+1, k+1, x, effN) * (R[k]-1.) /*/ 1.*/; // CHECK!
Y *= Update;
double Update=1。;
对于(int k=0;k<12;++k)
Update+=alpha(i+1,k+1,x,effN)*(R[k]-1.)/*/1.*/;//检查!
Y*=更新;
对吗
备注:由于C中的数组索引不同,与原始代码相比,arrax索引中有+1或-1的偏移(我希望在索引定义以及作为参数传递给函数的索引中保持与原始代码中相同的值)
谢谢你的帮助!
阿兰除以
1。
没有我能辨别的效果。红利中的-1.
已经要求它可能需要的任何类型的促销
可以想象,在某些特定平台上,当股息具有异常值(即无穷大或NaN)时,分割会触发某种期望行为,但这将是高度特定于平台的
同样可以想象的是,这种划分是对早期版本的代码的保留,在早期版本中,它实际上起到了一些作用
无论哪种方式,您的翻译似乎与Fortran版本相同,除了您所介绍的内容中没有任何东西可以证明将函数
alpha()
的第一个参数从i
更改为i+1这是一种将结果强制为浮点的低级方法吗?哦,如上所述,1。是一个double,因此它将返回一个double。。。假设R是某种类型的int数组,它将转换为double,但assignmentR也是浮点数组,alpha()也会返回浮点date@JonathanLeffler,我很清楚Fortran数组的索引是从1开始的。这与函数参数没有直接关系。@JonathanLeffler,这可能是翻译确实需要i+1
,但从问题中提出的任何内容都无法得出这样的结论。是的,它有理由,但从这里给出的一小段代码中无法识别原因。无论如何,谢谢你的回答!
double Update = 1.;
for ( int k = 0; k < 12; ++k )
Update += alpha(i+1, k+1, x, effN) * (R[k]-1.) /*/ 1.*/; // CHECK!
Y *= Update;