Listing 2
#include "first_ord.h"
void cal_firstorder(struct fstord *filt_1,
double corner, double samplef, double fgain, double type)
{
filt_1->fc = corner;
filt_1->fs = samplef;
filt_1->gain = fgain;
filt_1->alpha = tan(M_PI*corner/samplef);
filt_1->acoef = (1-filt_1->alpha)/(1+filt_1->alpha);
filt_1->bcoef = (1+(type*filt_1->acoef))/2;
filt_1->xn_1 = 0;
filt_1->yn_1 = 0;
filt_1->type = type;
}
double first_order(struct fstord *filt_1, double samplein)
{
filt_1->yn_1 = filt_1->bcoef*samplein +
filt_1->type*(-filt_1->bcoef)*filt_1->xn_1+
filt_1->acoef*filt_1->yn_1;
filt_1->xn_1 = samplein;
return(filt_1->yn_1*filt_1->gain);
}