Optimize and work with dim=2

This commit is contained in:
PedroEdiaz
2024-11-27 00:20:51 -06:00
parent 805ff18e21
commit 8d1f54604e

View File

@@ -90,6 +90,7 @@ typedef void (*function_t)(float *, int *, int);
size = grid_size * grid_size * 6 * (*m); size = grid_size * grid_size * 6 * (*m);
d_surface = malloc((size + 1) * sizeof(float)); d_surface = malloc((size + 1) * sizeof(float));
d_surface[0] = size; d_surface[0] = size;
++d_surface;
for (i = 0; i < grid_size; i++) for (i = 0; i < grid_size; i++)
{ {
@@ -122,76 +123,66 @@ float *generate_data_surface(int grid_size, unsigned char *s)
long size; long size;
function_t f; function_t f;
float *d_surface; float *d_surface;
int dim = 2;
const int dim =2;
int cara[dim];
f = klein; f = klein;
*s = 4; *s = 4;
int cara[2]; size = grid_size * grid_size * 6 * (*s);
size = grid_size * grid_size * 2 * dim * (*s);
d_surface = malloc((size + 1) * sizeof(float)); d_surface = malloc((size + 1) * sizeof(float));
d_surface[0] = size; d_surface[0] = size;
for(o = 0; o < dim; o ++) for(o = 0; o < dim; o ++)
{ {
for (p = o + 1; p < dim; p++) for (p = 0; p < o; p++)
{ {
for (k = 0; k < (1 << o); k++) for (k = 0; k < (1 << (dim-2)); k++)
{ {
for(l = 0; l < (1 << p); l += (1 << (o + 1))) for(n = 0; n < dim; n ++)
{ {
for(m = 0; m < (1 << dim); m += (1 << (p + 1))) if( n==o || n== p )
continue;
cara[n] = (k & (1<<n))*grid_size;
}
for(i = 0; i < grid_size; i++)
{
for (j = 0; j < grid_size; j++)
{ {
for(n = 0; n < dim; n++) cara[o] = i;
{ cara[p] = j;
if(((k + l + m) & (1 << n)) == 0) f(&d_surface[q + 1], cara, grid_size);
{ q += *s;
if(n != o && n != p)
cara[n] = 0;
}
else
{
if(n != o && n != p)
cara[n] = 1;
}
for(i = 0; i < grid_size; i++) cara[o] = i + 1;
{ cara[p] = j;
cara[o] = i; f(&d_surface[q + 1], cara, grid_size);
for (j = 0; j < grid_size; j++) q += *s;
{
cara[p] = j;
f(&d_surface[q + 1], cara, grid_size); cara[o] = i + 1;
q += *s; cara [p] = j + 1;
cara[o] = i + 1; f(&d_surface[q + 1], cara, grid_size);
f(&d_surface[q + 1], cara, grid_size); q += *s;
q += *s;
cara[o] = i + 1;
cara [p] = j + 1;
f(&d_surface[q + 1], cara, grid_size);
q += *s;
cara[o] = i; cara[o] = i;
cara [p] = j; cara [p] = j;
f(&d_surface[q + 1], cara, grid_size); f(&d_surface[q + 1], cara, grid_size);
q += *s; q += *s;
cara [p] = j + 1;
f(&d_surface[q + 1], cara, grid_size);
q += *s;
cara[o] = i + 1;
cara [p] = j + 1;
f(&d_surface[q + 1], cara, grid_size);
q += *s;
}
}
} cara[o] = i;
cara [p] = j + 1;
f(&d_surface[q + 1], cara, grid_size);
q += *s;
cara[o] = i + 1;
cara [p] = j + 1;
f(&d_surface[q + 1], cara, grid_size);
q += *s;
} }
} }
} }
} }
} }