13#include "../round_robin.hpp"
55 using Vec = std::valarray<double>;
56 using Mat = std::valarray<Vec>;
57 using ParallelCut = std::pair<Vec, Vec>;
59 double _fmax = -1
e100;
140 const auto Lp = std::pow(10, -
delta1 / 20);
141 const auto Up = std::pow(10, +
delta1 / 20);
142 const auto Sp = std::pow(10, +
delta2 / 20);
Oracle for FIR lowpass filter design.
Definition lowpass_oracle.hpp:54
auto assess_optim(const Vec &x, double &Spsq) -> std::tuple< ParallelCut, bool >
Assess optimality of the given autocorrelation coefficients.
LowpassOracle(size_t N, double Lpsq, double Upsq, double wpass, double wstop)
Construct a new lowpass oracle object.
auto assess_feas(const Vec &x, const double &Spsq) -> ParallelCut *
Assess feasibility of the given autocorrelation coefficients.
auto operator()(const Vec &x, double &Spsq) -> std::tuple< ParallelCut, bool >
Call operator wrapping assess_optim.
Definition lowpass_oracle.hpp:114
Round-robin index generator over a half-open range [lo, hi)
Definition round_robin.hpp:18
auto invalid_value() -> T
Return an invalid/sentinel value for type T.
Definition cutting_plane.hpp:27
auto create_lowpass_case(size_t N=48) -> std::pair< LowpassOracle, double >
Create a default lowpass filter design case.
Definition lowpass_oracle.hpp:128