bw_math: add bw_log2_1p2xf, bw_log_1pexpxf, bw_log10_1p10xf
This commit is contained in:
parent
6431749bf8
commit
b214bc896e
@ -46,10 +46,12 @@
|
||||
* <ul>
|
||||
* <li>Version <strong>1.1.0</strong>:
|
||||
* <ul>
|
||||
* <li>Added <code>bw_signfilli64</code>, <code>bw_mini64</code>,
|
||||
* <code>bw_maxi64</code>, <code>bw_clipi64</code>,
|
||||
* <code>bw_minu64</code>, <code>bw_maxu64</code>, and
|
||||
* <code>bw_clipu64</code>.</li>
|
||||
* <li>Added <code>bw_signfilli64()</code>, <code>bw_mini64()</code>,
|
||||
* <code>bw_maxi64()</code>, <code>bw_clipi64()</code>,
|
||||
* <code>bw_minu64()</code>, <code>bw_maxu64()</code>,
|
||||
* <code>bw_clipu64()</code>, <code>bw_log2_1p2xf()</code>,
|
||||
* <code>bw_log_1pexpxf()</code>, and
|
||||
* <code>bw_log10_1p10xf()</code>.</li>
|
||||
* <li>Added support for <code>BW_INCLUDE_WITH_QUOTES</code> and
|
||||
* <code>BW_CXX_NO_EXTERN_C</code>.</li>
|
||||
* </ul>
|
||||
@ -534,6 +536,33 @@ static inline float bw_pow10f(
|
||||
*
|
||||
* Relative error < 0.062%.
|
||||
*
|
||||
* #### bw_log2_1p2xf()
|
||||
* ```>>> */
|
||||
static inline float bw_log2_1p2xf(
|
||||
float x);
|
||||
/*! <<<```
|
||||
* Returns an approximation of `log2(1+2^x)`.
|
||||
*
|
||||
* Absolute error < 0.006.
|
||||
*
|
||||
* #### bw_log_1pexpxf()
|
||||
* ```>>> */
|
||||
static inline float bw_log_1pexpxf(
|
||||
float x);
|
||||
/*! <<<```
|
||||
* Returns an approximation of `log(1+exp(x))`.
|
||||
*
|
||||
* Absolute error < 0.004.
|
||||
*
|
||||
* #### bw_log10_1p10xf()
|
||||
* ```>>> */
|
||||
static inline float bw_log10_1p10xf(
|
||||
float x);
|
||||
/*! <<<```
|
||||
* Returns an approximation of `log10(1+10^x)`.
|
||||
*
|
||||
* Absolute error < 0.002.
|
||||
*
|
||||
* #### bw_dB2linf()
|
||||
* ```>>> */
|
||||
static inline float bw_dB2linf(
|
||||
@ -1024,6 +1053,30 @@ static inline float bw_pow10f(
|
||||
return y;
|
||||
}
|
||||
|
||||
static inline float bw_log2_1p2xf(
|
||||
float x) {
|
||||
BW_ASSERT(!bw_is_nan(x));
|
||||
const float y = x >= 32.f ? x : bw_log2f(1.f + bw_pow2f(x));
|
||||
BW_ASSERT(bw_is_finite(y));
|
||||
return y;
|
||||
}
|
||||
|
||||
static inline float bw_log_1pexpxf(
|
||||
float x) {
|
||||
BW_ASSERT(!bw_is_nan(x));
|
||||
const float y = 0.693147180559945f * bw_log2_1p2xf(1.442695040888963f * x);
|
||||
BW_ASSERT(bw_is_finite(y));
|
||||
return y;
|
||||
}
|
||||
|
||||
static inline float bw_log10_1p10xf(
|
||||
float x) {
|
||||
BW_ASSERT(!bw_is_nan(x));
|
||||
const float y = 0.3010299956639811f * bw_log2_1p2xf(3.321928094887363f * x);
|
||||
BW_ASSERT(bw_is_finite(y));
|
||||
return y;
|
||||
}
|
||||
|
||||
static inline float bw_dB2linf(
|
||||
float x) {
|
||||
BW_ASSERT(!bw_is_nan(x));
|
||||
|
Loading…
Reference in New Issue
Block a user