// ************************************************************************** // // // // 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 following module multiplies two given polynomials. Note that the Quartz// // compiler generates a balanced binary tree of generic sums, so that the // // module below has depth O(log(M)) using O(M*(M+N-2)) processors. // // ************************************************************************** // macro M = 4; macro N = 4; macro min(x,y) = (x<y ? x : y); module MultPolynomial([M]int ?a,[N]int ?b,[M+N-1]int c) { for(k=0..M+N-2) c[k] = sum(j=0..min(k,M-1)) (k-j<N ? a[j]*b[k-j] : 0); } drivenby { for(i=0..M-1) a[i] = i+1; for(i=0..N-1) b[i] = i+1; } drivenby { a = [9,-10,7,6]; // 6 x^3 + 7 x^2 - 10 x + 9 b = [-5,4,0,-2]; // -5 x^3 + 4 x^2 - 2 }