加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – Fortran函数说明

发布时间:2020-12-16 00:03:25 所属栏目:百科 来源:网络整理
导读:我在Fortran中有这个功能,我试图用C#重新编码它 C **************************************************************** C FUNCTION POLY C***************************************************************** FUNCTION POLY(N,A,X) DIMENSION A(N) C POLY =
我在Fortran中有这个功能,我试图用C#重新编码它

C **************************************************************** 
C    FUNCTION   POLY 
C***************************************************************** 
      FUNCTION POLY(N,A,X) 
      DIMENSION A(N) 
C
      POLY    = 0. 
      L       = N 
      DO 1 K  = 1,N 
      POLY    = POLY*X + A(L) 
1     L       = L-1 
      RETURN 
      END 
C*****************************************************************

我发现DIMENSION A(N)创建了N个值的向量,但是我们已经从函数参数中得到了一个变量A,这是否意味着数组值都等于A?如果是,那么A(N)的用途是什么.
顺便说一句,任何人都可以解释这个功能是做什么的,所以我可以在C#中重新实现它

解决方法

FUNCTION POLY(N,X)      ! implicitly real (float) function poly(int n,int a,real x)
      DIMENSION A(N)            ! shape A as 1d array of n values in this scope
C                               ! say nothing (blank comment)
      POLY    = 0.              ! initialise return variable to float value 0
      L       = N               ! set L (implicitly integer) to n
      DO 1 K  = 1,N             ! for(int k=1; k<=n; ++k)
      POLY    = POLY*X + A(L)   !    update return variable
1     L       = L-1             !    decrement L
      RETURN                    ! return current value for poly
      END

所以用c语法:

float poly(int n,float x) {
    // redim a(n)
    float result = 0;
    int l = n;
    for(int k=1; k <= n; ++k) {
        result = result*x + a(l);
        --l;
    }
    return result;
}

不翻译的位是将A重新定义为数组.在C中,您将传递一个指针并将其用作数组,而在C/C++#中,您可能会传递具有自己的length属性的类似矢量的结构.

在C#中,使用列表:

float poly(List<float> coeffs,float x) {
    float result = 0;
    for(int i=coeffs.Count-1; i >= 0; --i) {
        result = result*x + coeff[i];
    }
    return result;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读