00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef ALLPASS_A1
00020 #define ALLPASS_A1
00021 namespace SPUC {
00029
00030
00031
00032
00033
00034 template <class Numeric> class allpass_1a
00035 {
00036 protected:
00037 long size;
00038 Numeric a0;
00039 Numeric adder2;
00040
00041 public:
00042 allpass_1a(Numeric A0, long s=0) : size(s) {
00043 a0 = A0; adder2 = 0;
00044 }
00045
00046 void init(Numeric A0, long s=0) {
00047 a0 = A0;
00048 adder2 = 0;
00049 }
00051 Numeric clock(Numeric input) {
00052 Numeric adder1,next_adder2,mult,out;
00053 adder1 = adder2 - input;
00054 mult = -a0*adder1;
00055 next_adder2 = mult + input;
00056 out = adder2 + mult;
00057 adder2 = next_adder2;
00058 return(out);
00059 }
00060 };
00061 }
00062 #endif