// ************************************************************************** // // // // eses eses // // eses eses // // eses eseses esesese eses Embedded Systems Group // // ese ese ese ese ese // // ese eseseses eseseses ese Department of Computer Science // // eses eses ese eses // // eses eseses eseseses eses University of Kaiserslautern // // eses eses // // // // ************************************************************************** // // The algorithm below solves a linear equation system given as a NxM matrix // // a in that it applies the Gauss Jordan algorithm. // // ************************************************************************** // macro N = 3; macro M = 4; module LinearEquGaussJordan([N][M]real ?a,b,event !rdy) { // store input matrix a in matrix b for(i=0..N-1) for(j=0..M-1) b[i][j] = a[i][j]; // perform Gaussian-Jordan algorithm for(k=0..N-1) { for(i=0..N-1) { let(lambda = b[i][k]/b[k][k]) { for(j=0..M-1) if(i==k) next(b[i][j]) = b[i][j]/b[k][k]; else next(b[i][j]) = b[i][j] - lambda * b[k][j]; } } pause; } emit(rdy); } drivenby { a[0][0] = 1.0; a[0][1] = 1.0; a[0][2] = 1.0; a[0][3] = 0.0; a[1][0] = 4.0; a[1][1] = 2.0; a[1][2] = 1.0; a[1][3] = 1.0; a[2][0] = 9.0; a[2][1] = 3.0; a[2][2] = 1.0; a[2][3] = 3.0; await(rdy); }