diff --git a/modules/juce_dsp/filter_design/juce_FilterDesign.cpp b/modules/juce_dsp/filter_design/juce_FilterDesign.cpp index 6ffb31e65a..c6a50ab091 100644 --- a/modules/juce_dsp/filter_design/juce_FilterDesign.cpp +++ b/modules/juce_dsp/filter_design/juce_FilterDesign.cpp @@ -270,24 +270,19 @@ typename FIR::Coefficients::Ptr for (int i = 0; i < hh.size(); ++i) c[i] = (float) hh[i]; - double NN; + auto NN = [&] + { + if (n % 2 == 0) + return 2.0 * result->getMagnitudeForFrequency (0.5, 1.0); - if (n % 2 == 0) - { - NN = 2.0 * result->getMagnitudeForFrequency (0.5, 1.0); - } - else - { auto w01 = std::sqrt (kp * kp + (1 - kp * kp) * std::pow (std::cos (MathConstants::pi / (2.0 * n + 1.0)), 2.0)); - if (std::abs (w01) <= 1.0) - { - auto om01 = std::acos (-w01); - NN = -2.0 * result->getMagnitudeForFrequency (om01 / MathConstants::twoPi, 1.0); - } - else - NN = 2.0 * result->getMagnitudeForFrequency (0.5, 1.0); - } + if (std::abs (w01) > 1.0) + return 2.0 * result->getMagnitudeForFrequency (0.5, 1.0); + + auto om01 = std::acos (-w01); + return -2.0 * result->getMagnitudeForFrequency (om01 / MathConstants::twoPi, 1.0); + }(); for (int i = 0; i < hh.size(); ++i) c[i] = static_cast ((A * hn[i] + B * hnm[i]) / NN);