Skip to content
Snippets Groups Projects
Commit 2a829ec8 authored by Julia Sauvage's avatar Julia Sauvage
Browse files

modifs julia

parent 0dfbd6cb
No related branches found
No related tags found
No related merge requests found
......@@ -6,6 +6,7 @@ known_low = 11
a = 2549297995355413924 * 2^64 + 4865540595714422341
nboutput = 30
def sortiesGenerateur():#OK !
c = (r.randint(0, 2**(2 * k)) * 2 + 1) % 2**(2 * k) #c est impair
S=[r.randint(0,2**(k * 2))]
......
......@@ -53,8 +53,10 @@ char * setupGoodY()
return goodY;
}
static inline void setbit(char *goodY, int idx, int v)
static inline void setbit(char *goodY, int i, unsigned long long Y, int v)
{
// Y &= (1 << (known_up + known_low - 1));
int idx = Y + i * (1 << (known_up + known_low));
// idx = idx / 4;
int j = idx / 8;
int l = idx % 8;
......@@ -72,8 +74,8 @@ void getGoodY(char* goodY, unsigned long long* tabX, unsigned long long* lowSumP
unsigned long long Xij = tabX[i*k + j]; //unrotate(X[i], j);
unsigned long long goodYi1 = (((Xij % (1 << known_low)) ^ Wi) << known_up) ^ (j ^ (Xij >> (k - known_up)));
unsigned long long goodYi2 = (goodYi1 - 1) % (1 << (known_low + known_up));
setbit(goodY, goodYi1 + i * (1<<(known_low + known_up)), v);
setbit(goodY, goodYi2 + i * (1<<(known_low + known_up)), v);
setbit(goodY, i, goodYi1, v);
setbit(goodY, i, goodYi2, v);
}
}
}
......@@ -93,6 +95,7 @@ void getTabTmp(unsigned long long* tabTmp, unsigned long long* X, unsigned long
static inline int checkY(const char* goodY, int i, unsigned long long Y)
{
// Y = Y(1 << (known_up + known_low - 1));
int idx = Y + i * (1 << (known_up + known_low));
// idx = idx / 4;
int j = idx / 8;
......@@ -103,7 +106,13 @@ static inline int checkY(const char* goodY, int i, unsigned long long Y)
static inline int confirm(unsigned long long Y0, unsigned long long DS640, const unsigned long long* sumPolTest, const char* goodY)
{
/**** Confirmation du DS640 ****/
for (int i = 0 ; i < nbtest ; i++) {
unsigned long long tmp2 = ((unsigned long long) polA[nbiter]) * DS640 + sumPolTest[0]; //ATTENTION cast pcg128_t
unsigned long long Yi1 = (Y0 + (tmp2 >> (k - known_low - known_up))) % (1 << (known_low + known_up)); //avec ou sans retenue OK!
if (!(checkY(goodY, 0, Yi1)))
return 0;
for (int i = 1 ; i < nbtest ; i++) {
unsigned long long tmp2 = ((unsigned long long) polA[i + nbiter]) * DS640 + sumPolTest[i]; //ATTENTION cast pcg128_t
unsigned long long Yi1 = (Y0 + (tmp2 >> (k - known_low - known_up))) % (1 << (known_low + known_up)); //avec ou sans retenue OK!
if (!(checkY(goodY, i, Yi1))) {
......
......@@ -9,7 +9,7 @@
/***** Macro et Variables globales *****/
#define k 64
#define known_up 6
#define known_low 13
#define known_low 11 //à relancer 3 fois, sur des X differents (X0 - X4 ,X5 - X9,...) puis lancé avec 12 et enfin 13
#define nbiter 5
#define nboutput 31
#define nbtest 3
......
......@@ -16,6 +16,8 @@ int main(){
pcg128_t vraiS[nboutput];
unsigned long long X[nboutput];
FILE *f = fopen("results", "w");
//printVal(S0, c);
pcg(vraiS, X, S0, &c, nboutput);
......@@ -69,6 +71,7 @@ int main(){
}
if (solve_isgood(goodY, rot, tabTmp, sumPolY, sumPolTest)) {
fprintf(f)
solve(&DS640, &Y0, goodY, rot, tabTmp, sumPolY, sumPolTest);
printf("candidat DS64 trouvé !!\n");
printf("%llu\n", DS640);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment