| 325 | } |
| 326 | |
| 327 | static constexpr int _highest_bit_step(u32 v, int r) FL_NOEXCEPT { |
| 328 | return (v & 0xFFFF0000u) ? _highest_bit_step(v >> 16, r + 16) |
| 329 | : (v & 0x0000FF00u) ? _highest_bit_step(v >> 8, r + 8) |
| 330 | : (v & 0x000000F0u) ? _highest_bit_step(v >> 4, r + 4) |
| 331 | : (v & 0x0000000Cu) ? _highest_bit_step(v >> 2, r + 2) |
| 332 | : (v & 0x00000002u) ? r + 1 |
| 333 | : r; |
| 334 | } |
| 335 | |
| 336 | // Fixed-point log base 2 for positive values. |
| 337 | // Uses 4-term minimax polynomial for log2(1+t), t in [0,1). |