首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >scilab中“C2F”的含义

scilab中“C2F”的含义
EN

Stack Overflow用户
提问于 2015-04-17 01:31:59
回答 1查看 78关注 0票数 1

我下载了scilab源码,我对conv2的工作原理很感兴趣,我想把它翻译成c#代码,但我不知道"C2F(ddot)“的意思和它是如何工作的。如果我将"C2F(ddot)“转换成c或c#代码,我应该如何实现它。下面是scilab中的一些源代码

代码语言:javascript
运行
复制
extern double C2F(ddot)(int *n, double *A, int *iA, double *B, int *iB);
/*--------------------------------------------------------------------------*/
void conv2_separable_R(double *R, int nR, double *C, int mC, double *A, int mA, int nA, double *Out, int mOut, int nOut, int edgM, int edgN, double *T)
{
    int ai = 0, tj = 0, ci = 0, rj = 0; /*current index over A,T,C and R */
    int i = 0, j = 0; /* loop variables*/
    int l = 0;
    int one = 1, minusone = -1;

    for (i = 0; i < mOut; i++ )
    {
        /*Compute  the 1-D conv A(i,:) and C  in T */
        ai = Max(0, i - edgM) ;
        ci = mC - 1 - Max(0, edgM - i);
        l = Min(ci + 1, mA - ai);
        for (j = 0; j < nA; j++ )
        {
            T[j] = C2F(ddot)(&l, A + ai + mA * j, &one, C + ci - l + 1, &minusone);
        }
        /*1-D convolution of T and  R */
        for (j = 0; j < nOut; j++ )
        {
            rj = nR - 1 - Max(0, edgN - j);
            tj = Max(0, j - edgN) ;
            l = Min(rj + 1, nA - tj);
            Out[i + j * mOut] = C2F(ddot)(&l, T + tj, &one, R + rj - l + 1, &minusone);
        }
    }
}

如果我想把代码:“Tj = C2F(ddot)(&l,A+ ai + mA * j,&one,C+ ci -l+ 1,&minusone);”转换成c或c#,我该怎么做?

EN

回答 1

Stack Overflow用户

发布于 2015-12-29 18:15:13

在scilab的源代码中,C2F是一个宏用来从C调用Fortran函数。

它被声明为in machine.h

实际上,这段代码可能会调用the Blass ddot function

它,两个向量的点积是用Fortran做的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29682012

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档