enforcing combined parameter limits also in *reset_state

This commit is contained in:
Stefano D'Angelo 2024-07-02 12:08:55 +02:00
parent 7b53b045a9
commit eef7f35dc5
6 changed files with 81 additions and 62 deletions

View File

@ -29,6 +29,9 @@
* <ul>
* <li>Version <strong>1.1.1</strong>:
* <ul>
* <li>Enforced limits on cutoff and high_gain also in
* <code>bw_hs1_reset_state*()</code> and clarified
* documentation.</li>
* <li>Added debugging checks from <code>bw_hs1_process()</code> to
* <code>bw_hs1_process_multi()</code>.</li>
* <li>Added debugging checks in <code>bw_hs1_process_multi()</code> to
@ -226,10 +229,9 @@ static inline void bw_hs1_set_cutoff(
*
* `value` must be finite and positive.
*
* By the time `bw_hs1_reset_coeffs()`, `bw_hs1_update_coeffs_ctrl()`,
* `bw_hs1_update_coeffs_audio()`, `bw_hs1_process1()`, `bw_hs1_process()`,
* or `bw_hs1_process_multi()` is called, `cutoff * bw_sqrtf(high_gain)` must
* be in [`1e-6f`, `1e12f`].
* By the time `bw_hs1_reset_\*()`, `bw_hs1_update_coeffs_\*()`, or
* `bw_hs1_process\*()` is called, `cutoff * bw_sqrtf(high_gain)` must be in
* [`1e-6f`, `1e12f`].
*
* Default value: `1e3f`.
*
@ -270,10 +272,9 @@ static inline void bw_hs1_set_high_gain_lin(
*
* Valid range: [`1e-30f`, `1e30f`].
*
* By the time `bw_hs1_reset_coeffs()`, `bw_hs1_update_coeffs_ctrl()`,
* `bw_hs1_update_coeffs_audio()`, `bw_hs1_process1()`, `bw_hs1_process()`,
* or `bw_hs1_process_multi()` is called, `cutoff * bw_sqrtf(high_gain)` must
* be in [`1e-6f`, `1e12f`].
* By the time `bw_hs1_reset_\*()`, `bw_hs1_update_coeffs_\*()`, or
* `bw_hs1_process\*()` is called, `cutoff * bw_sqrtf(high_gain)` must be in
* [`1e-6f`, `1e12f`].
*
* Default value: `1.f`.
*
@ -288,10 +289,9 @@ static inline void bw_hs1_set_high_gain_dB(
*
* Valid range: [`-600.f`, `600.f`].
*
* By the time `bw_hs1_reset_coeffs()`, `bw_hs1_update_coeffs_ctrl()`,
* `bw_hs1_update_coeffs_audio()`, `bw_hs1_process1()`, `bw_hs1_process()`,
* or `bw_hs1_process_multi()` is called, `cutoff * bw_sqrtf(high_gain)` must
* be in [`1e-6f`, `1e12f`].
* By the time `bw_hs1_reset_\*()`, `bw_hs1_update_coeffs_\*()`, or
* `bw_hs1_process\*()` is called, `cutoff * bw_sqrtf(high_gain)` must be in
* [`1e-6f`, `1e12f`].
*
* Default value: `0.f`.
*
@ -453,6 +453,7 @@ static inline float bw_hs1_reset_state(
BW_ASSERT(coeffs != BW_NULL);
BW_ASSERT_DEEP(bw_hs1_coeffs_is_valid(coeffs));
BW_ASSERT_DEEP(coeffs->state >= bw_hs1_coeffs_state_reset_coeffs);
BW_ASSERT_DEEP(coeffs->cutoff * bw_sqrtf(coeffs->high_gain) >= 1e-6f && coeffs->cutoff * bw_sqrtf(coeffs->high_gain) <= 1e12f);
BW_ASSERT(state != BW_NULL);
BW_ASSERT(bw_is_finite(x_0));
@ -479,6 +480,7 @@ static inline void bw_hs1_reset_state_multi(
BW_ASSERT(coeffs != BW_NULL);
BW_ASSERT_DEEP(bw_hs1_coeffs_is_valid(coeffs));
BW_ASSERT_DEEP(coeffs->state >= bw_hs1_coeffs_state_reset_coeffs);
BW_ASSERT_DEEP(coeffs->cutoff * bw_sqrtf(coeffs->high_gain) >= 1e-6f && coeffs->cutoff * bw_sqrtf(coeffs->high_gain) <= 1e12f);
BW_ASSERT(state != BW_NULL);
#ifndef BW_NO_DEBUG
for (size_t i = 0; i < n_channels; i++)

View File

@ -29,6 +29,9 @@
* <ul>
* <li>Version <strong>1.1.1</strong>:
* <ul>
* <li>Enforced limits on cutoff and high_gain also in
* <code>bw_hs2_reset_state*()</code> and clarified
* documentation.</li>
* <li>Added debugging checks from <code>bw_hs2_process()</code> to
* <code>bw_hs2_process_multi()</code>.</li>
* <li>Added debugging checks in <code>bw_hs2_process_multi()</code> to
@ -230,10 +233,9 @@ static inline void bw_hs2_set_cutoff(
*
* `value` must be finite and positive.
*
* By the time `bw_hs2_reset_coeffs()`, `bw_hs2_update_coeffs_ctrl()`,
* `bw_hs2_update_coeffs_audio()`, `bw_hs2_process1()`, `bw_hs2_process()`,
* or `bw_hs2_process_multi()` is called,
* `cutoff * bw_sqrtf(bw_sqrtf(high_gain))` must be in [`1e-6f`, `1e12f`].
* By the time `bw_hs2_reset_\*()`, `bw_hs2_update_coeffs_\*()`, or
* `bw_hs2_process\*()` is called, `cutoff * bw_sqrtf(bw_sqrtf(high_gain))`
* must be in [`1e-6f`, `1e12f`].
*
* Default value: `1e3f`.
*
@ -286,10 +288,9 @@ static inline void bw_hs2_set_high_gain_lin(
*
* Valid range: [`1e-30f`, `1e30f`].
*
* By the time `bw_hs2_reset_coeffs()`, `bw_hs2_update_coeffs_ctrl()`,
* `bw_hs2_update_coeffs_audio()`, `bw_hs2_process1()`, `bw_hs2_process()`,
* or `bw_hs2_process_multi()` is called,
* `cutoff * bw_sqrtf(bw_sqrtf(high_gain))` must be in [`1e-6f`, `1e12f`].
* By the time `bw_hs2_reset_\*()`, `bw_hs2_update_coeffs_\*()`, or
* `bw_hs2_process\*()` is called, `cutoff * bw_sqrtf(bw_sqrtf(high_gain))`
* must be in [`1e-6f`, `1e12f`].
*
* Default value: `1.f`.
*
@ -304,10 +305,9 @@ static inline void bw_hs2_set_high_gain_dB(
*
* Valid range: [`-600.f`, `600.f`].
*
* By the time `bw_hs2_reset_coeffs()`, `bw_hs2_update_coeffs_ctrl()`,
* `bw_hs2_update_coeffs_audio()`, `bw_hs2_process1()`, `bw_hs2_process()`,
* or `bw_hs2_process_multi()` is called,
* `cutoff * bw_sqrtf(bw_sqrtf(high_gain))` must be in [`1e-6f`, `1e12f`].
* By the time `bw_hs2_reset_\*()`, `bw_hs2_update_coeffs_\*()`, or
* `bw_hs2_process\*()` is called, `cutoff * bw_sqrtf(bw_sqrtf(high_gain))`
* must be in [`1e-6f`, `1e12f`].
*
* Default value: `0.f`.
*
@ -481,6 +481,7 @@ static inline float bw_hs2_reset_state(
BW_ASSERT(coeffs != BW_NULL);
BW_ASSERT_DEEP(bw_hs2_coeffs_is_valid(coeffs));
BW_ASSERT_DEEP(coeffs->state >= bw_hs2_coeffs_state_reset_coeffs);
BW_ASSERT_DEEP(coeffs->cutoff * bw_sqrtf(bw_sqrtf(coeffs->high_gain)) >= 1e-6f && coeffs->cutoff * bw_sqrtf(bw_sqrtf(coeffs->high_gain)) <= 1e12f);
BW_ASSERT(state != BW_NULL);
BW_ASSERT(bw_is_finite(x_0));
@ -507,6 +508,7 @@ static inline void bw_hs2_reset_state_multi(
BW_ASSERT(coeffs != BW_NULL);
BW_ASSERT_DEEP(bw_hs2_coeffs_is_valid(coeffs));
BW_ASSERT_DEEP(coeffs->state >= bw_hs2_coeffs_state_reset_coeffs);
BW_ASSERT_DEEP(coeffs->cutoff * bw_sqrtf(bw_sqrtf(coeffs->high_gain)) >= 1e-6f && coeffs->cutoff * bw_sqrtf(bw_sqrtf(coeffs->high_gain)) <= 1e12f);
BW_ASSERT(state != BW_NULL);
#ifndef BW_NO_DEBUG
for (size_t i = 0; i < n_channels; i++)

View File

@ -30,6 +30,9 @@
* <ul>
* <li>Version <strong>1.1.1</strong>:
* <ul>
* <li>Enforced limits on cutoff and dc_gain also in
* <code>bw_ls1_reset_state*()</code> and clarified
* documentation.</li>
* <li>Added debugging checks from <code>bw_ls1_process()</code> to
* <code>bw_ls1_process_multi()</code>.</li>
* <li>Added debugging checks in <code>bw_ls1_process_multi()</code> to
@ -227,10 +230,9 @@ static inline void bw_ls1_set_cutoff(
*
* `value` must be finite and positive.
*
* By the time `bw_ls1_reset_coeffs()`, `bw_ls1_update_coeffs_ctrl()`,
* `bw_ls1_update_coeffs_audio()`, `bw_ls1_process1()`, `bw_ls1_process()`,
* or `bw_ls1_process_multi()` is called,
* `cutoff * bw_rcpf(bw_sqrtf(dc_gain))` must be in [`1e-6f`, `1e12f`].
* By the time `bw_ls1_reset_\*()`, `bw_ls1_update_coeffs_\*()`, or
* `bw_ls1_process\*()` is called, `cutoff * bw_rcpf(bw_sqrtf(dc_gain))`
* must be in [`1e-6f`, `1e12f`].
*
* Default value: `1e3f`.
*
@ -270,10 +272,9 @@ static inline void bw_ls1_set_dc_gain_lin(
*
* Valid range: [`1e-30f`, `1e30f`].
*
* By the time `bw_ls1_reset_coeffs()`, `bw_ls1_update_coeffs_ctrl()`,
* `bw_ls1_update_coeffs_audio()`, `bw_ls1_process1()`, `bw_ls1_process()`,
* or `bw_ls1_process_multi()` is called,
* `cutoff * bw_rcpf(bw_sqrtf(dc_gain))` must be in [`1e-6f`, `1e12f`].
* By the time `bw_ls1_reset_\*()`, `bw_ls1_update_coeffs_\*()`, or
* `bw_ls1_process\*()` is called, `cutoff * bw_rcpf(bw_sqrtf(dc_gain))`
* must be in [`1e-6f`, `1e12f`].
*
* Default value: `1.f`.
*
@ -287,10 +288,9 @@ static inline void bw_ls1_set_dc_gain_dB(
*
* Valid range: [`-600.f`, `600.f`].
*
* By the time `bw_ls1_reset_coeffs()`, `bw_ls1_update_coeffs_ctrl()`,
* `bw_ls1_update_coeffs_audio()`, `bw_ls1_process1()`, `bw_ls1_process()`,
* or `bw_ls1_process_multi()` is called,
* `cutoff * bw_rcpf(bw_sqrtf(dc_gain))` must be in [`1e-6f`, `1e12f`].
* By the time `bw_ls1_reset_\*()`, `bw_ls1_update_coeffs_\*()`, or
* `bw_ls1_process\*()` is called, `cutoff * bw_rcpf(bw_sqrtf(dc_gain))`
* must be in [`1e-6f`, `1e12f`].
*
* Default value: `0.f`.
*
@ -451,6 +451,7 @@ static inline float bw_ls1_reset_state(
BW_ASSERT(coeffs != BW_NULL);
BW_ASSERT_DEEP(bw_ls1_coeffs_is_valid(coeffs));
BW_ASSERT_DEEP(coeffs->state >= bw_ls1_coeffs_state_reset_coeffs);
BW_ASSERT_DEEP(coeffs->cutoff * bw_rcpf(bw_sqrtf(coeffs->dc_gain)) >= 1e-6f && coeffs->cutoff * bw_rcpf(bw_sqrtf(coeffs->dc_gain)) <= 1e12f);
BW_ASSERT(state != BW_NULL);
BW_ASSERT(bw_is_finite(x_0));
@ -477,6 +478,7 @@ static inline void bw_ls1_reset_state_multi(
BW_ASSERT(coeffs != BW_NULL);
BW_ASSERT_DEEP(bw_ls1_coeffs_is_valid(coeffs));
BW_ASSERT_DEEP(coeffs->state >= bw_ls1_coeffs_state_reset_coeffs);
BW_ASSERT_DEEP(coeffs->cutoff * bw_rcpf(bw_sqrtf(coeffs->dc_gain)) >= 1e-6f && coeffs->cutoff * bw_rcpf(bw_sqrtf(coeffs->dc_gain)) <= 1e12f);
BW_ASSERT(state != BW_NULL);
#ifndef BW_NO_DEBUG
for (size_t i = 0; i < n_channels; i++)

View File

@ -30,6 +30,9 @@
* <ul>
* <li>Version <strong>1.1.1</strong>:
* <ul>
* <li>Enforced limits on cutoff and dc_gain also in
* <code>bw_ls2_reset_state*()</code> and clarified
* documentation.</li>
* <li>Added debugging checks from <code>bw_ls2_process()</code> to
* <code>bw_ls2_process_multi()</code>.</li>
* <li>Added debugging checks in <code>bw_ls2_process_multi()</code> to
@ -235,9 +238,8 @@ static inline void bw_ls2_set_cutoff(
*
* `value` must be finite and positive.
*
* By the time `bw_ls2_reset_coeffs()`, `bw_ls2_update_coeffs_ctrl()`,
* `bw_ls2_update_coeffs_audio()`, `bw_ls2_process1()`, `bw_ls2_process()`,
* or `bw_ls2_process_multi()` is called,
* By the time `bw_ls2_reset_\*()`, `bw_ls2_update_coeffs_\*()`, or
* `bw_ls2_process\*()` is called,
* `cutoff * bw_rcpf(bw_sqrtf(bw_sqrtf(dc_gain)))` must be in [`1e-6f`,
* `1e12f`].
*
@ -291,9 +293,8 @@ static inline void bw_ls2_set_dc_gain_lin(
*
* Valid range: [`1e-30f`, `1e30f`].
*
* By the time `bw_ls2_reset_coeffs()`, `bw_ls2_update_coeffs_ctrl()`,
* `bw_ls2_update_coeffs_audio()`, `bw_ls2_process1()`, `bw_ls2_process()`,
* or `bw_ls2_process_multi()` is called,
* By the time `bw_ls2_reset_\*()`, `bw_ls2_update_coeffs_\*()`, or
* `bw_ls2_process\*()` is called,
* `cutoff * bw_rcpf(bw_sqrtf(bw_sqrtf(dc_gain)))` must be in [`1e-6f`,
* `1e12f`].
*
@ -309,9 +310,8 @@ static inline void bw_ls2_set_dc_gain_dB(
*
* Valid range: [`-600.f`, `600.f`].
*
* By the time `bw_ls2_reset_coeffs()`, `bw_ls2_update_coeffs_ctrl()`,
* `bw_ls2_update_coeffs_audio()`, `bw_ls2_process1()`, `bw_ls2_process()`,
* or `bw_ls2_process_multi()` is called,
* By the time `bw_ls2_reset_\*()`, `bw_ls2_update_coeffs_\*()`, or
* `bw_ls2_process\*()` is called,
* `cutoff * bw_rcpf(bw_sqrtf(bw_sqrtf(dc_gain)))` must be in [`1e-6f`,
* `1e12f`].
*
@ -487,6 +487,7 @@ static inline float bw_ls2_reset_state(
BW_ASSERT(coeffs != BW_NULL);
BW_ASSERT_DEEP(bw_ls2_coeffs_is_valid(coeffs));
BW_ASSERT_DEEP(coeffs->state >= bw_ls2_coeffs_state_reset_coeffs);
BW_ASSERT_DEEP(coeffs->cutoff * bw_rcpf(bw_sqrtf(bw_sqrtf(coeffs->dc_gain))) >= 1e-6f && coeffs->cutoff * bw_rcpf(bw_sqrtf(bw_sqrtf(coeffs->dc_gain))) <= 1e12f);
BW_ASSERT(state != BW_NULL);
BW_ASSERT(bw_is_finite(x_0));
@ -513,6 +514,7 @@ static inline void bw_ls2_reset_state_multi(
BW_ASSERT(coeffs != BW_NULL);
BW_ASSERT_DEEP(bw_ls2_coeffs_is_valid(coeffs));
BW_ASSERT_DEEP(coeffs->state >= bw_ls2_coeffs_state_reset_coeffs);
BW_ASSERT_DEEP(coeffs->cutoff * bw_rcpf(bw_sqrtf(bw_sqrtf(coeffs->dc_gain))) >= 1e-6f && coeffs->cutoff * bw_rcpf(bw_sqrtf(bw_sqrtf(coeffs->dc_gain))) <= 1e12f);
BW_ASSERT(state != BW_NULL);
#ifndef BW_NO_DEBUG
for (size_t i = 0; i < n_channels; i++)

View File

@ -37,6 +37,9 @@
* <ul>
* <li>Version <strong>1.1.1</strong>:
* <ul>
* <li>Enforced limits on bandwidth and peak_gain also in
* <code>bw_peak_reset_state*()</code> and clarified
* documentation.</li>
* <li>Added debugging checks from <code>bw_peak_process()</code> to
* <code>bw_peak_process_multi()</code>.</li>
* <li>Added debugging checks in <code>bw_peak_process_multi()</code>
@ -290,9 +293,8 @@ static inline void bw_peak_set_peak_gain_lin(
* Valid range: [`1e-30f`, `1e30f`].
*
* If actually using the bandwidth parameter to control Q, by the time
* `bw_peak_reset_coeffs()`, `bw_peak_update_coeffs_ctrl()`,
* `bw_peak_update_coeffs_audio()`, `bw_peak_process1()`,
* `bw_peak_process()`, or `bw_peak_process_multi()` is called,
* `bw_peak_reset_\*()`, `bw_peak_update_coeffs_\*()`, or
* `bw_peak_process\*()`, is called,
* `bw_sqrtf(bw_pow2f(bandwidth) * peak_gain) *
* bw_rcpf(bw_pow2f(bandwidth) - 1.f)` must be in [`1e-6f`, `1e6f`].
*
@ -309,9 +311,8 @@ static inline void bw_peak_set_peak_gain_dB(
* Valid range: [`-600.f`, `600.f`].
*
* If actually using the bandwidth parameter to control Q, by the time
* `bw_peak_reset_coeffs()`, `bw_peak_update_coeffs_ctrl()`,
* `bw_peak_update_coeffs_audio()`, `bw_peak_process1()`,
* `bw_peak_process()`, or `bw_peak_process_multi()` is called,
* `bw_peak_reset_\*()`, `bw_peak_update_coeffs_\*()`, or
* `bw_peak_process\*()`, is called,
* `bw_sqrtf(bw_pow2f(bandwidth) * peak_gain) *
* bw_rcpf(bw_pow2f(bandwidth) - 1.f)` must be in [`1e-6f`, `1e6f`].
*
@ -328,9 +329,8 @@ static inline void bw_peak_set_bandwidth(
* Valid range: [`1e-6f`, `90.f`].
*
* If actually using the bandwidth parameter to control Q, by the time
* `bw_peak_reset_coeffs()`, `bw_peak_update_coeffs_ctrl()`,
* `bw_peak_update_coeffs_audio()`, `bw_peak_process1()`,
* `bw_peak_process()`, or `bw_peak_process_multi()` is called,
* `bw_peak_reset_\*()`, `bw_peak_update_coeffs_\*()`, or
* `bw_peak_process\*()`, is called,
* `bw_sqrtf(bw_pow2f(bandwidth) * peak_gain) *
* bw_rcpf(bw_pow2f(bandwidth) - 1.f)` must be in [`1e-6f`, `1e6f`].
*
@ -525,6 +525,10 @@ static inline float bw_peak_reset_state(
BW_ASSERT(coeffs != BW_NULL);
BW_ASSERT_DEEP(bw_peak_coeffs_is_valid(coeffs));
BW_ASSERT_DEEP(coeffs->state >= bw_peak_coeffs_state_reset_coeffs);
BW_ASSERT_DEEP(coeffs->use_bandwidth
? bw_sqrtf(bw_pow2f(coeffs->bandwidth) * coeffs->peak_gain) * bw_rcpf(bw_pow2f(coeffs->bandwidth) - 1.f) >= 1e-6f
&& bw_sqrtf(bw_pow2f(coeffs->bandwidth) * coeffs->peak_gain) * bw_rcpf(bw_pow2f(coeffs->bandwidth) - 1.f) <= 1e6f
: 1);
BW_ASSERT(state != BW_NULL);
BW_ASSERT(bw_is_finite(x_0));
@ -551,6 +555,10 @@ static inline void bw_peak_reset_state_multi(
BW_ASSERT(coeffs != BW_NULL);
BW_ASSERT_DEEP(bw_peak_coeffs_is_valid(coeffs));
BW_ASSERT_DEEP(coeffs->state >= bw_peak_coeffs_state_reset_coeffs);
BW_ASSERT_DEEP(coeffs->use_bandwidth
? bw_sqrtf(bw_pow2f(coeffs->bandwidth) * coeffs->peak_gain) * bw_rcpf(bw_pow2f(coeffs->bandwidth) - 1.f) >= 1e-6f
&& bw_sqrtf(bw_pow2f(coeffs->bandwidth) * coeffs->peak_gain) * bw_rcpf(bw_pow2f(coeffs->bandwidth) - 1.f) <= 1e6f
: 1);
BW_ASSERT(state != BW_NULL);
#ifndef BW_NO_DEBUG
for (size_t i = 0; i < n_channels; i++)

View File

@ -32,6 +32,9 @@
* <ul>
* <li>Version <strong>1.1.1</strong>:
* <ul>
* <li>Enforced limits on center and amount also in
* <code>bw_phaser_reset_state*()</code> and clarified
* documentation.</li>
* <li>Added debugging checks from <code>bw_phaser_process()</code> to
* <code>bw_phaser_process_multi()</code>.</li>
* <li>Added debugging checks in <code>bw_phaser_process_multi()</code>
@ -236,10 +239,9 @@ static inline void bw_phaser_set_center(
*
* Valid range: [`1e-6f`, `1e12f`].
*
* By the time `bw_phaser_reset_coeffs()`, `bw_phaser_update_coeffs_ctrl()`,
* `bw_phaser_update_coeffs_audio()`, `bw_phaser_process1()`,
* `bw_phaser_process()`, or `bw_phaser_process_multi()` is called,
* `center * bw_pow2f(amount)` must be in [`1e-6f`, `1e12f`].
* By the time `bw_phaser_reset_\*()`, `bw_phaser_update_coeffs_\*()`, or
* `bw_phaser_process\*()` is called, `center * bw_pow2f(amount)` must be in
* [`1e-6f`, `1e12f`].
*
* Default value: `1e3f`.
*
@ -253,10 +255,9 @@ static inline void bw_phaser_set_amount(
*
* `value` must be finite and non-negative.
*
* By the time `bw_phaser_reset_coeffs()`, `bw_phaser_update_coeffs_ctrl()`,
* `bw_phaser_update_coeffs_audio()`, `bw_phaser_process1()`,
* `bw_phaser_process()`, or `bw_phaser_process_multi()` is called,
* `center * bw_pow2f(amount)` must be in [`1e-6f`, `1e12f`].
* By the time `bw_phaser_reset_\*()`, `bw_phaser_update_coeffs_\*()`, or
* `bw_phaser_process\*()` is called, `center * bw_pow2f(amount)` must be in
* [`1e-6f`, `1e12f`].
*
* Default value: `1.f`.
*
@ -407,6 +408,7 @@ static inline float bw_phaser_reset_state(
BW_ASSERT(coeffs != BW_NULL);
BW_ASSERT_DEEP(bw_phaser_coeffs_is_valid(coeffs));
BW_ASSERT_DEEP(coeffs->state >= bw_phaser_coeffs_state_reset_coeffs);
BW_ASSERT_DEEP(coeffs->center * bw_pow2f(coeffs->amount) >= 1e-6f && coeffs->center * bw_pow2f(coeffs->amount) <= 1e12f);
BW_ASSERT(state != BW_NULL);
BW_ASSERT(bw_is_finite(x_0));
@ -436,6 +438,7 @@ static inline void bw_phaser_reset_state_multi(
BW_ASSERT(coeffs != BW_NULL);
BW_ASSERT_DEEP(bw_phaser_coeffs_is_valid(coeffs));
BW_ASSERT_DEEP(coeffs->state >= bw_phaser_coeffs_state_reset_coeffs);
BW_ASSERT_DEEP(coeffs->center * bw_pow2f(coeffs->amount) >= 1e-6f && coeffs->center * bw_pow2f(coeffs->amount) <= 1e12f);
BW_ASSERT(state != BW_NULL);
#ifndef BW_NO_DEBUG
for (size_t i = 0; i < n_channels; i++)