35 std::same_as<float, std::remove_cvref_t<T>> ||
36 std::same_as<double, std::remove_cvref_t<T>> ||
37 std::same_as<simd, std::remove_cvref_t<T>>;
39 template<CFloatOrSIMD T>
46 if constexpr (std::same_as<T, simd>)
48 static const T ln10div20(std::numbers::ln10_v<float> * 0.05f);
49 return exp(ln10div20 * dB);
53 static constexpr T ln10div20 = std::numbers::ln10_v<T> * T(0.05);
54 return std::exp(ln10div20 * dB);
58 template<CFloatOrSIMD T>
62 if constexpr (std::same_as<T, simd>)
64 static const T ln10div10 = std::numbers::ln10_v<float> * 0.1f;
65 return exp(ln10div10 * dB);
69 static const T ln10div10 = std::numbers::ln10_v<T> * T(0.1);
70 return std::exp(ln10div10 * dB);
74 template<CFloatOrSIMD T>
75 JPL_INLINE T
GainTodB(
const T& gainFactor)
noexcept
77 if constexpr (std::same_as<T, simd>)
78 return -20.0f *
log10(gainFactor);
80 return static_cast<T
>(-20.0) * std::log10(gainFactor);
83 template<CFloatOrSIMD T>
86 if constexpr (std::same_as<T, simd>)
87 return -10.0f *
log10(intencityFactor);
89 return static_cast<T
>(-10.0) * std::log10(intencityFactor);
Definition DecibelsAndGain.h:34
Definition AcousticMaterial.h:36
simd exp(simd x) noexcept
Exponent for 4-wide 32-bit float vector.
Definition SIMDMath.h:298
JPL_INLINE T dBToGain(const T &dB) noexcept
Definition DecibelsAndGain.h:40
JPL_INLINE constexpr T IntencityTodB(const T &intencityFactor) noexcept
Definition DecibelsAndGain.h:84
JPL_INLINE T dBToIntencity(const T &dB) noexcept
Definition DecibelsAndGain.h:59
JPL_INLINE T GainTodB(const T &gainFactor) noexcept
Definition DecibelsAndGain.h:75
JPL_INLINE simd log10(const simd &vec) noexcept
log10 for 4-wide 32-bit float vector
Definition SIMDMath.h:241