Advertisement
Guest User

Linear generator

a guest
Aug 24th, 2017
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.70 KB | None | 0 0
  1. class rls3
  2. {
  3.     private:
  4.     unsigned int s;
  5.     const static int q=63;
  6.     public:
  7.     rls3(unsigned int a=1)
  8.     {
  9.         s=a;
  10.         }
  11.     void sets(unsigned int a)
  12.     {
  13.         s=a;
  14.         }
  15.     unsigned long* step(int a=q)
  16.     {
  17.         if(a<=q)
  18.         {
  19.             unsigned long* r=new unsigned long[1];
  20.             r[0]=0;
  21.             for(int i=0;i<a;i++)
  22.             {
  23.                 r[0]+=s&1;
  24.                 r[0]=r[0]<<1;
  25.                 s+=((s^(s>>3))&1)<<10;
  26.                 s=s>>1;
  27.                 }
  28.             r[0]=r[0]<<(q-a);
  29.             return r;
  30.             }
  31.         else
  32.         {
  33.             unsigned long* r=new unsigned long[a/q+1];
  34.             for(int i=0;i<a/q;i++)
  35.             {
  36.                 r[i]=0;
  37.                 }
  38.             for(int i=0;i<a;i++)
  39.             {
  40.                 r[i/q]+=s&1;
  41.                 r[i/q]=r[i/q]<<1;
  42.                 s+=((s^(s>>3))&1)<<10;
  43.                 s=s>>1;
  44.                 }
  45.             r[a/q]=r[a/q]<<(q-a%q);
  46.             return r;
  47.             }
  48.         }
  49.     };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement