Optimize and work with dim=2
This commit is contained in:
@@ -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,52 +123,44 @@ 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;
|
||||||
for(n = 0; n < dim; n++)
|
|
||||||
{
|
cara[n] = (k & (1<<n))*grid_size;
|
||||||
if(((k + l + m) & (1 << n)) == 0)
|
|
||||||
{
|
|
||||||
if(n != o && n != p)
|
|
||||||
cara[n] = 0;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if(n != o && n != p)
|
|
||||||
cara[n] = 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for(i = 0; i < grid_size; i++)
|
for(i = 0; i < grid_size; i++)
|
||||||
{
|
{
|
||||||
cara[o] = i;
|
|
||||||
for (j = 0; j < grid_size; j++)
|
for (j = 0; j < grid_size; j++)
|
||||||
{
|
{
|
||||||
|
cara[o] = i;
|
||||||
cara[p] = j;
|
cara[p] = j;
|
||||||
|
f(&d_surface[q + 1], cara, grid_size);
|
||||||
|
q += *s;
|
||||||
|
|
||||||
f(&d_surface[q + 1], cara, grid_size);
|
|
||||||
q += *s;
|
|
||||||
cara[o] = i + 1;
|
cara[o] = i + 1;
|
||||||
|
cara[p] = j;
|
||||||
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[o] = i + 1;
|
||||||
cara [p] = j + 1;
|
cara [p] = j + 1;
|
||||||
f(&d_surface[q + 1], cara, grid_size);
|
f(&d_surface[q + 1], cara, grid_size);
|
||||||
@@ -177,20 +170,18 @@ float *generate_data_surface(int grid_size, unsigned char *s)
|
|||||||
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[o] = i;
|
||||||
cara [p] = j + 1;
|
cara [p] = j + 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[o] = i + 1;
|
||||||
cara [p] = j + 1;
|
cara [p] = j + 1;
|
||||||
f(&d_surface[q + 1], cara, grid_size);
|
f(&d_surface[q + 1], cara, grid_size);
|
||||||
q += *s;
|
q += *s;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user