43#ifndef LASS_GUARDIAN_OF_INCLUSION_NUM_DB_INL
44#define LASS_GUARDIAN_OF_INCLUSION_NUM_DB_INL
52 #define LASS_NUM_REFERENCE_PRESSURE_P0 20.e-6
53 #define LASS_NUM_REFERENCE_INTENSITY_I0 1.e-12
54 #define LASS_NUM_REFERENCE_POWER_W0 1.e-12
56 template<
typename T > T
p2dB(
const T& pressure )
60 LASS_THROW(
"Negative argument '" << pressure <<
"'" );
66 return T(LASS_NUM_DB_20_OVER_LN10) * num::log(pressure / T(LASS_NUM_REFERENCE_PRESSURE_P0));
69 template<
typename T > T
W2dB(
const T& power )
73 LASS_THROW(
"Negative argument '" << power <<
"'" );
79 return T(LASS_NUM_DB_10_OVER_LN10) * num::log(power / T(LASS_NUM_REFERENCE_POWER_W0));
82 template<
typename T > T
I2dB(
const T& intensity )
86 LASS_THROW(
"Negative argument '" << intensity <<
"'" );
92 return T(LASS_NUM_DB_10_OVER_LN10) * num::log(intensity / T(LASS_NUM_REFERENCE_INTENSITY_I0));
95 template<
typename T > T
dB2p(
const T& decibels )
97 return decibels == -NumTraits<T>::infinity ?
99 T(LASS_NUM_REFERENCE_PRESSURE_P0) * num::exp(decibels * T(LASS_NUM_DB_LN10_OVER_20));
102 template<
typename T > T
dB2W(
const T& decibels )
104 return decibels == -NumTraits<T>::infinity ?
106 T(LASS_NUM_REFERENCE_POWER_W0) * num::exp(decibels * T(LASS_NUM_DB_LN10_OVER_10));
109 template<
typename T > T
dB2I(
const T& decibels )
111 return decibels == -NumTraits<T>::infinity ?
113 T(LASS_NUM_REFERENCE_INTENSITY_I0) * num::exp(decibels * T(LASS_NUM_DB_LN10_OVER_10));
T dB2W(const T &iValue)
Converts decibels into a power.
T dB2p(const T &iValue)
Converts decibels into a pressure .
T dB2I(const T &iValue)
Converts decibels into an intensity.
T W2dB(const T &iValue)
Converts a absolute acoustical power into decibels.
T I2dB(const T &iValue)
Converts an intensity into decibels.
T p2dB(const T &iValue)
Converts an absolute acoustical pressure into decibels.
numeric types and traits.
Library for Assembled Shared Sources.