/* $Log$ Revision 1.12 2000/01/05 08:20:39 markster Version 0.2.0 from FTP Revision 1.2 2000/01/05 08:20:39 markster Some OSS fixes and a few lpc changes to make it actually work * Revision 1.1 1996/08/19 22:31:56 jaf * Initial revision * */ #ifdef P_R_O_T_O_T_Y_P_E_S extern int irc2pc_(real *rc, real *pc, integer *order, real *gprime, real *g2pass); #endif /* -- translated by f2c (version 19951025). You must link the resulting object file with the libraries: -lf2c -lm (in that order) */ #include "f2c.h" /* ***************************************************************** */ /* IRC2PC Version 48 */ /* $Log$ * Revision 1.12 2000/01/05 08:20:39 markster * Version 0.2.0 from FTP * /* Revision 1.2 2000/01/05 08:20:39 markster /* Some OSS fixes and a few lpc changes to make it actually work /* * Revision 1.1 1996/08/19 22:31:56 jaf * Initial revision * */ /* Revision 1.3 1996/03/20 15:47:19 jaf */ /* Added comments about which indices of array arguments are read or */ /* written. */ /* Revision 1.2 1996/03/14 16:59:04 jaf */ /* Comments added explaining that none of the local variables of this */ /* subroutine need to be saved from one invocation to the next. */ /* Revision 1.1 1996/02/07 14:47:27 jaf */ /* Initial revision */ /* ***************************************************************** */ /* Convert Reflection Coefficients to Predictor Coeficients */ /* Inputs: */ /* RC - Reflection coefficients */ /* Indices 1 through ORDER read. */ /* ORDER - Number of RC's */ /* GPRIME - Excitation modification gain */ /* Outputs: */ /* PC - Predictor coefficients */ /* Indices 1 through ORDER written. */ /* Indices 1 through ORDER-1 are read after being written. */ /* G2PASS - Excitation modification sharpening factor */ /* This subroutine has no local state. */ /* Subroutine */ int irc2pc_(real *rc, real *pc, integer *order, real *gprime, real *g2pass) { /* System generated locals */ integer i__1, i__2; /* Builtin functions */ double sqrt(doublereal); /* Local variables */ real temp[10]; integer i__, j; /* Arguments */ /* $Log$ * Revision 1.12 2000/01/05 08:20:39 markster * Version 0.2.0 from FTP * /* Revision 1.2 2000/01/05 08:20:39 markster /* Some OSS fixes and a few lpc changes to make it actually work /* * Revision 1.1 1996/08/19 22:31:56 jaf * Initial revision * */ /* Revision 1.3 1996/03/29 22:03:47 jaf */ /* Removed definitions for any constants that were no longer used. */ /* Revision 1.2 1996/03/26 19:34:33 jaf */ /* Added comments indicating which constants are not needed in an */ /* application that uses the LPC-10 coder. */ /* Revision 1.1 1996/02/07 14:43:51 jaf */ /* Initial revision */ /* LPC Configuration parameters: */ /* Frame size, Prediction order, Pitch period */ /* Local variables that need not be saved */ /* Parameter adjustments */ --pc; --rc; /* Function Body */ *g2pass = 1.f; i__1 = *order; for (i__ = 1; i__ <= i__1; ++i__) { *g2pass *= 1.f - rc[i__] * rc[i__]; } *g2pass = *gprime * sqrt(*g2pass); pc[1] = rc[1]; i__1 = *order; for (i__ = 2; i__ <= i__1; ++i__) { i__2 = i__ - 1; for (j = 1; j <= i__2; ++j) { temp[j - 1] = pc[j] - rc[i__] * pc[i__ - j]; } i__2 = i__ - 1; for (j = 1; j <= i__2; ++j) { pc[j] = temp[j - 1]; } pc[i__] = rc[i__]; } return 0; } /* irc2pc_ */