gftrunc.c
来自「Proakis《contemporarycommunication system」· C语言 代码 · 共 61 行
C
61 行
/* ============================================================================
* Syntax: c = gftrunc(a, tp)
*GFTRUNC Truncates redundant part of a GF(P) polynomial.
* C = BFTRUNC(A) removes the zero coefficient from the highest order
* terms from a GF(P) polynomial A. If the highest order term coefficient
* is a non-zero number, the output of this function equals the input.
* The resulted GF(P) polynomial C is the same as A with a shortened
* form.
*
* The GF(P) polynomial A is in ascending order, i.e.,
* A = [a_0, a_1, a_2,..., a_(n-1), a_n] represents
* A(X) = a_0 + a_1 X + a_2 X^2 +...+ a_(n-1) X^(n-1) + a_n X^n
* a_i must be an element in GF(P).
*
* See also GFADD, GFDIV, GFTUPLE
* ============================================================================
* Original designed by Wes Wang,
* Jun Wu, The Mathworks, Inc.
* Dec-12, 1995
*
* Copyright (c) 1995-96 by The MAthWorks, Inc.
* All Rights Reserved
* $Revision: 1.1 $ $Date: 1996/04/01 18:14:41 $
* ============================================================================
*/
#include <math.h>
#include "mex.h"
#include "gflib.c"
void mexFunction(int nlhs, Matrix *plhs[], int nrhs, Matrix *prhs[])
{
int len_a, len_tp, i;
int *paa, *Iwork;
double *pa, *pc;
pa = mxGetPr(prhs[0]);
len_a = mxGetN(prhs[0])*mxGetM(prhs[0]);
if(nrhs > 1)
len_tp = mxGetN(prhs[1])*mxGetM(prhs[1]);
else
len_tp = 0;
paa = (int *)mxCalloc(len_a, sizeof(int));
Iwork = (int *)mxCalloc(len_a, sizeof(int));
for (i=0; i < len_a; i++){
if(pa[i] == -mexGetInf() )
paa[i] = -Inf;
else
paa[i] = (int)pa[i];
}
gftrunc(paa, &len_a, len_tp, Iwork);
pc = mxGetPr(plhs[0] = mxCreateFull(1, len_a, 0));
for(i=0; i < len_a; i++){
if( paa[i] == -Inf )
pc[i] = -mexGetInf();
else
pc[i] = (double)paa[i];
}
return;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?