📄 v34trans.c
字号:
sprintf(err_msg, "A = %d; ", A); mexPrintf(err_msg);}#endif /* B */ V_bef = 0; R_bef = (int)z8[A]; V_now = 0; R_now = R_bef; while ((R[0] - R_now >= 0) & (A - V_now >= 0)) { R_bef = R_now; V_bef = V_now; V_now = V_now + 1;; R_now = (int)z8[A]; for (i = 0; i < V_now; i++) { R_now = R_now + (int)(g4[i] * g4[A - i]); } } if (A < V_now) { R[1] = R[0] - R_bef; B = V_bef; } else if (R[0] - R_now >= 0) { R[1] = R[0] - R_now; B = V_now; } else { R[1] = R[0] - R_bef; B = V_bef; }#ifdef MATLAB_MEX_FILEif (0) { char err_msg[256]; sprintf(err_msg, "B = %d; ", B); mexPrintf(err_msg);}#endif /* C */ R[2] = R[1] % (int)g4[B]; R[3] = (R[1] - R[2]) / (int)g4[B]; V_bef = 0; R_bef = 0; V_now = 0; R_now = R_bef; while ((R[2] - R_now >= 0) & (B - V_now >= 0)) { R_bef = R_now; V_bef = V_now; V_now = V_now + 1;; R_now = 0; for (i = 0; i < V_now; i++) { R_now = R_now + (int)(g2[i] * g2[B - i]); } } if (B < V_now) { R[4] = R[2] - R_bef; C = V_bef; } else if (R[2] - R_now >= 0) { R[4] = R[2] - R_now; C = V_now; } else { R[4] = R[2] - R_bef; C = V_bef; }#ifdef MATLAB_MEX_FILEif (0) { char err_msg[256]; sprintf(err_msg, "C = %d; ", C); mexPrintf(err_msg);}#endif /* D */ V_bef = 0; R_bef = 0; V_now = 0; R_now = R_bef; while ((R[3] - R_now >= 0) & (A - B - V_now >= 0)) { R_bef = R_now; V_bef = V_now; V_now = V_now + 1; R_now = 0; for (i = 0; i < V_now; i++) { R_now = R_now + (int)(g2[i] * g2[A - B - i]); } } if (A-B < V_now) { R[5] = R[3] - R_bef; D = V_bef; } else if (R[3] - R_now >= 0) { R[5] = R[3] - R_now; D = V_now; } else { R[5] = R[3] - R_bef; D = V_bef; }#ifdef MATLAB_MEX_FILEif (0) { char err_msg[256]; sprintf(err_msg, "D = %d; ", D); mexPrintf(err_msg);} #endif /* E */ E = R[4] % (int)g2[C]; /* F */ F = (R[4] - E) / (int)g2[C]; /* G */ G = R[5] % (int)g2[D]; /* H */ H = (R[5] - G) / (int)g2[D]; /* calculate mijk[0-7] */ /* mi0k */ if (C < rate_M) { mijk[0] = E; mijk[1] = C - mijk[0]; } else { mijk[1] = rate_M - 1 - E; mijk[0] = C - mijk[1]; } /* mi1k */ if ((B - C) < rate_M) { mijk[2] = F; mijk[3] = B - C - mijk[2]; } else { mijk[3] = rate_M - 1 - F; mijk[2] = B - C - mijk[3]; } /* mi2k */ if (D < rate_M) { mijk[4] = G; mijk[5] = D - mijk[4]; } else { mijk[5] = rate_M - 1 - G; mijk[4] = D - mijk[5]; } /* mi3k */ if ((A - B - D) < rate_M) { mijk[6] = H; mijk[7] = A - B - D - mijk[6]; } else { mijk[7] = rate_M - 1 - H; mijk[6] = A - B - D - mijk[7]; }#ifdef MATLAB_MEX_FILEif (0) { char err_msg[256]; sprintf(err_msg, "Caller\n"); mexPrintf(err_msg); sprintf(err_msg, "A = %d; B = %d; C = %d; D = %d; E = %d; F = %d; G = %d; H = %d \n",A, B, C, D, E, F, G, H ); mexPrintf(err_msg); sprintf(err_msg, "R[0]=%d; R[1]=%d; R[2]=%d; R[3]=%d; R[4]=%d; R[5]=%d \n",R[0],R[1],R[2],R[3],R[4],R[5]); mexPrintf(err_msg); sprintf(err_msg, "mijk[0]=%d; mijk[1]=%d; mijk[2]=%d; mijk[3]=%d; mijk[4]=%d; mijk[5]=%d; mijk[6]=%d; mijk[7]=%d \n",mijk[0],mijk[1],mijk[2],mijk[3],mijk[4],mijk[5],mijk[6],mijk[7]); mexPrintf(err_msg); }#endif *last_updata = 1; *out_count = 0;if (1) { char err_msg[256]; V_bef = 0; for (i = 0; i < 8; i++) { V_bef = mijk[i] > V_bef ? mijk[i] : V_bef; }#ifdef MATLAB_MEX_FILE if (V_bef > 11) { sprintf(err_msg, "A=%d; B=%d; C=%d; D=%d; E=%d; F=%d; G=%d; H=%d \n", A, B, C, D, E, F, G, H ); mexPrintf(err_msg); sprintf(err_msg, "R(0)=%d; R(1)=%d; R(2)=%d; R(3)=%d; R(4)=%d; R(5)=%d \n",R[0],R[1],R[2],R[3],R[4],R[5]); mexPrintf(err_msg); for (i = 0; i < 8; i++) { sprintf(err_msg, "mijk(%d)=%d; ", i, mijk[i]); mexPrintf(err_msg); } sprintf(err_msg, "\n "); mexPrintf(err_msg); }#endif} } else if (u[rate_b] <= 0) { *last_updata = 0; } if ((u[rate_b+1] > 0) && (*last_output == 0)) { if (*out_count < 8) { long base_count, k, tmp, i; k = *out_count % 2; base_count = (*out_count / 2) * (3 + 2 * rate_q) + rate_K; tmp = base_count + 3 + k * rate_q; for (i = 0; i < rate_q; i++) { y[i] = data_scrm[tmp + i]; } y[rate_q] = mijk[*out_count]; for (i = 0; i < 3; i++) { y[i + rate_q + 1] = data_scrm[base_count + i]; } y[rate_q + 4] = k;#ifdef MATLAB_MEX_FILEif (0) { char err_msg[256]; sprintf(err_msg, "Time=%f; y[0]=%f; base_count = %d; \n", ssGetT(S), y[rate_q], *out_count ); mexPrintf(err_msg);} #endif } /* at the very end */ *out_count = *out_count + 1; *last_output = 1; } else { if (u[rate_b + 1] <= 0) *last_output = 0; if (ssGetT(S) == 0){ int i; /* the initial condition before anything is out. */ for (i = 0; i < rate_q + 5; i++) { y[i] = 0; } } }}/* * mdlUpdate - computes the discrete states of the S-Function */static void mdlUpdate(x, u, S, tid) double *x, *u; SimStruct *S; int tid;{}/* * mdlDerivatives - computes the derivatives of the S-Function */static void mdlDerivatives(dx, x, u, S, tid) double *dx, *x, *u; SimStruct *S; int tid;{}/* * mdlTerminate - called at termination of model execution. */static void mdlTerminate(S) SimStruct *S;{}#ifdef MATLAB_MEX_FILE /* Is this file being compiled as a MEX-file? */#include "simulink.c" /* MEX-File interface mechanism */#else#include "cg_sfun.h" /* Code generation registration function */#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -