[ create a new paste ] login | about

Link: http://codepad.org/LRZ5fmWR    [ raw code | output | fork ]

C, pasted on Feb 8:
#include <stdio.h>
#include <stdint.h>
#include <inttypes.h>

int main(int argc, char **argv) {
   uint32_t lfsr = 1, buf_bits = 0;
   uint16_t valid = 0, old = 0, buf_cnt = 0, out_cnt = 0;
   do {
      uint32_t mask, b1, b2;
      b1 = lfsr & 1;
      lfsr = (lfsr >> 1) ^ (0xD0000001u & -(uint32_t)b1);
      b2 = lfsr & 1;
      lfsr = (lfsr >> 1) ^ (0xD0000001u & -(uint32_t)b2);
      ++valid;
      old += b2;
      mask = 1;
      do {
         uint32_t next = b1 ^ (old & mask);
         if( next ) {
            ++buf_cnt;
            buf_bits = (buf_bits << 1) | !!b1;
         }
         b1 = next << 1;
         mask <<= 1;
      } while( valid & mask );

      if( b1 ) old |= mask; else old &= ~mask;
      ++valid;

      if( buf_cnt >= 16 ) {
         buf_cnt -= 16;
         printf( "%04" PRIx16, (buf_bits >> buf_cnt) & 0xFFFFu );
         if( 19 == (out_cnt % 20) ) printf("\n");
         ++out_cnt;
      }
   } while( out_cnt < 1000 );
   return 0;
}


Output:
ff7555cccceb008fa7850b947fc62ad1eae3184e946903edcaa6e0a7a8979e55379811266c1832c9
5ac56ff1950a590c865637bdb9b95072ac75183bad8a65461c82c4e5e30c155d436b01badec1558e
b38ed0ec684cd5e16d904b5a68272a4c502639db48c1b746213ccb71bb128a92d75b0d72ed05ad17
ac877e402407599ed4cdeb3dec90da0cd20d4a60356fa03a8299f8c038e817e7aad566e5fe1d8aec
1b93859bad689f16eb11ae3a6ad66e1580535a7971ddcb802823a070a021992f64f8776de16237c5
eaff663008e726dbd9609db3933ae00b8ce330eb211a77fd81d4711bdb6c8736d1ebe06edad9d9b5
a9efac5762c6e83467852ef81f20789696723c9531aa29b5ecf2bec10102a2199fa0c9e88e3a8e89
26ae517a453bf3b0c531f956c69cd9efe7e28724ab84e8ca491386e49b4a0f1dbe671f1f73ccc594
cbb1dd5303c7489b0069d2e4293ec17b6b72c71aa7758f0980e212996ba96d6dc6520c7d678c36f0
63379ebe9ec1a6bab78a98035371c4ddbb5a5d584cc10a715c739cebbac8298b83233ac89abaf7a7
d0fc3ac8e0e59f41bf0a48b60a2bcaad482aa29368e6b725173a73b75ccd9cb609c62336955393dc
d9db3a0eb06ae9b9265e8d1eac37768f5d3cd8561399646aac806d487aa29d4efe1eb09b9b862804
7ce06c8906f7046ae3da0c06a65f87743981809f725b980d989710531a7419786c5295b055ef977f
186d9729d191846513ac79d9163666262ab1b0d92e66ded9b5305b8574d6d0ae44061c10244f6655
0159d8ccda48d8555479da96d7bf98781c60c3d01c9c3d677dc3db09cc354c24f2c16b1548aedca6
6319d4f6c63db4cade928b918f8e547b0c3bf0548cb30b70a3f1f3c990327c479547b87de2007a77
1c330c68c1cbe901742eaf87df3e0792b136b11ab90b310083587dee2cdb85422252def39cb06ec5
b903ee67ad0ed8f93d3040cc36ccf316ee6d7ad1c2a44cce701b206b3200d8acdc14b58ed23902d0
f656397e12e5398d4a84939a540e75b68b6a5808a0e4e517cced131330aca4ba2f8e5784f09eb76c
c8864330b95388607e593c67b62f6f3dc33369de1b2489cd845586b14ef5cf953a220636bbee042f
0bdd91a63b206351dd10eeec63193c3692597d682416cca0e7481eb0e06155192b113b54b52739d5
818552b623a16fb9b47d946075c676d47badac628351bac3de4db7f0dc38dd5e486535c55dc193ee
5a5952be670c2c439a8b7612edf9459d30a3d2f97c6e9646daf308f8f64572bdade7167a4151c2ec
bd2f1def75d6250263a8673db4e74377ba6f5632e963c68f365e8218ef14d205558355ce064d4d98
bcb9e3146337bc490841d08f1d9d4a1ab36c61531efab3976923752b43c56c2eaab664511a854e75
1c6eecd2d314d463989f09c8672958a0cd46ab8cf6891e73d67df9e02c019e16fbf7ddfb6e9e7041
2f7aec9d91037898e21f48b6ed8dedb14421721e6e26764c32dca797a7034537bcd1eb4d238656bb
6d5d45c5931eab0e0639d232371f18d102d867451bbab5d250ed7c89426993cc15a551d4442db164
6afff0f56c1ad734c53a1a2dad06e0d617ba414d874be442ac4581f4b743a8916b3359ec9d8cd25a
729f421dd83e7604ec4a2de58f692bf5f098b943a5053cf6968f1487ee1978eaae6266136e7ded04
c09949e9b6bfb00bba814afd7136cb4421e9c835d1cb212cdfed8de6a6469984a23079de65508477
50fb33625e8f845a6eb6761019bd978acc63452c731a0ce875c6542c802ec673e6db966ac802334b
609fb48e16d34a967a0ec3769a138838a4c19be542ea7dbc7bf3b6473820ecdd22b9a18a327acec9
41c0610f86ea060c809168e139a29951a7658a708bc5461c50cced222c6818b13c3ac5ae67a54b34
c88a50c8bb9623aab5657791159b82dc34697012ebaf005efb449562b09542b479113bdc1807ca49
a40bb4c9994f547238b8c46d2caca73c00c551141385656f2ee6379510b5caa59f4fe4a1cd59b711
0f44aa4d528d6660ee526d60d5084dc95c6e01ab5e0594f8dc3072f1af8d90fc78738b9adea6e53a
8ea0c20d9aacbe1cdeee033cec219b62ed3bb505a139c19a1f810d360e0a701ca0b5859140d8ed9d
dad47cfbd82de29a635473216329c4e4c3d25b64f18201df4c16d691c4318ca06c566701e3f7bfbf
1a33b2769b01d2d45a402375466028b765183155d7ee524d956198632c4c79911a56789fe8106fc0
b7403c7f7240f85595115d012f40d6d304cbb99c14dbee8ed4a51e3056130f4f703747a91b1bfeec
9d85fcde7dbb41c3a2840ab615ba643cd8b121c59ddbb3c35236e41a3290f507b34050a815b03b61
ea95e7cf3a2b80822e1f727d204c49559db326ade3bef20a498f085c8808c1279dceada2629cdff4
ea7907c31d20a7fb6c3b85b751af5de6737bc8f39c75467dc985eab2af670c1c3f4b85081ced2ce3
52edaee2ef793a341f78a0b209e8d098561ac253b18bb9c1f3a96331e4e519775eed33b2fbde6775
c52170384d31527a50fcc8d1ab9e947e5d585ea2db2128d2960bec50a0d957bc9fb28e1ca77286bc
d6f289b9dae429e3812a443cd7f63e5312bc629c1cd92e4ae4045ab317bd861b85a724e8de669565
88d7a575bb186192fa63bc97edd16b3300a6ad8b5265ee9bb3ab33de674658c21598979c33bbdee1
318d50fcfd79041e2c98ddf6dfb21eedd894addbe2eaeb21d8d0d2cdba407109a3986d041b21cf19
6f3c9d96785994b46998191acbcfc793dd78cc5ef31c9b89b0519cbe9616d0a33951249cd6242d51


Create a new paste based on this one


Comments: