#include "graph.h"
#include <conio.h>
#include <stdio.h>
#include <math.h>
#define XDIM 320
#define YDIM 320
float fX[XDIM + 1], fY[YDIM + 1];
void main (void)
{
/*
******** PROGRAM NO.1 DIGITAL BANDPASS FILTER ********
*/
int iCount;
clearscreen (_GCLEARSCREEN);
printf ("PROGRAM l: Digital bandpass fi1ter\n"); printf ("Press any key to start...\n\n");
/*
***** GENERATE INPUT SIGNAL, AND LOAD INTO ARRAY X *****
*/
for (iCount = 1; iCount <= XDIM; iCount++)
fX
[iCount
] = sin (3.141593 * (float)iCount *
(0.05 + 0.0005 * (f1oat)iCount));
/*
****** ESTIMATE OUTPUT SIGNAL OF RECURSIVE FILTER *******
*/
fY[l] = 0.0;
fY[2] = 0.0;
for (iCount = 3; iCount <= YDIM; iCount++)
fY[iCount] = 1.5 *
fY[iCount - 1] - 0.85 *
fY[iCount — 2] + fX[iCount];
/*
******* PLOT INPUT AND 0u·1·1>UT SIGNALS ON SCREEN *********
*/
_setvideomode( _MRES16COLOR );
for (iCount = 1; iCount <= XDIM; iCount++)
{
_moveto (iCount, 50);
_lineto (iCount, (int)(50.0 - fX[iCount] * 25.0 + O.5));
_moveto (iCount, 150);
_lineto (iCount, (1nt)(150.0 - fY[iCount] * 4.0 + O.5));
}
_setvideomode( _DEFAULTMODE );
/*
·k·k**********·k*·k·k1:**~k·k·k·k1:*1:***·k*~A··k**·k**************%*11******
*/
}
I2luY2x1ZGUgImdyYXBoLmgiCiNpbmNsdWRlIDxjb25pby5oPgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPG1hdGguaD4KCiNkZWZpbmUgWERJTSAzMjAKI2RlZmluZSBZRElNIDMyMAoKZmxvYXQgZlhbWERJTSArIDFdLCBmWVtZRElNICsgMV07Cgp2b2lkIG1haW4gKHZvaWQpCnsKLyoKKioqKioqKiogUFJPR1JBTSBOTy4xIERJR0lUQUwgQkFORFBBU1MgRklMVEVSICoqKioqKioqCiovCgppbnQgaUNvdW50OwpjbGVhcnNjcmVlbiAoX0dDTEVBUlNDUkVFTik7CnByaW50ZiAoIlBST0dSQU0gbDogRGlnaXRhbCBiYW5kcGFzcyBmaTF0ZXJcbiIpOwpwcmludGYgKCJQcmVzcyBhbnkga2V5IHRvIHN0YXJ0Li4uXG5cbiIpOwpnZXRjaCgpOwoKLyoKKioqKiogR0VORVJBVEUgSU5QVVQgU0lHTkFMLCBBTkQgTE9BRCBJTlRPIEFSUkFZIFggKioqKioKKi8KCmZvciAoaUNvdW50ID0gMTsgaUNvdW50IDw9IFhESU07IGlDb3VudCsrKQoJZlhbaUNvdW50XSA9IHNpbiAoMy4xNDE1OTMgKgoJCQkJCShmbG9hdClpQ291bnQgKgoJCQkJCSgwLjA1ICsgMC4wMDA1ICogKGYxb2F0KWlDb3VudCkpOwoKLyoKKioqKioqIEVTVElNQVRFIE9VVFBVVCBTSUdOQUwgT0YgUkVDVVJTSVZFIEZJTFRFUiAqKioqKioqCiovCgpmWVtsXSA9IDAuMDsKZllbMl0gPSAwLjA7Cgpmb3IgKGlDb3VudCA9IDM7IGlDb3VudCA8PSBZRElNOyBpQ291bnQrKykKCWZZW2lDb3VudF0gPSAxLjUgKgoJZllbaUNvdW50IC0gMV0gLSAwLjg1ICoKCWZZW2lDb3VudCDigJQgMl0gKyBmWFtpQ291bnRdOwoKCi8qCioqKioqKiogUExPVCBJTlBVVCBBTkQgMHXCtzHCtzE+VVQgU0lHTkFMUyBPTiBTQ1JFRU4gKioqKioqKioqCiovCgpfc2V0dmlkZW9tb2RlKCBfTVJFUzE2Q09MT1IgKTsKCmZvciAoaUNvdW50ID0gMTsgaUNvdW50IDw9IFhESU07IGlDb3VudCsrKQp7CglfbW92ZXRvIChpQ291bnQsIDUwKTsKCV9saW5ldG8gKGlDb3VudCwgKGludCkoNTAuMCAtIGZYW2lDb3VudF0gKiAyNS4wICsgTy41KSk7CgoJX21vdmV0byAoaUNvdW50LCAxNTApOwoJX2xpbmV0byAoaUNvdW50LCAoMW50KSgxNTAuMCAtIGZZW2lDb3VudF0gKiA0LjAgKyBPLjUpKTsKfQoKZ2V0Y2goKTsKCl9zZXR2aWRlb21vZGUoIF9ERUZBVUxUTU9ERSApOwovKgrCt2vCt2sqKioqKioqKioqwrdrKsK3a8K3azE6Kip+a8K3a8K3a8K3azE6KjE6KioqwrdrKn5BwrfCt2sqKsK3ayoqKioqKioqKioqKioqJSoxMSoqKioqKgoqLwp9Cgo=