main
| Rev | Line | |
|---|
| [869af89] | 1 | #include <stdio.h>
|
|---|
| 2 |
|
|---|
| 3 | $input int x, y, z, w;
|
|---|
| 4 | $input int N, M, L, K;
|
|---|
| 5 | $input int offset;
|
|---|
| 6 |
|
|---|
| [3ff27cf] | 7 | $assume(0< N && N <= 2);
|
|---|
| 8 | $assume(0< M && M <= 2);
|
|---|
| 9 | $assume(0< L && L <= 2);
|
|---|
| 10 | $assume(0< K && K <= 2);
|
|---|
| 11 | $assume(0 <= x && x < N);
|
|---|
| 12 | $assume(0 <= y && y < M);
|
|---|
| 13 | $assume(0 <= z && z < L);
|
|---|
| 14 | $assume(0 <= w && w < K);
|
|---|
| 15 | $assume(0 <= offset );
|
|---|
| 16 | $assume((offset + x*M*L*K + y*L*K + z*K + w) < M*N*L*K);
|
|---|
| [869af89] | 17 |
|
|---|
| 18 | void main(){
|
|---|
| 19 |
|
|---|
| 20 | int realIndex, finalIndex, X, Y, Z, W;
|
|---|
| 21 |
|
|---|
| 22 | realIndex = x * M * L * K + y * L * K + z * K + w;
|
|---|
| 23 | finalIndex = realIndex + offset;
|
|---|
| 24 | X = finalIndex / (M * L * K);
|
|---|
| 25 | finalIndex = finalIndex - X * M * L * K;
|
|---|
| 26 | Y = finalIndex / (L * K);
|
|---|
| 27 | finalIndex = finalIndex - Y * L * K;
|
|---|
| 28 | Z = finalIndex / K;
|
|---|
| 29 | W = finalIndex - Z * K;
|
|---|
| 30 |
|
|---|
| 31 | printf("X=%d, Y=%d, Z=%d, W=%d\n", X,Y,Z,W);
|
|---|
| [3ff27cf] | 32 | $assert(X < N);
|
|---|
| 33 | $assert(Y < M);
|
|---|
| 34 | $assert(Z < L);
|
|---|
| 35 | $assert(W < K);
|
|---|
| [869af89] | 36 | }
|
|---|
Note:
See
TracBrowser
for help on using the repository browser.