update barvinok to version 0.41.7
[ppn.git] / tests / inputs / lsod.c
blobf73e605508c7daa56b668e627683a88aa74032d2
1 #define TARGETS 3
3 void getLSODTarget(int t, int *Height, int *Width,
4 int *offset_x, int *offset_y);
5 int readTarget(int k, int w, int h, int x, int y);
6 int gradient(int a1, int a2, int a3, int a4, int a5, int a6);
7 int absVal(int x);
8 int vertSum(int in_1, int in_2);
9 void writeHist(int k, int w, int pp);
10 int init(void);
12 int main(void)
14 int offset_x,offset_y;
16 static int image[1000][1000];
17 static int vertEdges[1000][1000];
18 static int av[1000][1000];
19 static int vsum[1000];
20 static int TH[TARGETS];
21 static int TW[TARGETS];
22 #pragma value_bounds TH 10 300
23 #pragma value_bounds TW 10 350
26 for (int k = 0; k < TARGETS; k++) {
27 getLSODTarget(k, &TH[k], &TW[k], &offset_x, &offset_y);
29 for (int j = 0; j < TH[k]; j++)
30 for (int i = 0; i < TW[k]; i++)
31 image[j][i] = readTarget(k, i, j, offset_x, offset_y);
33 for (int i = 0; i < TW[k]; i++)
34 vsum[i] = init();
36 for (int j = 1; j < TH[k] - 1; j++) {
37 for (int i = 1; i < TW[k] - 1; i++) {
38 vertEdges[j][i] = gradient(image[j-1][i-1], image[j][i-1],
39 image[j+1][i-1], image[j-1][i+1],
40 image[j][i+1], image[j+1][i+1]);
41 av[j][i] = absVal(vertEdges[j][i]);
42 vsum[i] = vertSum(vsum[i], av[j][i]);
46 for (int i = 1; i < TW[k] - 1; i++)
47 writeHist(k, TW[k], vsum[i]);
50 return 0;