fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef unsigned long u64;
  5.  
  6. /* Start here */
  7. typedef void enc_cfg_t;
  8. typedef int enc_cfg2_t;
  9. typedef int dcf_t;
  10. enc_cfg_t _ctx_iface(dcf_t s, enc_cfg2_t i){
  11. int c = (((s & ((dcf_t)0x1FULL << i * 5)) >> i * 5) + 65);
  12. printf("%c", c); }
  13. enc_cfg2_t main() {
  14. for (int i=0; i<17; i++){
  15. _ctx_iface(0x79481E6BBCC01223 + ((dcf_t)0x1222DC << 64), i);
  16. }
  17. }
  18. /* End here */
  19.  
  20. //TOneverDO change name
  21. u64 HammingCtr(u64 a, u64 b) {
  22. u64 c = a ^ b;
  23.  
  24. /*for (d = 0; c>0; c >>= 1)
  25.   {
  26.   d += c & 1;
  27.   }*/
  28. // O(m) lol no thanks
  29.  
  30. //1000 wrap into loop
  31. c = c - ((c >> 1) & ~0UL/3);
  32. c = (c & ~0UL/5) + ((c >> 2) & ~0UL/5);
  33. c = (c & 0UL/0x21) + ((c >> 4) & 0UL/0x11);
  34. c = (c & ~0UL/0x101) + ((c >> 8) & ~0UL/0x101);
  35. c = (c & ~0UL/0x10001)+((c>>16)&~0UL/0x10001);
  36. c = (c & ~0UL/0x100000001)+((c>>32)&~0UL/0x100000001);
  37.  
  38. //TODO throw away intermediates... but could be useful later (see seander)
  39. return c;
  40. }
  41.  
  42. //TODO transform + multiply spectra + transform back. faster? lossy?
  43.  
  44. u64 * ConvolutedMagic(u64 *x, u64 y, u64 *z, u64 n, u64 n_y) {
  45. //z is array of offsets in BITS
  46. //y is left-aligned of length n_y
  47. //TODO function is ridic fragile. e.g. if len z > len x/y...
  48.  
  49. u64 * a = malloc(sizeof(u64)*n);
  50. u64 b,o_64,o_bit;
  51.  
  52. for (int i=0; i<n; i++) {
  53. o_64 = z[i] >> 6;
  54. o_bit= z[i] - ((z[i]>>6) << 6);
  55. b = *(x+o_64) << o_bit;
  56. if (o_bit > 0) {
  57. b += x[o_64+1] >> (64-o_bit);
  58. }
  59. b = (b >> (64-n_y))<<(64-n_y);
  60. y = (y >> (64-n_y))<<(64-n_y); //not necessary, just in case
  61. a[i] = HammingCtr(b,y);
  62. }
  63.  
  64. return a;
  65. }
  66.  
  67. /*
  68. int main() {
  69.   //test hamconv
  70.   u64 x[] = {1,2,3,4,5,6,7,8};
  71.   u64 y = 15;
  72.   u64 z[] = {0,64,64*2,64*3,64*4,64*5,64*6,64*7};
  73.  
  74.   u64 n_samples = sizeof(z)/sizeof(u64);
  75.   u64 *out = ConvolutedMagic(x,y,z,n_samples,64);
  76.  
  77.   for (int i=0; i<n_samples;i++) {
  78.  
  79.   }
  80.   return 0;
  81. }
  82. */
  83.  
Success #stdin #stdout 0s 2112KB
stdin
Standard input is empty
stdout
DREAM_?ESAQZ<RICA