// ************************************************************************** // // // // 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 algorithm converts a given natural number zin to its Radix-B // // representation to base B provided that N digits are sufficient. // // ************************************************************************** // macro B = 4; macro N = 10; macro natval(x,m) = sum(i=0..m-1) (x[i] * exp(B,i)); module ToRadixB(nat ?zin,[N]nat{B} x,event !rdy) { nat z; nat{N+1} i; z = zin; i = 0; while(z!=0) { x[i] = z % B; next(z) = z / B; next(i) = i+1; pause; } emit(rdy); assert(zin == natval(x,N)); } drivenby { zin = 25; await(rdy); } drivenby { zin = 15; await(rdy); }