source: CIVL/examples/languageFeatures/sumExpressionBad.cvl

main
Last change on this file was bff6f38, checked in by Alex Wilton <awilton@…>, 3 months ago

Added syntax error when body of $sum passes initial type check but fails to be a NumericExpression when evaluated in SARL. Added two more $sum examples as junit tests.

git-svn-id: svn://vsl.cis.udel.edu/civl/trunk@6004 fb995dde-84ed-4084-dfe6-e5aef3e2452c

  • Property mode set to 100644
File size: 563 bytes
Line 
1typedef 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];
5T C[N1][N3];
6
7void 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
17int 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.