main
| Line | |
|---|
| 1 | typedef double T;
|
|---|
| 2 | $input int B1=6, B2=6, B3=6, N1, N2, N3;
|
|---|
| 3 | $assume(1<=N1 && N1<=B1 && 1<=N2 && N2<=B2 && 1<=N3 && N3<=B3);
|
|---|
| 4 | $input T A[N1][N2], B[N2][N3];
|
|---|
| 5 | T C[N1][N3];
|
|---|
| 6 |
|
|---|
| 7 | void mul(T a[][], T b[][], T c[][], int n1, int n2, int n3) {
|
|---|
| 8 | for (int i=0; i<n1; i++)
|
|---|
| 9 | for (int j=0; j<n3; j++) {
|
|---|
| 10 | T sum = (T)0;
|
|---|
| 11 | for (int k=0; k<n2; k++)
|
|---|
| 12 | sum += a[i][k]*b[k][j];
|
|---|
| 13 | c[i][j] = sum;
|
|---|
| 14 | }
|
|---|
| 15 | }
|
|---|
| 16 |
|
|---|
| 17 | int main(void) {
|
|---|
| 18 | mul(A, B, C, N1, N2, N3);
|
|---|
| 19 | $assert($forall(int i : 0 .. N1-1) $forall(int j : 0 .. N3-1) $sum(int k : 0..N2-1) A[i][k]*B[k][j] == C[i][j]);
|
|---|
| 20 | }
|
|---|
Note:
See
TracBrowser
for help on using the repository browser.