#include "filters.h" #include LPFilter_Frac* New_LP_Frac(float pre_factor) { LPFilter_Frac* self; self = (LPFilter_Frac*)malloc(sizeof(LPFilter_Frac)); if(self != NULL) { self->pre_data = 0; if(pre_factor > 0 && pre_factor < 1) self->pre_factor = pre_factor; else free(self); return self; } else { free(self); return NULL; } } float LP_Frac_Update(LPFilter_Frac* self, float new_data) { float output_data = 0; output_data = self->pre_factor * self->pre_data + (1 - self->pre_factor) * new_data; //update new data self->pre_data = output_data; //save data this time as the previous data for next time return output_data; }