FRAMA-C:C程序的模块化分析

2020-10-07 09:22:17

静态int x=1;静态长mc1[8][8],mc2[8][8];/*if(Init){for(;;)}(long m1[8][8],long m2[8]){long i,j,k,tmp1[8][8],tmp2[8][8];/*循环索引和临时矩阵。*/Double ftmp1,ftmp2;static int init=1;static long mc1[8][8],mc2[8][8];/*硬编码余弦矩阵。*/if(Init){for(i=0;i<;8;i++)for(j=0;j<;8;j++){ftmp1=((j=0)?0;static long mc1[8],mc2[8][8];/*硬编码余弦矩阵。*/if(Init){for(i=0;i<;8;i++)for(j=0;j<;8;j++){ftmp1=((j==0)?0.5/sqrt(2.0):0.5)*cos((2.0*i+1.0)*j*th);ftmp2=ftmp1;/*众所周知的公式。Ftmp1和ftmp2的最大绝对值为0.5。*/ftmp1*=(1<;<;nbc1);如果(ftmp1<;0)ftmp1-=0.5;否则ftmp1+=0.5;mc1[i][j]=ftmp1;ftmp2*=(1<;<;nbc2);/*将余弦系数乘以2^NBC2。*ftmp2的最大绝对值是2^(NBC2-1)。*/if(ftmp2<;0)ftmp2-=0.5;否则ftmp2+=0.5;/*表示对称舍入。*/mc2[i][j]=ftmp2;}init=0;}/*然后第一次通过。*/for(i=0;i<;8;i++)for(j=0;j<;8;j++){for(k=0,tmp1[i][j]=0;k<;8;k++)tmp1[i][j]+=mc1[i][k]*m1[k][j];/*矩阵乘积MC1*M1的[i,j]系数。*/tmp1[i][j]>;>;=(NBC1+10-NBI);tmp1[i][j]+=1;/*用于四舍五入。*/tmp1[i][j]>;>;=1;/*最终舍入。现在在NBI比特上表示TMP1[i][j]。*/if(tmp1[i][j]<;-(1<;<;