Fourier library: Operations in the Fourier domain
polesnzeroes.cc
Go to the documentation of this file.
1 
34 #define TF_POLESNZEROES_CC_VERSION \
35  "TF_POLESNZEROES_CC V1.0 "
36 
37 #include <fourier/polesnzeroes.h>
38 
39 namespace fourier {
40 
41  /*----------------------------------------------------------------------*/
42 
44  {
45  Mpoles.clear(); Mzeroes.clear();
46  Mnumerator=1.; Mdenominator=1.;
47  Mnormal=true;
48  }
49 
50  /*----------------------------------------------------------------------*/
51 
53  {
54  if (isnormal())
55  { Mpoles.push_back(pole); }
56  else
57  { Mzeroes.push_back(pole); }
58  }
59 
60  /*----------------------------------------------------------------------*/
61 
63  {
64  if (isnormal())
65  { Mzeroes.push_back(zero); }
66  else
67  { Mpoles.push_back(zero); }
68  }
69 
70  /*----------------------------------------------------------------------*/
71 
73  {
74  if (isnormal())
75  { Mnumerator *= factor; }
76  else
77  { Mdenominator *= factor; }
78  }
79 
80  /*----------------------------------------------------------------------*/
81 
83  {
84  if (isnormal())
85  { Mdenominator *= factor; }
86  else
87  { Mnumerator *= factor; }
88  }
89 
90  /*----------------------------------------------------------------------*/
91 
93  {
94  const double waterlevel=1.e-30;
95  Tcvalue om = std::abs(omega) > waterlevel ? omega : waterlevel;
96  Tcvalue numerator=Mnumerator;
97  Tcvalue denominator=Mdenominator;
98  Tlist::const_iterator in=Mzeroes.begin();
99  while (in != Mzeroes.end())
100  { numerator *= (om - *in); ++in; }
101  Tlist::const_iterator id=Mpoles.begin();
102  while (id != Mpoles.end())
103  { denominator *= (om - *id); ++id; }
104  return(numerator/denominator);
105  }
106 
107 } // namespace fourier
108 
109 /* ----- END OF polesnzeroes.cc ----- */
poles and zeros representation (prototypes)
void numfactor(const Tcvalue &factor)
Definition: polesnzeroes.cc:72
bool isnormal() const
Definition: polesnzeroes.h:54
Definition: error.cc:44
void denfactor(const Tcvalue &factor)
Definition: polesnzeroes.cc:82
Tcvalue operator()(const double &omega) const
Definition: polesnzeroes.h:73
void setpole(const Tcvalue &pole)
Definition: polesnzeroes.cc:52
void setzero(const Tcvalue &zero)
Definition: polesnzeroes.cc:62
std::complex< double > Tcvalue
Definition: polesnzeroes.h:49