| 423 | } |
| 424 | |
| 425 | fl::u16 inoise16(fl::u32 x, fl::u32 y, fl::u32 z, fl::u32 t) { |
| 426 | fl::i32 ans = inoise16_raw(x,y,z,t); |
| 427 | ans = ans + 19052L; |
| 428 | fl::u32 pan = ans; |
| 429 | // pan = (ans * 220L) >> 7. That's the same as: |
| 430 | // pan = (ans * 440L) >> 8. And this way avoids a 7X four-byte shift-loop on AVR. |
| 431 | // Identical math, except for the highest bit, which we don't care about anyway, |
| 432 | // since we're returning the 'middle' 16 out of a 32-bit value anyway. |
| 433 | pan *= 440L; |
| 434 | return (pan>>8); |
| 435 | |
| 436 | // return scale16by8(pan,220)<<1; |
| 437 | // return ((inoise16_raw(x,y,z)+19052)*220)>>7; |
| 438 | // return scale16by8(inoise16_raw(x,y,z)+19052,220)<<1; |
| 439 | } |
| 440 | |
| 441 | fl::u16 inoise16(fl::u32 x, fl::u32 y, fl::u32 z) { |
| 442 | fl::i32 ans = inoise16_raw(x,y,z); |
no test coverage detected