📄 random.c
字号:
/*$Log$Revision 1.15 2004/06/26 03:50:14 marksterMerge source cleanups (bug #1911)Revision 1.14 2003/02/12 13:59:15 matteomer feb 12 14:56:57 CET 2003Revision 1.1.1.1 2003/02/12 13:59:15 matteomer feb 12 14:56:57 CET 2003Revision 1.2 2000/01/05 08:20:39 marksterSome OSS fixes and a few lpc changes to make it actually work * Revision 1.2 1996/08/20 20:41:32 jaf * Removed all static local variables that were SAVE'd in the Fortran * code, and put them in struct lpc10_decoder_state that is passed as an * argument. * * Removed init function, since all initialization is now done in * init_lpc10_decoder_state(). * * Revision 1.1 1996/08/19 22:30:49 jaf * Initial revision **//* -- translated by f2c (version 19951025). You must link the resulting object file with the libraries: -lf2c -lm (in that order)*/#include "f2c.h"#ifdef P_R_O_T_O_T_Y_P_E_Sextern integer random_(struct lpc10_decoder_state *st);#endif/* ********************************************************************** *//* RANDOM Version 49 *//* $Log$ * Revision 1.15 2004/06/26 03:50:14 markster * Merge source cleanups (bug #1911) * * Revision 1.14 2003/02/12 13:59:15 matteo * mer feb 12 14:56:57 CET 2003 * * Revision 1.1.1.1 2003/02/12 13:59:15 matteo * mer feb 12 14:56:57 CET 2003 * * 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.2 1996/08/20 20:41:32 jaf * Removed all static local variables that were SAVE'd in the Fortran * code, and put them in struct lpc10_decoder_state that is passed as an * argument. * * Removed init function, since all initialization is now done in * init_lpc10_decoder_state(). * * Revision 1.1 1996/08/19 22:30:49 jaf * Initial revision * *//* Revision 1.3 1996/03/20 16:13:54 jaf *//* Rearranged comments a little bit, and added comments explaining that *//* even though there is local state here, there is no need to create an *//* ENTRY for reinitializing it. *//* Revision 1.2 1996/03/14 22:25:29 jaf *//* Just rearranged the comments and local variable declarations a bit. *//* Revision 1.1 1996/02/07 14:49:01 jaf *//* Initial revision *//* ********************************************************************* *//* Pseudo random number generator based on Knuth, Vol 2, p. 27. *//* Function Return: *//* RANDOM - Integer variable, uniformly distributed over -32768 to 32767 *//* This subroutine maintains local state from one call to the next. *//* In the context of the LPC10 coder, there is no reason to reinitialize *//* this local state when switching between audio streams, because its *//* results are only used to generate noise for unvoiced frames. */integer random_(struct lpc10_decoder_state *st){ /* Initialized data */ integer *j; integer *k; shortint *y; /* System generated locals */ integer ret_val;/* Parameters/constants *//* Local state *//* The following is a 16 bit 2's complement addition, *//* with overflow checking disabled */ j = &(st->j); k = &(st->k); y = &(st->y[0]); y[*k - 1] += y[*j - 1]; ret_val = y[*k - 1]; --(*k); if (*k <= 0) { *k = 5; } --(*j); if (*j <= 0) { *j = 5; } return ret_val;} /* random_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -