00001 #include "c_lpc10.h"
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef ORIG
00018 #define MLOAD2
00019 #endif
00020
00021
00022 VOID mload( INDEX awinf, FLOAT speech[],
00023 FLOAT phi[ORDER][ORDER], FLOAT psi[ORDER] )
00024 {
00025 INDEX r, c, i;
00026
00027 awinf--;
00028
00029
00030 #ifndef MLOAD2
00031
00032 for (r = 0; r < ORDER; r++) {
00033 phi[r][0] = (FLOAT)0.0;
00034 for (i = ORDER - 1; i < awinf; i++)
00035 phi[r][0] += speech[i] * speech[i - r];
00036 }
00037
00038
00039 psi[ORDER - 1] = (FLOAT)0.0;
00040 for (i = ORDER; i <= awinf; i++)
00041 psi[ORDER - 1] += speech[i] * speech[i - ORDER];
00042
00043
00044 for (r = 1; r < ORDER; r++)
00045 for (c = 1; c <= r; c++)
00046 phi[r][c] = phi[r - 1][c - 1]
00047 - speech[awinf - r] * speech[awinf - c]
00048 + speech[(ORDER - 1) - r] * speech[(ORDER - 1) - c];
00049
00050
00051 for (c = 1; c < ORDER; c++)
00052 psi[c - 1] = phi[c][0]
00053 - speech[ORDER - 1] * speech[(ORDER - 1) - c]
00054 + speech[awinf] * speech[awinf - c];
00055 #else
00056
00057 for (r = 0; r < ORDER; r++) {
00058 phi[r][0] = (FLOAT)0.0;
00059 for (i = ORDER; i <= awinf; i++)
00060 phi[r][0] += speech[i] * speech[i - r];
00061 }
00062
00063
00064 psi[ORDER - 1] = (FLOAT)0.0;
00065 for (i = ORDER; i <= awinf; i++)
00066 psi[ORDER - 1] += speech[i] * speech[i - ORDER];
00067
00068
00069 for (r = 0; r < ORDER-1; r++)
00070 for (c = 0; c <= r; c++)
00071 phi[r+1][c+1] = phi[r][c]
00072 - speech[awinf - r] * speech[awinf - c]
00073 + speech[(ORDER - 1) - r] * speech[(ORDER - 1) - c];
00074
00075
00076 for (c = 1; c < ORDER; c++)
00077 psi[c-1] = phi[c][0];
00078 #endif
00079 }
00080
00081