All pastes #819302 Raw Edit

usine gaz

public text v1 · immutable
·published 2007-12-16 21:53 UTC
rendered paste body
charles@zblup:~/charles_work/prog/radiogatun$ time ./generate_trail_equations.php 
p[0] + a[16]
p[2] + a[18]
========================== c'était la round #0 : 
a[8] + 1
p[1] + a[17] + 1
a[10]
a[12] + 1
a[14]
p[0] + a[15] + a[16] + 1
a[0]
========================== c'était la round #1 : 
a[15] + 1
a[1] + 1
a[6] + 1
p[2] + a[18] + 1
a[3] + a[5] + 1
a[4] + a[5]
p[0] + p[1] + a[16] + a[17]
a[9]
a[2] + a[5] + 1
a[7] + a[8] + 1
========================== c'était la round #2 : 
a[0] + 1
a[13]
p[2] + a[18] + 1
a[10] + a[11] + 1
a[2]
a[6] + 1
a[8] + a[11]
a[3]
a[4] + a[5]
p[0] + p[1] + a[16] + a[17]
a[9] + a[11] + 1
a[15] + 1
a[12] + 1
a[7] + a[11] + 1
========================== c'était la round #3 : 
a[4]
p[1] + a[15] + a[17]
a[14] + a[15]
a[0]
a[12]
a[6] + 1
p[2] + a[18] + 1
a[2] + 1
p[0] + a[15] + a[16]
a[13] + a[15] + 1
========================== c'était la round #4 : 
a[15]
a[10] + a[11]
a[2]
a[6] + a[8] + 1
p[2] + a[18]
a[3] + a[8] + 1
a[4] + a[8]
p[1] + a[17] + 1
a[12] + 1
a[14] + 1
a[9] + 1
a[7] + a[8] + 1
a[0] + a[1]
a[5] + a[8] + 1
========================== c'était la round #5 : 
a[14] + 1
a[13]
a[10] + a[12] + 1
a[1]
p[0] + a[16]
p[2] + a[18] + 1
a[3] + 1
a[5] + 1
a[6] + a[8] + 1
a[11] + a[12] + 1
a[9] + 1
a[7] + a[8]
========================== c'était la round #6 : 
========================== c'était la round #7 : 

real    0m28.336s
user    0m26.930s
sys     0m0.596s
charles@zblup:~/charles_work/prog/radiogatun$ 

charles@zblup:~/charles_work/prog/radiogatun$ ./generate_trail_equations.php | ./code_gen
// nombre d'inputs possibles à la round #i
const int round_inputs[8] = {2,2,2,2,1,2,2,8};
// pour la round #i, avec 0 <= k < round_inputs[i], génère la k-ième input
int generate_input(int i, int k, Mill a)
{
  int p0, p1, p2;
  switch (i) {
  case 0:
    p0 = a[16];
    p1 = getbit(k, 0);
    p2 = a[18];
    return 4*p2 + 2*p1 + p0;

  case 1:
    p0 = a[16] ^ a[15] ^ 1;
    p1 = a[17] ^ 1;
    p2 = getbit(k, 0);
    return 4*p2 + 2*p1 + p0;

  case 2:
    p0 = getbit(k, 0);
    p1 = p0 ^ a[17] ^ a[16];
    p2 = a[18] ^ 1;
    return 4*p2 + 2*p1 + p0;

  case 3:
    p0 = getbit(k, 0);
    p1 = p0 ^ a[17] ^ a[16];
    p2 = a[18] ^ 1;
    return 4*p2 + 2*p1 + p0;

  case 4:
    p0 = a[16] ^ a[15];
    p1 = a[17] ^ a[15];
    p2 = a[18] ^ 1;
    return 4*p2 + 2*p1 + p0;

  case 5:
    p0 = getbit(k, 0);
    p1 = a[17] ^ 1;
    p2 = a[18];
    return 4*p2 + 2*p1 + p0;

  case 6:
    p0 = a[16];
    p1 = getbit(k, 0);
    p2 = a[18] ^ 1;
    return 4*p2 + 2*p1 + p0;

  case 7:
    p0 = getbit(k, 0);
    p1 = getbit(k, 1);
    p2 = getbit(k, 2);
    return 4*p2 + 2*p1 + p0;

  default:
    return k;
  }
}


//****************************

bool check_belt_independent_state(int i, Mill a)
{
  switch (i) {

    case 0:
      return true;

    case 1:
      if ((a[8]) != 1) return false;
      if ((a[10]) != 0) return false;
      if ((a[12]) != 1) return false;
      if ((a[0]) != 0) return false;
      return true;

    case 2:
      if ((a[1]) != 1) return false;
      if ((a[6]) != 1) return false;
      if ((a[5] ^ a[3]) != 1) return false;
      if ((a[5] ^ a[4]) != 0) return false;
      if ((a[9]) != 0) return false;
      if ((a[5] ^ a[2]) != 1) return false;
      if ((a[7] ^ a[8]) != 1) return false;
      return true;

    case 3:
      if ((a[0]) != 1) return false;
      if ((a[10] ^ a[11]) != 1) return false;
      if ((a[2]) != 0) return false;
      if ((a[6]) != 1) return false;
      if ((a[11] ^ a[8]) != 0) return false;
      if ((a[3]) != 0) return false;
      if ((a[5] ^ a[4]) != 0) return false;
      if ((a[11] ^ a[9]) != 1) return false;
      if ((a[12]) != 1) return false;
      if ((a[11] ^ a[7]) != 1) return false;
      return true;

    case 4:
      if ((a[4]) != 0) return false;
      if ((a[0]) != 0) return false;
      if ((a[12]) != 0) return false;
      if ((a[6]) != 1) return false;
      if ((a[2]) != 1) return false;
      return true;

    case 5:
      if ((a[10] ^ a[11]) != 0) return false;
      if ((a[2]) != 0) return false;
      if ((a[6] ^ a[8]) != 1) return false;
      if ((a[8] ^ a[3]) != 1) return false;
      if ((a[4] ^ a[8]) != 0) return false;
      if ((a[12]) != 1) return false;
      if ((a[9]) != 1) return false;
      if ((a[7] ^ a[8]) != 1) return false;
      if ((a[0] ^ a[1]) != 0) return false;
      if ((a[5] ^ a[8]) != 1) return false;
      return true;

    case 6:
      if ((a[10] ^ a[12]) != 1) return false;
      if ((a[1]) != 0) return false;
      if ((a[3]) != 1) return false;
      if ((a[5]) != 1) return false;
      if ((a[6] ^ a[8]) != 1) return false;
      if ((a[11] ^ a[12]) != 1) return false;
      if ((a[9]) != 1) return false;
      if ((a[7] ^ a[8]) != 0) return false;
      return true;

    case 7:
      return true;
  default:
    return true;
  }
}