Advertisement
Kaelygon

White noise generator

Jul 15th, 2023 (edited)
1,390
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.55 KB | None | 0 0
  1. typedef struct {
  2.     uint16_t a;
  3.     uint16_t b;
  4. } ukaelEntropy;
  5.  
  6. ukaelEntropy UKAEL_STATE = {.a = 13381U, .b = 42533U};
  7.  
  8. //white noise generator
  9. //2.5 times faster than rand()
  10. //Doesn't pass some dieharder tests, but no audible patterns
  11. //frequency analysis: <1db variance over 327680 samples
  12. inline static void ukaelReseed(ukaelEntropy *s){    
  13.     //asm ("rorw    $11,    %[a]    \n\t" : [a] "+r" (s->a)    ); //about as fast
  14.     s->a = (s->a>>11)|(s->a<<5); //bit rotate rorw
  15.     s->a+= (s->b<<1)+13;    //adding is way better than xor
  16.     s->b+= (s->a<<2)+11;
  17.  
  18.     return;
  19. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement