11 #include "TrapFilter.hpp"
119 std::deque<double> cfd_res;
120 for (
unsigned int i=0; i<solver.npoints() && lead_filter<range.
end(); ++i) {
123 cfd_res.push_back((*lead_filter) - (*dely_filter)/pow(2.0,scale_factor+1));
131 while (lead_filter<range.
end()) {
133 cfd_res.push_back((*lead_filter) - (*dely_filter)/pow(2.0,scale_factor+1));
136 if (cfd_res.back() < 0) ++nneg;
140 if (nneg>=solver.npoints()-1)
break;
149 if (nneg!=solver.npoints()-1)
return CFDResult<T>();
153 double trig = solver(cfd_res);
154 int floortrig =
static_cast<int>(::floor(trig));
157 int n_from_end=
static_cast<int>(cfd_res.size())-floortrig;
158 TrIterator<T> trigit = lead_filter.max_extent()-n_from_end;
159 double frac = trig - floortrig;
double fraction
fractional distance to the zero crossing beyond trig iterator
Definition: CFD.hpp:46
TrIterator template class.
Definition: TrIterator.hpp:24
TrIterator< T > end() const
Get value of end iterator.
Definition: TrIterator.hpp:224
A simple fast filter (lead sum - trail sum)
Definition: TrapFilter.hpp:29
TrRange class.
Definition: TrIterator.hpp:173
TrIterator< T > trig
TrIterator pointing to element immediately before zero crossing.
Definition: CFD.hpp:45
Pure abstract base class for root-finding algorithms.
Definition: Solver.h:22
TrIterator< T > begin() const
Get value of begin iterator.
Definition: TrIterator.hpp:222
Definition: AlgoIterator.hpp:12
Result for a CFD computation.
Definition: CFD.hpp:43
Root finder based on linear interpolation.
Definition: Solver.h:45